RemoveEntitiesEffect class

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

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

extends: TriggerEffect

Поля (10)

МодификаторыТипИмя
KILL, REMOVE
break
continue
IndexedLookupTableAssetMap var0
DamageCause var1
Store var2
List var3
DamageCause var4
int var5
Damage var8

Методы (7)

МодификаторыВозвратСигнатура
Mode Mode()
for for(Ref var7 : var3)
if if(this.includeNpcs || this.includePlayers)
if if(this.mode != RemoveEntitiesEffect.Mode.KILL || var4 != null)
if if(this.maxCount > 0 && var5 >= this.maxCount)
if if(this.mode == RemoveEntitiesEffect.Mode.REMOVE)
if if(this.ignoreInvulnerability)

Исходный код

Показать/скрыть
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.builtin.triggervolumes.effect.TriggerVolumeEntityQuery;
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.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
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.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Arrays;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class RemoveEntitiesEffect class="kw">extends TriggerEffect {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<RemoveEntitiesEffect> CODEC = BuilderCodec.builder(RemoveEntitiesEffect.class, RemoveEntitiesEffect::new, BASE_CODEC)
      .append(new KeyedCodec<>("Mode", new EnumCodec<>(RemoveEntitiesEffect.Mode.class), false), (var0, var1) -> var0.mode = var1, var0 -> var0.mode)
      .add()
      .append(new KeyedCodec<>("IncludeNpcs", Codec.BOOLEAN, false), (var0, var1) -> var0.includeNpcs = var1, var0 -> var0.includeNpcs)
      .add()
      .append(
         new KeyedCodec<>("IncludePlayers", Codec.BOOLEAN, false),
         (var0, var1) -> var0.includePlayers = var1,
         var0 -> var0.includePlayers ? Boolean.TRUE : null
      )
      .add()
      .append(
         new KeyedCodec<>("IgnoreInvulnerability", Codec.BOOLEAN, false),
         (var0, var1) -> var0.ignoreInvulnerability = var1,
         var0 -> var0.ignoreInvulnerability ? Boolean.TRUE : null
      )
      .add()
      .append(
         new KeyedCodec<>("Roles", Codec.STRING_ARRAY, false),
         (var0, var1) -> var0.roles = var1 != null ? var1 : ArrayUtil.EMPTY_STRING_ARRAY,
         var0 -> var0.roles.length == 0 ? null : var0.roles
      )
      .add()
      .append(new KeyedCodec<>("MaxCount", Codec.INTEGER, false), (var0, var1) -> var0.maxCount = var1, var0 -> var0.maxCount > 0 ? var0.maxCount : null)
      .add()
      .build();
   @Nonnull
   class="kw">private RemoveEntitiesEffect.Mode mode = RemoveEntitiesEffect.Mode.REMOVE;
   class="kw">private boolean includeNpcs = true;
   class="kw">private boolean includePlayers;
   class="kw">private boolean ignoreInvulnerability;
   @Nonnull
   class="kw">private String[] roles = ArrayUtil.EMPTY_STRING_ARRAY;
   class="kw">private int maxCount;

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

   @Nonnull
   class="kw">public RemoveEntitiesEffect.Mode getMode() {
      class="kw">return this.mode;
   }

   @Override
   class="kw">public void execute(@Nonnull TriggerContext var1) {
      if (this.includeNpcs || this.includePlayers) {
         Store var2 = var1.getStore();
         List var3 = TriggerVolumeEntityQuery.collectTargets(var2, var1.getSpatialVolumes(), this.includeNpcs, this.includePlayers, Arrays.asList(this.roles));
         if (!var3.isEmpty()) {
            DamageCause var4 = this.mode == RemoveEntitiesEffect.Mode.KILL ? resolveCause() : null;
            if (this.mode != RemoveEntitiesEffect.Mode.KILL || var4 != null) {
               int var5 = 0;

               for (Ref var7 : var3) {
                  if (this.maxCount > 0 && var5 >= this.maxCount) {
                     break;
                  }

                  if (var7.isValid()) {
                     if (this.mode == RemoveEntitiesEffect.Mode.REMOVE) {
                        if (var2.getComponent(var7, PlayerRef.getComponentType()) != null) {
                           class="kw">continue;
                        }

                        var2.removeEntity(var7, RemoveReason.REMOVE);
                     } else {
                        Damage var8 = new Damage(Damage.NULL_SOURCE, var4, Float.MAX_VALUE);
                        if (this.ignoreInvulnerability) {
                           DeathComponent.tryAddComponent(var2, var7, var8);
                        } else {
                           DamageSystems.executeDamage(var7, var2, var8);
                        }
                     }

                     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 Mode {
      KILL,
      REMOVE;

      Mode() {
      }
   }
}