PlayerCountCondition class

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

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

extends: TriggerCondition

Поля (4)

МодификаторыТипИмя
AT_LEAST, AT_MOST, EXACTLY, NOT_EQUALS, MORE_THAN, LESS_THAN
Store var2
PlayerCountCondition var3
HashSet var3

Методы (5)

МодификаторыВозвратСигнатура
Comparison Comparison()
public int countPlayersint countPlayers(@Nonnull TriggerContext var1)
static boolean isPlayerboolean isPlayer(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1)
public boolean matchesboolean matches(int var1)
return switchreturn switch(this.comparison)

Исходный код

Показать/скрыть
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() {
      }
   }
}