Mode enum

Пакет: com.hypixel.hytale.server.npc.corecomponents.entity.filters

Файл: com/hypixel/hytale/server/npc/corecomponents/entity/filters/EntityFilterCombat.java

implements: Supplier<String>

Поля (1)

МодификаторыТипИмя
private final String description

Методы (2)

МодификаторыВозвратСигнатура
abstract None None("None")
public String getpublic String get()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.entity.filters;

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.combat.CombatViewSystems;
class="kw">import com.hypixel.hytale.server.npc.blackboard.view.combat.InterpretedCombatData;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.EntityFilterBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.entity.filters.builders.BuilderEntityFilterCombat;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.EntityPositionProvider;
class="kw">import java.util.List;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;

class="kw">public class EntityFilterCombat class="kw">extends EntityFilterBase {
   class="kw">public class="kw">static class="kw">final int COST = 100;
   class="kw">protected class="kw">final String sequence;
   class="kw">protected class="kw">final double minTimeElapsed;
   class="kw">protected class="kw">final double maxTimeElapsed;
   class="kw">protected class="kw">final EntityFilterCombat.Mode combatMode;
   class="kw">protected class="kw">final EntityPositionProvider positionProvider = new EntityPositionProvider();

   class="kw">public EntityFilterCombat(@Nonnull BuilderEntityFilterCombat var1, @Nonnull BuilderSupport var2) {
      this.sequence = var1.getSequence(var2);
      double[] var3 = var1.getTimeElapsedRange(var2);
      this.minTimeElapsed = var3[0];
      this.maxTimeElapsed = var3[1];
      this.combatMode = var1.getCombatMode(var2);
   }

   @Override
   class="kw">public boolean matchesEntity(
      @Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull ExecutionSupport var3, @Nonnull Store<EntityStore> var4
   ) {
      List var5 = CombatViewSystems.getCombatData(var2, var4);

      for (int var6 = 0; var6 < var5.size(); var6++) {
         InterpretedCombatData var7 = var5.get(var6);

         boolean var8 = class="kw">switch (this.combatMode) {
            case Sequence -> {
               if (!var7.getAttack().equals(this.sequence)) {
                  yield false;
               } else {
                  float var10 = var7.getCurrentElapsedTime();
                  yield var10 >= this.minTimeElapsed && var10 <= this.maxTimeElapsed;
               }
            }
            case Charging -> {
               if (!var7.isCharging()) {
                  yield false;
               } else {
                  float var9 = var7.getCurrentElapsedTime();
                  yield var9 >= this.minTimeElapsed && var9 <= this.maxTimeElapsed;
               }
            }
            case Attacking -> var7.isPerformingMeleeAttack() || var7.isPerformingRangedAttack();
            case Melee -> var7.isPerformingMeleeAttack();
            case Ranged -> var7.isPerformingRangedAttack();
            case Blocking -> var7.isPerformingBlock();
            case Any -> true;
            case None -> false;
         };
         if (var8) {
            class="kw">return true;
         }
      }

      class="kw">return this.combatMode == EntityFilterCombat.Mode.None;
   }

   @Override
   class="kw">public int cost() {
      class="kw">return 100;
   }

   class="kw">public enum Mode class="kw">implements Supplier<String> {
      Sequence("Combat sequence"),
      Charging("Weapon charging"),
      Attacking("Attacking"),
      Melee("Melee"),
      Ranged("Ranged"),
      Blocking("Blocking"),
      Any("Any"),
      None("None");

      class="kw">private class="kw">final String description;

      Mode(String nullxx) {
         this.description = nullxx;
      }

      class="kw">public String get() {
         class="kw">return this.description;
      }
   }
}