Mode enum
Пакет: com.hypixel.hytale.builtin.triggervolumes.effect.builtin
Файл: com/hypixel/hytale/builtin/triggervolumes/effect/builtin/RemoveEntitiesEffect.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
KILL, |
REMOVE |
Исходный код
Показать/скрыть
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() {
}
}
}