DamageEntityEffect class

Пакет: com.hypixel.hytale.builtin.triggervolumes.effect.builtin

Файл: com/hypixel/hytale/builtin/triggervolumes/effect/builtin/DamageEntityEffect.java

extends: TriggerEffect

Поля (10)

МодификаторыТипИмя
FLAT, PERCENT_MAX, PERCENT_CURRENT
IndexedLookupTableAssetMap var0
DamageCause var1
DamageCause var2
Ref var3
Store var4
float var5
EntityStatMap var6
EntityStatValue var7
float var8

Методы (4)

МодификаторыВозвратСигнатура
DamageMode DamageMode()
if if(var2 != null)
if if(var6 == null)
if if(var7 == null)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerContext;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEffect;
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.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageCause;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.DefaultEntityStatTypes;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class DamageEntityEffect class="kw">extends TriggerEffect {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<DamageEntityEffect> CODEC = BuilderCodec.builder(DamageEntityEffect.class, DamageEntityEffect::new, BASE_CODEC)
      .append(new KeyedCodec<>("Mode", new EnumCodec<>(DamageEntityEffect.DamageMode.class)), (var0, var1) -> var0.mode = var1, var0 -> var0.mode)
      .add()
      .append(new KeyedCodec<>("Amount", Codec.FLOAT, false), (var0, var1) -> var0.amount = var1, var0 -> var0.amount)
      .add()
      .build();
   @Nonnull
   class="kw">private DamageEntityEffect.DamageMode mode = DamageEntityEffect.DamageMode.FLAT;
   class="kw">private float amount;

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

   @Override
   class="kw">public void execute(@Nonnull TriggerContext var1) {
      if (!(this.amount <= 0.0F)) {
         DamageCause var2 = resolveCause();
         if (var2 != null) {
            Ref var3 = var1.getEntityRef();
            Store var4 = var1.getStore();

            float var5 = class="kw">switch (this.mode) {
               case FLAT -> this.amount;
               case PERCENT_MAX, PERCENT_CURRENT -> {
                  EntityStatMap var6 = var4.getComponent(var3, EntityStatMap.getComponentType());
                  if (var6 == null) {
                     yield 0.0F;
                  } else {
                     EntityStatValue var7 = var6.get(DefaultEntityStatTypes.getHealth());
                     if (var7 == null) {
                        yield 0.0F;
                     } else {
                        float var8 = this.mode == DamageEntityEffect.DamageMode.PERCENT_MAX ? var7.getMax() : var7.get();
                        yield var8 * (this.amount / 100.0F);
                     }
                  }
               }
            };
            if (!(var5 <= 0.0F)) {
               DamageSystems.executeDamage(var3, var4, new Damage(Damage.NULL_SOURCE, var2, var5));
            }
         }
      }
   }

   @Nullable
   class="kw">private class="kw">static DamageCause resolveCause() {
      IndexedLookupTableAssetMap var0 = DamageCause.getAssetMap();
      DamageCause var1 = var0.getAsset("Environment");
      class="kw">return var1 != null ? var1 : DamageCause.OUT_OF_WORLD;
   }

   class="kw">public enum DamageMode {
      FLAT,
      PERCENT_MAX,
      PERCENT_CURRENT;

      DamageMode() {
      }
   }
}