EntityFilterCombat class
Пакет: com.hypixel.hytale.server.npc.corecomponents.entity.filters
Файл: com/hypixel/hytale/server/npc/corecomponents/entity/filters/EntityFilterCombat.java
extends: EntityFilterBase
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
COST |
|
private final String |
description |
|
yield |
false |
|
float |
var10 |
|
double[] |
var3 |
|
List |
var5 |
|
InterpretedCombatData |
var7 |
|
boolean |
var8 |
|
float |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
Mode Mode(String nullxx) |
abstract |
|
None None("None") |
abstract |
|
for for(int var6 = 0; var6 < var5.size() |
|
public String |
getpublic String get() |
|
|
if if(var8) |
Исходный код
Показать/скрыть
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;
}
}
}