SensorCombatActionEvaluator class
Пакет: com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents
Файл: com/hypixel/hytale/builtin/npccombatactionevaluator/corecomponents/SensorCombatActionEvaluator.java
extends: SensorBase
Поля (13)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
var10 |
|
double |
var12 |
|
Vector3d |
var14 |
|
Vector3d |
var15 |
|
double |
var16 |
|
int |
var3 |
|
int |
var4 |
|
int |
var5 |
|
Holder |
var6 |
|
Ref |
var6 |
|
CombatActionEvaluatorSystems.CombatConstructionData |
var7 |
|
ValueStore |
var7 |
|
double |
var8 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var6 == null) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.CombatActionEvaluatorSystems;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents.builders.BuilderSensorCombatActionEvaluator;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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.corecomponents.SensorBase;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.EntityPositionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.parameterproviders.MultipleParameterProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.parameterproviders.SingleDoubleParameterProvider;
class="kw">import com.hypixel.hytale.server.npc.valuestore.ValueStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class SensorCombatActionEvaluator class="kw">extends SensorBase {
@Nonnull
class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
class="kw">protected class="kw">final boolean targetInRange;
class="kw">protected class="kw">final double allowableDeviation;
class="kw">protected class="kw">final int minRangeStoreSlot;
class="kw">protected class="kw">final int maxRangeStoreSlot;
class="kw">protected class="kw">final int positioningAngleStoreSlot;
class="kw">protected class="kw">final int targetSlot;
@Nonnull
class="kw">protected class="kw">final SingleDoubleParameterProvider minRangeParameterProvider;
@Nonnull
class="kw">protected class="kw">final SingleDoubleParameterProvider maxRangeParameterProvider;
@Nonnull
class="kw">protected class="kw">final SingleDoubleParameterProvider positioningAngleParameterProvider;
@Nonnull
class="kw">protected class="kw">final MultipleParameterProvider parameterProvider = new MultipleParameterProvider();
@Nonnull
class="kw">protected class="kw">final EntityPositionProvider positionProvider = new EntityPositionProvider(this.parameterProvider);
class="kw">protected class="kw">final ComponentType<EntityStore, ValueStore> valueStoreComponentType;
class="kw">public SensorCombatActionEvaluator(@Nonnull BuilderSensorCombatActionEvaluator var1, @Nonnull BuilderSupport var2) {
super(var1);
this.targetInRange = var1.isTargetInRange(var2);
this.allowableDeviation = var1.getAllowableDeviation(var2);
this.targetSlot = var1.getTargetSlot(var2);
int var3 = var2.getParameterSlot("MinRange");
int var4 = var2.getParameterSlot("MaxRange");
int var5 = var2.getParameterSlot("PositioningAngle");
this.minRangeParameterProvider = new SingleDoubleParameterProvider(var3);
this.maxRangeParameterProvider = new SingleDoubleParameterProvider(var4);
this.positioningAngleParameterProvider = new SingleDoubleParameterProvider(var5);
this.parameterProvider.addParameterProvider(var3, this.minRangeParameterProvider);
this.parameterProvider.addParameterProvider(var4, this.maxRangeParameterProvider);
this.parameterProvider.addParameterProvider(var5, this.positioningAngleParameterProvider);
this.minRangeStoreSlot = var1.getMinRangeStoreSlot(var2);
this.maxRangeStoreSlot = var1.getMaxRangeStoreSlot(var2);
this.positioningAngleStoreSlot = var1.getPositioningAngleStoreSlot(var2);
this.valueStoreComponentType = ValueStore.getComponentType();
Holder var6 = var2.getHolder();
CombatActionEvaluatorSystems.CombatConstructionData var7 = var6.ensureAndGetComponent(
CombatActionEvaluatorSystems.CombatConstructionData.getComponentType()
);
var7.setCombatState(var2.getCurrentStateName());
var7.setMarkedTargetSlot(var2.getTargetSlot("CAETargetSlot"));
var7.setMinRangeSlot(this.minRangeStoreSlot);
var7.setMaxRangeSlot(this.maxRangeStoreSlot);
var7.setPositioningAngleSlot(this.positioningAngleStoreSlot);
}
@Override
class="kw">public boolean matches(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
if (!super.matches(var1, var2, var3, var5)) {
this.positionProvider.clear();
this.parameterProvider.clear();
class="kw">return false;
} else {
Ref var6 = var2.getMarkedEntitySupport().getMarkedEntityRef(this.targetSlot);
if (var6 == null) {
this.positionProvider.clear();
this.parameterProvider.clear();
class="kw">return false;
} else {
this.positionProvider.setTarget(var6, var5);
ValueStore var7 = var5.getComponent(var1, this.valueStoreComponentType);
double var8 = var7.readDouble(this.minRangeStoreSlot);
double var10 = var7.readDouble(this.maxRangeStoreSlot);
this.minRangeParameterProvider.overrideDouble(var8);
this.maxRangeParameterProvider.overrideDouble(var10);
double var12 = var7.readDouble(this.positioningAngleStoreSlot);
this.positioningAngleParameterProvider.overrideDouble(var12);
Vector3d var14 = var5.getComponent(var1, TRANSFORM_COMPONENT_TYPE).getPosition();
Vector3d var15 = var5.getComponent(var6, TRANSFORM_COMPONENT_TYPE).getPosition();
double var16 = var15.distance(var14);
class="kw">return this.targetInRange == var16 <= var10 + this.allowableDeviation;
}
}
}
@Override
class="kw">public InfoProvider getSensorInfo() {
class="kw">return this.positionProvider;
}
}