StatsConditionBaseInteraction class

Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.none

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/none/StatsConditionBaseInteraction.java

extends: SimpleInstantInteraction

Поля (2)

МодификаторыТипИмя
Ref var4
CommandBuffer var5

Методы (2)

МодификаторыВозвратСигнатура
abstract abstract boolean canAffordboolean canAfford(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2)
protected boolean canOverdrawboolean canOverdraw(float var1, float var2)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.none;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.Object2FloatMapCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.ValueType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2FloatMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2FloatMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class StatsConditionBaseInteraction class="kw">extends SimpleInstantInteraction {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<StatsConditionBaseInteraction> CODEC = BuilderCodec.abstractBuilder(
         StatsConditionBaseInteraction.class, SimpleInstantInteraction.CODEC
      )
      .appendInherited(
         new KeyedCodec<>("Costs", new Object2FloatMapCodec<>(Codec.STRING, Object2FloatOpenHashMap::new)),
         (var0, var1) -> var0.rawCosts = var1,
         var0 -> var0.rawCosts,
         (var0, var1) -> var0.rawCosts = var1.rawCosts
      )
      .addValidator(Validators.nonNull())
      .addValidator(EntityStatType.VALIDATOR_CACHE.getMapKeyValidator())
      .add()
      .appendInherited(
         new KeyedCodec<>("LessThan", Codec.BOOLEAN),
         (var0, var1) -> var0.lessThan = var1,
         var0 -> var0.lessThan,
         (var0, var1) -> var0.lessThan = var1.lessThan
      )
      .add()
      .<Boolean>appendInherited(
         new KeyedCodec<>("Lenient", Codec.BOOLEAN), (var0, var1) -> var0.lenient = var1, var0 -> var0.lenient, (var0, var1) -> var0.lenient = var1.lenient
      )
      .documentation("Specifies that the interaction can run even if the stat cost is not met, providing that the value is greater than zero.")
      .add()
      .<ValueType>appendInherited(
         new KeyedCodec<>("ValueType", new EnumCodec<>(ValueType.class)),
         (var0, var1) -> var0.valueType = var1,
         var0 -> var0.valueType,
         (var0, var1) -> var0.valueType = var1.valueType
      )
      .documentation(
         "Enum to specify if the Costs must be considered as absolute values or percent. Default value is Absolute. When using ValueType.Absolute, '100' matches the max value."
      )
      .add()
      .afterDecode(var0 -> var0.costs = EntityStatsModule.resolveEntityStats(var0.rawCosts))
      .build();
   class="kw">protected Object2FloatMap<String> rawCosts;
   @Nullable
   class="kw">protected Int2FloatMap costs;
   class="kw">protected boolean lessThan;
   class="kw">protected boolean lenient;
   class="kw">protected ValueType valueType = ValueType.Absolute;

   class="kw">public StatsConditionBaseInteraction() {
   }

   @Override
   class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
      Ref var4 = var2.getEntity();
      CommandBuffer var5 = var2.getCommandBuffer();
      if (!this.canAfford(var4, var5)) {
         var2.getState().state = InteractionState.Failed;
      }
   }

   class="kw">protected class="kw">abstract boolean canAfford(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2);

   class="kw">protected boolean canOverdraw(float var1, float var2) {
      class="kw">return this.lenient && var1 > 0.0F && var2 < 0.0F;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "StatsConditionBaseInteraction{rawCosts="
         + this.rawCosts
         + ", costs="
         + this.costs
         + ", lessThan="
         + this.lessThan
         + ", lenient="
         + this.lenient
         + ", valueType="
         + this.valueType
         + "}"
         + super.toString();
   }
}