EntityStatType class

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

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

implements: JsonAssetWithMap<String, IndexedLookupTableAssetMap<String, EntityStatType>>, NetworkSerializable<com.hypixel.hytale.protocol.EntityStatType>

Поля (20)

МодификаторыТипИмя
ASSET_STORE
final AssetBuilderCodec<String, EntityStatType> CODEC
public static final BuilderCodec<EntityStatType.EntityStatEffects> CODEC
public static final BuilderCodec<EntityStatType.Regenerating> CODEC
ADDITIVE, PERCENTAGE
private float amount
private boolean clampAtZero
private Condition[] conditions
private String interactions
private float interval
private RegeneratingModifier[] modifiers
private ModelParticle[] particles
private EntityStatType.Regenerating.RegenType regenType
private String soundEventId
private int soundEventIndex
private boolean triggerAtZero
com.hypixel.hytale.protocol.EntityStatType var1
com.hypixel.hytale.protocol.EntityStatEffects var1
com.hypixel.hytale.protocol.EntityStatType var2
float var4

Методы (39)

МодификаторыВозвратСигнатура
public EntityStatEffectspublic EntityStatEffects(@Nullable String var1, ModelParticle[] var2, String var3)
protected EntityStatEffectsprotected EntityStatEffects()
RegenType RegenType()
public Regeneratingpublic Regenerating()
public Regeneratingpublic Regenerating(long var1, float var3, EntityStatType.Regenerating.RegenType var4, @Nullable Condition[] var5, RegeneratingModifier[] var6)
public float clampAmountpublic float clampAmount(float var1, float var2, @Nonnull EntityStatValue var3)
for for(int var2 = 0; var2 < this.particles.length; var2++)
public float getAmountpublic float getAmount()
static IndexedLookupTableAssetMap<String, EntityStatType> getAssetMapIndexedLookupTableAssetMap<String, EntityStatType> getAssetMap()
static AssetStore<String, EntityStatType, IndexedLookupTableAssetMap<String, EntityStatType>> getAssetStoreAssetStore<String, EntityStatType, IndexedLookupTableAssetMap<String, EntityStatType>> getAssetStore()
public Condition[] getConditionspublic Condition[] getConditions()
public String getIdString getId()
public boolean getIgnoreInvulnerabilityboolean getIgnoreInvulnerability()
public float getInitialValuefloat getInitialValue()
public String getInteractionspublic String getInteractions()
public float getIntervalpublic float getInterval()
public float getMaxfloat getMax()
public EntityStatType.EntityStatEffects getMaxValueEffectsEntityStatType.EntityStatEffects getMaxValueEffects()
public float getMinfloat getMin()
public EntityStatType.EntityStatEffects getMinValueEffectsEntityStatType.EntityStatEffects getMinValueEffects()
public RegeneratingModifier[] getModifierspublic RegeneratingModifier[] getModifiers()
public ModelParticle[] getParticlespublic ModelParticle[] getParticles()
public EntityStatType.Regenerating.RegenType getRegenTypepublic EntityStatType.Regenerating.RegenType getRegenType()
public EntityStatResetBehavior getResetBehaviorEntityStatResetBehavior getResetBehavior()
public String getSoundEventIdpublic String getSoundEventId()
public int getSoundEventIndexpublic int getSoundEventIndex()
if if(ASSET_STORE == null)
if if(var1 != null)
if if(this.minValueEffects != null)
if if(this.maxValueEffects != null)
if if(var1 != null)
if if(var1 != null)
if if(this.particles != null && this.particles.length > 0)
public boolean isSharedboolean isShared()
public boolean isUnknownboolean isUnknown()
public com.hypixel.hytale.protocol.EntityStatEffects toPacketpublic com.hypixel.hytale.protocol.EntityStatEffects toPacket()
public String toStringpublic String toString()
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() {
         }
      }
   }
}