ActiveEntityEffect class

Пакет: com.hypixel.hytale.server.core.entity.effect

Файл: com/hypixel/hytale/server/core/entity/effect/ActiveEntityEffect.java

implements: Damage.Source

Поля (18)

МодификаторыТипИмя
DamageCalculatorSystems.DamageSequence var14
int var3
var3
var3
float var4
Message var4
Int2FloatMap var5
DamageCalculator var5
EntityEffect var5
int var6
DamageEffects var6
Object2FloatMap var6
String var6
World var7
String var7
DamageEffects var8
String var8
Damage[] var9

Методы (22)

МодификаторыВозвратСигнатура
private int calculateCyclesToRunint calculateCyclesToRun(@Nonnull EntityEffect var1, float var2)
for for(Damage var13 : var9)
public int getEntityEffectIndexint getEntityEffectIndex()
public float getInitialDurationfloat getInitialDuration()
public float getRemainingDurationfloat getRemainingDuration()
if if(!this.infinite)
if if(var4 > 0.0F)
if if(var5 != null)
if if(var4 > 0)
if if(var6 != null)
if if(var5 != null)
if if(var4 > 0)
if if(var8 != null)
if if(var5 == null)
if if(var6 != null)
public boolean isDebuffboolean isDebuff()
public boolean isInfiniteboolean isInfinite()
public boolean isInvulnerableboolean isInvulnerable()
public void tickvoid tick(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, @Nonnull EntityStatMap var4, float var5)
private void tickDamagevoid tickDamage(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, int var4)
static void tickStatChangesvoid tickStatChanges(@Nonnull CommandBuffer<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull EntityEffect var2, @Nonnull EntityStatMap var3, int var4)
abstract tickStatChanges tickStatChanges(var1, var2, var3, var4, var6)

Исходный код

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

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.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.ChangeStatBehaviour;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageCalculatorSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageCause;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.combat.DamageCalculator;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.combat.DamageEffects;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
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 java.util.Locale;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ActiveEntityEffect class="kw">implements Damage.Source {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<ActiveEntityEffect> CODEC = BuilderCodec.builder(ActiveEntityEffect.class, ActiveEntityEffect::new)
      .append(new KeyedCodec<>("EntityEffectId", Codec.STRING), (var0, var1) -> var0.entityEffectId = var1, var0 -> var0.entityEffectId)
      .add()
      .append(new KeyedCodec<>("InitialDuration", Codec.FLOAT), (var0, var1) -> var0.initialDuration = var1, var0 -> var0.initialDuration)
      .add()
      .append(new KeyedCodec<>("RemainingDuration", Codec.FLOAT), (var0, var1) -> var0.remainingDuration = var1, var0 -> var0.remainingDuration)
      .add()
      .append(new KeyedCodec<>("SinceLastDamage", Codec.FLOAT), (var0, var1) -> var0.sinceLastDamage = var1, var0 -> var0.sinceLastDamage)
      .add()
      .append(new KeyedCodec<>("HasBeenDamaged", Codec.BOOLEAN), (var0, var1) -> var0.hasBeenDamaged = var1, var0 -> var0.hasBeenDamaged)
      .add()
      .append(
         new KeyedCodec<>("SequentialHits", DamageCalculatorSystems.Sequence.CODEC), (var0, var1) -> var0.sequentialHits = var1, var0 -> var0.sequentialHits
      )
      .add()
      .append(new KeyedCodec<>("Infinite", Codec.BOOLEAN), (var0, var1) -> var0.infinite = var1, var0 -> var0.infinite)
      .add()
      .append(new KeyedCodec<>("Debuff", Codec.BOOLEAN), (var0, var1) -> var0.debuff = var1, var0 -> var0.debuff)
      .add()
      .append(new KeyedCodec<>("StatusEffectIcon", Codec.STRING), (var0, var1) -> var0.statusEffectIcon = var1, var0 -> var0.statusEffectIcon)
      .add()
      .append(new KeyedCodec<>("Invulnerable", Codec.BOOLEAN), (var0, var1) -> var0.invulnerable = var1, var0 -> var0.invulnerable)
      .add()
      .build();
   class="kw">private class="kw">static class="kw">final float DEFAULT_DURATION = 1.0F;
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_GENERAL_DAMAGE_CAUSES_UNKNOWN = Message.translation("server.general.damageCauses.unknown");
   class="kw">protected String entityEffectId;
   class="kw">protected int entityEffectIndex;
   class="kw">protected float initialDuration;
   class="kw">protected float remainingDuration;
   class="kw">protected boolean infinite;
   class="kw">protected boolean debuff;
   @Nullable
   class="kw">protected String statusEffectIcon;
   class="kw">private float sinceLastDamage;
   class="kw">private boolean hasBeenDamaged;
   class="kw">protected boolean invulnerable;
   class="kw">private DamageCalculatorSystems.Sequence sequentialHits;

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

   class="kw">public ActiveEntityEffect(
      @Nonnull String var1,
      int var2,
      float var3,
      float var4,
      boolean var5,
      boolean var6,
      @Nullable String var7,
      float var8,
      boolean var9,
      @Nonnull DamageCalculatorSystems.Sequence var10,
      boolean var11
   ) {
      this.entityEffectId = var1;
      this.entityEffectIndex = var2;
      this.initialDuration = var3;
      this.remainingDuration = var4;
      this.infinite = var5;
      this.debuff = var6;
      this.statusEffectIcon = var7;
      this.sinceLastDamage = var8;
      this.hasBeenDamaged = var9;
      this.sequentialHits = var10;
      this.invulnerable = var11;
   }

   class="kw">public ActiveEntityEffect(@Nonnull String var1, int var2, float var3, boolean var4, @Nullable String var5, boolean var6) {
      this(var1, var2, var3, var3, false, var4, var5, 0.0F, false, new DamageCalculatorSystems.Sequence(), var6);
   }

   class="kw">public ActiveEntityEffect(@Nonnull String var1, int var2, boolean var3, boolean var4) {
      this(var1, var2, 1.0F, 1.0F, var3, false, "", 0.0F, false, new DamageCalculatorSystems.Sequence(), var4);
   }

   class="kw">public void tick(
      @Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, @Nonnull EntityStatMap var4, float var5
   ) {
      int var6 = this.calculateCyclesToRun(var3, var5);
      this.tickDamage(var1, var2, var3, var6);
      tickStatChanges(var1, var2, var3, var4, var6);
      if (!this.infinite) {
         this.remainingDuration -= var5;
      }
   }

   class="kw">private int calculateCyclesToRun(@Nonnull EntityEffect var1, float var2) {
      int var3 = 0;
      float var4 = var1.getDamageCalculatorCooldown();
      if (var4 > 0.0F) {
         this.sinceLastDamage += var2;
         var3 = MathUtil.fastFloor(this.sinceLastDamage / var4);
         this.sinceLastDamage %= var4;
      } else if (!this.hasBeenDamaged) {
         var3 = 1;
         this.hasBeenDamaged = true;
      }

      class="kw">return var3;
   }

   class="kw">private class="kw">static void tickStatChanges(
      @Nonnull CommandBuffer<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull EntityEffect var2, @Nonnull EntityStatMap var3, int var4
   ) {
      Int2FloatMap var5 = var2.getEntityStats();
      if (var5 != null) {
         if (var4 > 0) {
            DamageEffects var6 = var2.getStatModifierEffects();
            if (var6 != null) {
               var6.spawnAtEntity(var0, var1);
            }

            var3.processStatChanges(EntityStatMap.Predictable.ALL, var5, var2.getValueType(), ChangeStatBehaviour.Add);
         }
      }
   }

   class="kw">private void tickDamage(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, int var4) {
      DamageCalculator var5 = var3.getDamageCalculator();
      if (var5 != null) {
         if (var4 > 0) {
            Object2FloatMap var6 = var5.calculateDamage(this.initialDuration);
            if (var6 != null && !var6.isEmpty()) {
               World var7 = var1.getExternalData().getWorld();
               DamageEffects var8 = var3.getDamageEffects();
               Damage[] var9 = DamageCalculatorSystems.queueDamageCalculator(var7, var6, var2, var1, this, null);

               for (Damage var13 : var9) {
                  DamageCalculatorSystems.DamageSequence var14 = new DamageCalculatorSystems.DamageSequence(this.sequentialHits, var5);
                  var13.putMetaObject(DamageCalculatorSystems.DAMAGE_SEQUENCE, var14);
                  if (var8 != null) {
                     var8.addToDamage(var13);
                  }

                  var1.invoke(var2, var13);
               }
            }
         }
      }
   }

   class="kw">public int getEntityEffectIndex() {
      class="kw">return this.entityEffectIndex;
   }

   class="kw">public float getInitialDuration() {
      class="kw">return this.initialDuration;
   }

   class="kw">public float getRemainingDuration() {
      class="kw">return this.remainingDuration;
   }

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

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

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

   @Nonnull
   @Override
   class="kw">public Message getDeathMessage(@Nonnull Damage var1, @Nonnull Ref<EntityStore> var2, @Nonnull ComponentAccessor<EntityStore> var3) {
      EntityEffect var5 = EntityEffect.getAssetMap().getAsset(this.entityEffectIndex);
      if (var5 == null) {
         class="kw">return Message.translation("server.general.killedBy").param("damageSource", MESSAGE_GENERAL_DAMAGE_CAUSES_UNKNOWN);
      }

      String var6 = var5.getDeathMessageKey();
      if (var6 != null) {
         class="kw">return Message.translation(var6);
      }

      String var7 = var5.getLocale();
      String var8 = var7 != null ? var7 : var5.getId().toLowerCase(Locale.ROOT);
      Message var4 = Message.translation("server.general.damageCauses." + var8);
      class="kw">return Message.translation("server.general.killedBy").param("damageSource", var4);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "ActiveEntityEffect{entityEffectIndex="
         + this.entityEffectIndex
         + ", initialDuration="
         + this.initialDuration
         + ", remainingDuration="
         + this.remainingDuration
         + ", sinceLastDamage="
         + this.sinceLastDamage
         + ", hasBeenDamaged="
         + this.hasBeenDamaged
         + ", sequentialHits="
         + this.sequentialHits
         + ", infinite="
         + this.infinite
         + ", debuff="
         + this.debuff
         + ", statusEffectIcon="
         + this.statusEffectIcon
         + "}";
   }
}