EntityStatEffects class

Пакет: com.hypixel.hytale.server.core.modules.entitystats.asset

Файл: com/hypixel/hytale/server/core/modules/entitystats/asset/EntityStatType.java

implements: NetworkSerializable<com.hypixel.hytale.protocol.EntityStatEffects>

Поля (7)

МодификаторыТипИмя
public static final BuilderCodec<EntityStatType.EntityStatEffects> CODEC
private String interactions
private ModelParticle[] particles
private String soundEventId
private int soundEventIndex
private boolean triggerAtZero
com.hypixel.hytale.protocol.EntityStatEffects var1

Методы (11)

МодификаторыВозвратСигнатура
for for(int var2 = 0; var2 < this.particles.length; var2++)
public String getInteractionspublic String getInteractions()
public ModelParticle[] getParticlespublic ModelParticle[] getParticles()
public String getSoundEventIdpublic String getSoundEventId()
public int getSoundEventIndexpublic int getSoundEventIndex()
if if(var1 != null)
if if(var1 != null)
if if(this.particles != null && this.particles.length > 0)
public com.hypixel.hytale.protocol.EntityStatEffects toPacketpublic com.hypixel.hytale.protocol.EntityStatEffects toPacket()
public String toStringpublic String toString()
public boolean triggerAtZeropublic boolean triggerAtZero()

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetKeyValidator;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
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.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.ValidatorCache;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.protocol.EntityStatResetBehavior;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelParticle;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import com.hypixel.hytale.server.core.modules.entity.condition.Condition;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.modifier.RegeneratingModifier;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import java.lang.ref.SoftReference;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class EntityStatType
   class="kw">implements JsonAssetWithMap<String, IndexedLookupTableAssetMap<String, EntityStatType>>,
   NetworkSerializable<com.hypixel.hytale.protocol.EntityStatType> {
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, EntityStatType> CODEC = AssetBuilderCodec.builder(
         EntityStatType.class,
         EntityStatType::new,
         Codec.STRING,
         (var0, var1) -> var0.id = var1,
         var0 -> var0.id,
         (var0, var1) -> var0.data = var1,
         var0 -> var0.data
      )
      .appendInherited(
         new KeyedCodec<>("InitialValue", Codec.FLOAT),
         (var0, var1) -> var0.initialValue = var1,
         var0 -> var0.initialValue,
         (var0, var1) -> var0.initialValue = var1.initialValue
      )
      .addValidator(Validators.nonNull())
      .add()
      .<Float>appendInherited(new KeyedCodec<>("Min", Codec.FLOAT), (var0, var1) -> var0.min = var1, var0 -> var0.min, (var0, var1) -> var0.min = var1.min)
      .addValidator(Validators.nonNull())
      .add()
      .<Float>appendInherited(new KeyedCodec<>("Max", Codec.FLOAT), (var0, var1) -> var0.max = var1, var0 -> var0.max, (var0, var1) -> var0.max = var1.max)
      .addValidator(Validators.nonNull())
      .add()
      .appendInherited(
         new KeyedCodec<>("Shared", Codec.BOOLEAN), (var0, var1) -> var0.shared = var1, var0 -> var0.shared, (var0, var1) -> var0.shared = var1.shared
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("Regenerating", new ArrayCodec<>(EntityStatType.Regenerating.CODEC, EntityStatType.Regenerating[]::new)),
         (var0, var1) -> var0.regenerating = var1,
         var0 -> var0.regenerating,
         (var0, var1) -> var0.regenerating = var1.regenerating
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("MinValueEffects", EntityStatType.EntityStatEffects.CODEC),
         (var0, var1) -> var0.minValueEffects = var1,
         var0 -> var0.minValueEffects,
         (var0, var1) -> var0.minValueEffects = var1.minValueEffects
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("MaxValueEffects", EntityStatType.EntityStatEffects.CODEC),
         (var0, var1) -> var0.maxValueEffects = var1,
         var0 -> var0.maxValueEffects,
         (var0, var1) -> var0.maxValueEffects = var1.maxValueEffects
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("ResetType", new EnumCodec<>(EntityStatResetBehavior.class)),
         (var0, var1) -> var0.resetBehavior = var1,
         var0 -> var0.resetBehavior,
         (var0, var1) -> var0.resetBehavior = var1.resetBehavior
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("IgnoreInvulnerability", Codec.BOOLEAN),
         (var0, var1) -> var0.ignoreInvulnerability = var1,
         var0 -> var0.ignoreInvulnerability,
         (var0, var1) -> var0.ignoreInvulnerability = var1.ignoreInvulnerability
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("HideFromTooltip", Codec.BOOLEAN),
         (var0, var1) -> var0.hideFromTooltip = var1,
         var0 -> var0.hideFromTooltip,
         (var0, var1) -> var0.hideFromTooltip = var1.hideFromTooltip
      )
      .add()
      .build();
   class="kw">public class="kw">static class="kw">final ValidatorCache<String> VALIDATOR_CACHE = new ValidatorCache<>(new AssetKeyValidator<>(EntityStatType::getAssetStore));
   class="kw">private class="kw">static AssetStore<String, EntityStatType, IndexedLookupTableAssetMap<String, EntityStatType>> ASSET_STORE;
   class="kw">public class="kw">static class="kw">final EntityStatType UNKNOWN = getUnknownFor("Unknown");
   class="kw">public class="kw">static class="kw">final int UNKNOWN_ID = 0;
   class="kw">protected String id;
   class="kw">protected AssetExtraInfo.Data data;
   class="kw">protected boolean unknown;
   class="kw">protected float initialValue;
   class="kw">protected float min;
   class="kw">protected float max;
   class="kw">protected boolean shared = false;
   @Nullable
   class="kw">protected EntityStatType.Regenerating[] regenerating;
   class="kw">protected boolean ignoreInvulnerability;
   class="kw">protected boolean hideFromTooltip;
   class="kw">protected EntityStatType.EntityStatEffects minValueEffects;
   class="kw">protected EntityStatType.EntityStatEffects maxValueEffects;
   class="kw">protected EntityStatResetBehavior resetBehavior = EntityStatResetBehavior.InitialValue;
   class="kw">private class="kw">transient SoftReference<com.hypixel.hytale.protocol.EntityStatType> cachedPacket;

   class="kw">public class="kw">static AssetStore<String, EntityStatType, IndexedLookupTableAssetMap<String, EntityStatType>> getAssetStore() {
      if (ASSET_STORE == null) {
         ASSET_STORE = AssetRegistry.getAssetStore(EntityStatType.class);
      }

      class="kw">return ASSET_STORE;
   }

   class="kw">public class="kw">static IndexedLookupTableAssetMap<String, EntityStatType> getAssetMap() {
      class="kw">return (IndexedLookupTableAssetMap<String, EntityStatType>)getAssetStore().getAssetMap();
   }

   class="kw">protected EntityStatType() {
   }

   class="kw">public EntityStatType(
      String var1,
      int var2,
      int var3,
      int var4,
      boolean var5,
      @Nullable EntityStatType.Regenerating[] var6,
      EntityStatType.EntityStatEffects var7,
      EntityStatType.EntityStatEffects var8,
      EntityStatResetBehavior var9
   ) {
      this.id = var1;
      this.initialValue = var2;
      this.min = var3;
      this.max = var4;
      this.shared = var5;
      this.regenerating = var6;
      this.minValueEffects = var7;
      this.maxValueEffects = var8;
      this.resetBehavior = var9;
   }

   class="kw">public String getId() {
      class="kw">return this.id;
   }

   class="kw">public boolean isUnknown() {
      class="kw">return this.unknown;
   }

   class="kw">public float getInitialValue() {
      class="kw">return this.initialValue;
   }

   class="kw">public float getMin() {
      class="kw">return this.min;
   }

   class="kw">public float getMax() {
      class="kw">return this.max;
   }

   class="kw">public boolean getIgnoreInvulnerability() {
      class="kw">return this.ignoreInvulnerability;
   }

   class="kw">public boolean isShared() {
      class="kw">return this.shared;
   }

   class="kw">public EntityStatType.EntityStatEffects getMinValueEffects() {
      class="kw">return this.minValueEffects;
   }

   class="kw">public EntityStatType.EntityStatEffects getMaxValueEffects() {
      class="kw">return this.maxValueEffects;
   }

   @Nullable
   class="kw">public EntityStatType.Regenerating[] getRegenerating() {
      class="kw">return this.regenerating;
   }

   class="kw">public EntityStatResetBehavior getResetBehavior() {
      class="kw">return this.resetBehavior;
   }

   @Nonnull
   class="kw">public com.hypixel.hytale.protocol.EntityStatType toPacket() {
      com.hypixel.hytale.protocol.EntityStatType var1 = this.cachedPacket == null ? null : this.cachedPacket.get();
      if (var1 != null) {
         class="kw">return var1;
      }

      com.hypixel.hytale.protocol.EntityStatType var2 = new com.hypixel.hytale.protocol.EntityStatType();
      var2.id = this.id;
      var2.value = this.initialValue;
      var2.min = this.min;
      var2.max = this.max;
      if (this.minValueEffects != null) {
         var2.minValueEffects = this.minValueEffects.toPacket();
      }

      if (this.maxValueEffects != null) {
         var2.maxValueEffects = this.maxValueEffects.toPacket();
      }

      var2.resetBehavior = this.resetBehavior;
      var2.hideFromTooltip = this.hideFromTooltip;
      this.cachedPacket = new SoftReference<>(var2);
      class="kw">return var2;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "EntityStatType{id='"
         + this.id
         + "', data="
         + this.data
         + ", unknown="
         + this.unknown
         + ", initialValue="
         + this.initialValue
         + ", min="
         + this.min
         + ", max="
         + this.max
         + ", shared="
         + this.shared
         + ", regenerating="
         + Arrays.toString(this.regenerating)
         + ", minValueEffects="
         + this.minValueEffects
         + ", maxValueEffects="
         + this.maxValueEffects
         + ", resetBehavior="
         + this.resetBehavior
         + ", ignoreInvulnerability="
         + this.ignoreInvulnerability
         + ", hideFromTooltip="
         + this.hideFromTooltip
         + "}";
   }

   @Nonnull
   class="kw">public class="kw">static EntityStatType getUnknownFor(class="kw">final String var0) {
      class="kw">return new EntityStatType() {
         {
            this.id = var0;
            this.unknown = true;
         }
      };
   }

   class="kw">public class="kw">static class EntityStatEffects class="kw">implements NetworkSerializable<com.hypixel.hytale.protocol.EntityStatEffects> {
      class="kw">public class="kw">static class="kw">final BuilderCodec<EntityStatType.EntityStatEffects> CODEC = BuilderCodec.builder(
            EntityStatType.EntityStatEffects.class, EntityStatType.EntityStatEffects::new
         )
         .append(new KeyedCodec<>("TriggerAtZero", Codec.BOOLEAN), (var0, var1) -> var0.triggerAtZero = var1, var0 -> var0.triggerAtZero)
         .documentation("Indicates that the effects should trigger when the stat reaches zero")
         .add()
         .<String>append(new KeyedCodec<>("SoundEventId", Codec.STRING), (var0, var1) -> var0.soundEventId = var1, var0 -> var0.soundEventId)
         .addValidator(SoundEvent.VALIDATOR_CACHE.getValidator())
         .add()
         .append(new KeyedCodec<>("Particles", ModelParticle.ARRAY_CODEC), (var0, var1) -> var0.particles = var1, var0 -> var0.particles)
         .add()
         .<String>append(
            new KeyedCodec<>("Interactions", RootInteraction.CHILD_ASSET_CODEC), (var0, var1) -> var0.interactions = var1, var0 -> var0.interactions
         )
         .addValidatorLate(() -> RootInteraction.VALIDATOR_CACHE.getValidator().late())
         .add()
         .afterDecode(var0 -> {
            String var1 = var0.soundEventId;
            if (var1 != null) {
               var0.soundEventIndex = SoundEvent.getAssetMap().getIndex(var1);
            }
         })
         .build();
      class="kw">private boolean triggerAtZero;
      @Nullable
      class="kw">private String soundEventId;
      class="kw">private int soundEventIndex;
      class="kw">private ModelParticle[] particles;
      class="kw">private String interactions;

      class="kw">public EntityStatEffects(@Nullable String var1, ModelParticle[] var2, String var3) {
         this.soundEventId = var1;
         if (var1 != null) {
            this.soundEventIndex = SoundEvent.getAssetMap().getIndex(var1);
         }

         this.particles = var2;
         this.interactions = var3;
      }

      class="kw">protected EntityStatEffects() {
      }

      @Nullable
      class="kw">public String getSoundEventId() {
         class="kw">return this.soundEventId;
      }

      class="kw">public int getSoundEventIndex() {
         class="kw">return this.soundEventIndex;
      }

      class="kw">public ModelParticle[] getParticles() {
         class="kw">return this.particles;
      }

      class="kw">public String getInteractions() {
         class="kw">return this.interactions;
      }

      class="kw">public boolean triggerAtZero() {
         class="kw">return this.triggerAtZero;
      }

      @Nonnull
      class="kw">public com.hypixel.hytale.protocol.EntityStatEffects toPacket() {
         com.hypixel.hytale.protocol.EntityStatEffects var1 = new com.hypixel.hytale.protocol.EntityStatEffects();
         var1.soundEventIndex = this.soundEventIndex;
         var1.triggerAtZero = this.triggerAtZero;
         if (this.particles != null && this.particles.length > 0) {
            var1.particles = new com.hypixel.hytale.protocol.ModelParticle[this.particles.length];

            for (int var2 = 0; var2 < this.particles.length; var2++) {
               var1.particles[var2] = this.particles[var2].toPacket();
            }
         }

         class="kw">return var1;
      }

      @Nonnull
      @Override
      class="kw">public String toString() {
         class="kw">return "EntityStatEffects{soundEventId='"
            + this.soundEventId
            + "', particles="
            + Arrays.toString(this.particles)
            + ", interactions="
            + this.interactions
            + "}";
      }
   }

   class="kw">public class="kw">static class Regenerating {
      class="kw">public class="kw">static class="kw">final BuilderCodec<EntityStatType.Regenerating> CODEC = BuilderCodec.<EntityStatType.Regenerating>builder(
            EntityStatType.Regenerating.class, EntityStatType.Regenerating::new
         )
         .addField(new KeyedCodec<>("Interval", Codec.FLOAT), (var0, var1) -> var0.interval = var1, var0 -> var0.interval)
         .addField(new KeyedCodec<>("Amount", Codec.FLOAT), (var0, var1) -> var0.amount = var1, var0 -> var0.amount)
         .<Boolean>append(new KeyedCodec<>("ClampAtZero", Codec.BOOLEAN), (var0, var1) -> var0.clampAtZero = var1, var0 -> var0.clampAtZero)
         .documentation("Prevents this regenerating value from taking the stat value below zero.")
         .add()
         .addField(
            new KeyedCodec<>("RegenType", new EnumCodec<>(EntityStatType.Regenerating.RegenType.class)),
            (var0, var1) -> var0.regenType = var1,
            var0 -> var0.regenType
         )
         .addField(
            new KeyedCodec<>("Conditions", new ArrayCodec<>(Condition.CODEC, Condition[]::new)),
            (var0, var1) -> var0.conditions = var1,
            var0 -> var0.conditions
         )
         .addField(
            new KeyedCodec<>("Modifiers", new ArrayCodec<>(RegeneratingModifier.CODEC, RegeneratingModifier[]::new)),
            (var0, var1) -> var0.modifiers = var1,
            var0 -> var0.modifiers
         )
         .build();
      class="kw">private float interval;
      class="kw">private float amount;
      class="kw">private boolean clampAtZero;
      class="kw">private EntityStatType.Regenerating.RegenType regenType;
      @Nullable
      class="kw">private Condition[] conditions;
      class="kw">private RegeneratingModifier[] modifiers;

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

      class="kw">public Regenerating(long var1, float var3, EntityStatType.Regenerating.RegenType var4, @Nullable Condition[] var5, RegeneratingModifier[] var6) {
         this.interval = (float)var1;
         this.amount = var3;
         this.regenType = var4;
         this.conditions = var5;
         this.modifiers = var6;
      }

      class="kw">public float getInterval() {
         class="kw">return this.interval;
      }

      class="kw">public float getAmount() {
         class="kw">return this.amount;
      }

      class="kw">public float clampAmount(float var1, float var2, @Nonnull EntityStatValue var3) {
         if (this.clampAtZero && !(var1 > 0.0F)) {
            if (var3.getMin() >= 0.0F) {
               class="kw">return var1;
            }

            float var4 = var3.get() + var2 + var1;
            class="kw">return var4 >= 0.0F ? var1 : Math.min(0.0F, var1 - var4);
         } else {
            class="kw">return var1;
         }
      }

      class="kw">public EntityStatType.Regenerating.RegenType getRegenType() {
         class="kw">return this.regenType;
      }

      @Nullable
      class="kw">public Condition[] getConditions() {
         class="kw">return this.conditions;
      }

      class="kw">public RegeneratingModifier[] getModifiers() {
         class="kw">return this.modifiers;
      }

      @Nonnull
      @Override
      class="kw">public String toString() {
         class="kw">return "Regenerating{interval="
            + this.interval
            + ", amount="
            + this.amount
            + ", regenType="
            + this.regenType
            + ", conditions="
            + Arrays.toString(this.conditions)
            + ", modifiers="
            + Arrays.toString(this.modifiers)
            + "}";
      }

      class="kw">public enum RegenType {
         ADDITIVE,
         PERCENTAGE;

         RegenType() {
         }
      }
   }
}