Comparison enum
Пакет: com.hypixel.hytale.builtin.triggervolumes.effect.builtin.conditions
Файл: com/hypixel/hytale/builtin/triggervolumes/effect/builtin/conditions/PlayerCountCondition.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
AT_LEAST,
AT_MOST,
EXACTLY,
NOT_EQUALS,
MORE_THAN, |
LESS_THAN |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.effect.builtin.conditions;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerCondition;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerContext;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEventType;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.VolumeEntry;
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.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.HashSet;
class="kw">import java.util.UUID;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">public class PlayerCountCondition class="kw">extends TriggerCondition {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<PlayerCountCondition> CODEC = BuilderCodec.builder(PlayerCountCondition.class, PlayerCountCondition::new, BASE_CODEC)
.append(
new KeyedCodec<>("Comparison", new EnumCodec<>(PlayerCountCondition.Comparison.class), false),
(var0, var1) -> var0.comparison = var1,
var0 -> var0.comparison
)
.add()
.append(new KeyedCodec<>("Count", Codec.INTEGER, false), (var0, var1) -> var0.count = var1, var0 -> var0.count)
.add()
.build();
@Nonnull
class="kw">private PlayerCountCondition.Comparison comparison = PlayerCountCondition.Comparison.AT_LEAST;
class="kw">private int count = 1;
class="kw">public PlayerCountCondition() {
}
@Nonnull
class="kw">public class="kw">static PlayerCountCondition create(@Nonnull TriggerEventType var0, @Nonnull PlayerCountCondition.Comparison var1, int var2) {
PlayerCountCondition var3 = new PlayerCountCondition();
var3.setEventType(var0);
var3.comparison = var1;
var3.count = var2;
class="kw">return var3;
}
@Override
class="kw">public boolean test(@Nonnull TriggerContext var1) {
class="kw">return this.matches(this.countPlayers(var1));
}
class="kw">public int countPlayers(@Nonnull TriggerContext var1) {
Store var2 = var1.getStore();
HashSet var3 = new HashSet<>();
for (VolumeEntry var5 : var1.getSpatialVolumes()) {
for (Entry var7 : var5.getTrackedEntities().entrySet()) {
if (!var3.contains(var7.getKey()) && isPlayer(var2, var7.getValue())) {
var3.add(var7.getKey());
}
}
}
class="kw">return var3.size();
}
class="kw">public boolean matches(int var1) {
class="kw">return class="kw">switch (this.comparison) {
case AT_LEAST -> var1 >= this.count;
case AT_MOST -> var1 <= this.count;
case EXACTLY -> var1 == this.count;
case NOT_EQUALS -> var1 != this.count;
case MORE_THAN -> var1 > this.count;
case LESS_THAN -> var1 < this.count;
};
}
class="kw">private class="kw">static boolean isPlayer(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1) {
class="kw">return !var1.isValid() ? false : var0.getComponent(var1, Player.getComponentType()) != null;
}
class="kw">public enum Comparison {
AT_LEAST,
AT_MOST,
EXACTLY,
NOT_EQUALS,
MORE_THAN,
LESS_THAN;
Comparison() {
}
}
}