BuilderSensorEntityBase class
Пакет: com.hypixel.hytale.server.npc.corecomponents.entity.builders
Файл: com/hypixel/hytale/server/npc/corecomponents/entity/builders/BuilderSensorEntityBase.java
extends: BuilderSensorWithEntityFilters
Поля (4)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
DoubleHolder |
range |
|
BuilderValidationHelper |
var2 |
|
String |
var2 |
|
boolean |
var6 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
int |
getIgnoredTargetSlotint getIgnoredTargetSlot(@Nonnull BuilderSupport var1) |
public |
int |
getLockedTargetSlotint getLockedTargetSlot(@Nonnull BuilderSupport var1) |
public |
double |
getMinRangedouble getMinRange(@Nonnull BuilderSupport var1) |
public |
double |
getRangedouble getRange(@Nonnull BuilderSupport var1) |
public |
boolean |
isAutoUnlockTargetboolean isAutoUnlockTarget(@Nonnull BuilderSupport var1) |
public |
boolean |
isLockOnTargetboolean isLockOnTarget(@Nonnull BuilderSupport var1) |
public |
boolean |
isLockRebindboolean isLockRebind(@Nonnull BuilderSupport var1) |
public |
boolean |
isMultiTargetboolean isMultiTarget(@Nonnull BuilderSupport var1) |
public |
boolean |
isOnlyLockedTargetboolean isOnlyLockedTarget(@Nonnull BuilderSupport var1) |
public |
boolean |
isUseProjectedDistanceboolean isUseProjectedDistance(@Nonnull BuilderSupport var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.entity.builders;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Builder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderDescriptorState;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderObjectReferenceHelper;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderValidationHelper;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.ComponentContext;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Feature;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.InstructionType;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.BooleanHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.DoubleHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.StringHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.DoubleSingleValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.RelationalOperator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.StringNullOrNotEmptyValidator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.ISensorEntityCollector;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.ISensorEntityPrioritiser;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderSensorWithEntityFilters;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.entity.prioritisers.SensorEntityPrioritiserDefault;
class="kw">import com.hypixel.hytale.server.npc.instructions.Sensor;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.Scope;
class="kw">import com.hypixel.hytale.server.npc.validators.NPCLoadTimeValidationHelper;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">abstract class BuilderSensorEntityBase class="kw">extends BuilderSensorWithEntityFilters {
class="kw">protected class="kw">final DoubleHolder range = new DoubleHolder();
class="kw">protected class="kw">final DoubleHolder minRange = new DoubleHolder();
class="kw">protected class="kw">final BooleanHolder lockOnTarget = new BooleanHolder();
class="kw">protected class="kw">final BooleanHolder lockRebind = new BooleanHolder();
class="kw">protected class="kw">final BooleanHolder multiTarget = new BooleanHolder();
class="kw">protected class="kw">final BooleanHolder autoUnlockTarget = new BooleanHolder();
class="kw">protected class="kw">final BooleanHolder onlyLockedTarget = new BooleanHolder();
class="kw">protected class="kw">final StringHolder lockedTargetSlot = new StringHolder();
class="kw">protected class="kw">final StringHolder ignoredTargetSlot = new StringHolder();
class="kw">protected class="kw">final BooleanHolder useProjectedDistance = new BooleanHolder();
class="kw">protected class="kw">final BuilderObjectReferenceHelper<ISensorEntityPrioritiser> prioritiser = new BuilderObjectReferenceHelper<>(ISensorEntityPrioritiser.class, this);
class="kw">protected class="kw">final BuilderObjectReferenceHelper<ISensorEntityCollector> collector = new BuilderObjectReferenceHelper<>(ISensorEntityCollector.class, this);
class="kw">public BuilderSensorEntityBase() {
}
@Nonnull
@Override
class="kw">public Builder<Sensor> readConfig(@Nonnull JsonElement var1) {
this.getDouble(
var1, "MinRange", this.minRange, 0.0, DoubleSingleValidator.greaterEqual0(), BuilderDescriptorState.Stable, "Minimum range to test entities in", null
);
this.requireDouble(var1, "Range", this.range, DoubleSingleValidator.greater0(), BuilderDescriptorState.Stable, "Maximum range to test entities in", null);
this.getBoolean(var1, "LockOnTarget", this.lockOnTarget, false, BuilderDescriptorState.Stable, "Matched target becomes locked target", null);
this.getBoolean(
var1,
"Rebind",
this.lockRebind,
false,
BuilderDescriptorState.Stable,
"Whether the locked target slot rebinds to the entity, so it survives short reloads or role changes.",
null
);
this.getBoolean(
var1,
"MultiTarget",
this.multiTarget,
false,
BuilderDescriptorState.Stable,
"Expose all matching targets (primary in slot 0) so a ForEach action can run per target, instead of only the primary",
null
);
this.getString(
var1,
"LockedTargetSlot",
this.lockedTargetSlot,
"LockedTarget",
StringNullOrNotEmptyValidator.get(),
BuilderDescriptorState.Stable,
"The target slot to use for locking on or unlocking",
null
);
this.getBoolean(
var1,
"AutoUnlockTarget",
this.autoUnlockTarget,
false,
BuilderDescriptorState.Stable,
"Unlock locked target when sensor not matching it anymore",
null
);
this.getBoolean(var1, "OnlyLockedTarget", this.onlyLockedTarget, false, BuilderDescriptorState.Stable, "Test only locked target", null);
this.getString(
var1,
"IgnoredTargetSlot",
this.ignoredTargetSlot,
null,
StringNullOrNotEmptyValidator.get(),
BuilderDescriptorState.Stable,
"The target slot to use for ignoring",
null
);
this.getBoolean(
var1,
"UseProjectedDistance",
this.useProjectedDistance,
false,
BuilderDescriptorState.Stable,
"Use the projected movement direction vector for distance, rather than the Euclidean distance",
null
);
this.getObject(
var1,
"Prioritiser",
this.prioritiser,
BuilderDescriptorState.Stable,
"A prioritiser for selecting results based on additional parameters",
null,
this.validationHelper
);
this.getObject(
var1,
"Collector",
this.collector,
BuilderDescriptorState.Stable,
"A collector which can process all checked entities and act on them based on whether they match or not",
null,
this.validationHelper
);
BuilderValidationHelper var2 = this.createFilterValidationHelper(ComponentContext.SensorEntity);
this.getArray(var1, "Filters", this.filters, null, BuilderDescriptorState.Stable, "A series of entity filter sensors to test", null, var2);
this.validateDoubleRelation(this.range, RelationalOperator.GreaterEqual, this.minRange);
this.provideFeature(Feature.LiveEntity);
if (!this.isCreatingDescriptor() && (!this.useProjectedDistance.isStatic() || this.useProjectedDistance.get(null))) {
this.requireInstructionType(InstructionType.NPCOnlyInstructions);
}
class="kw">return this;
}
@Override
class="kw">public boolean validate(String var1, @Nonnull NPCLoadTimeValidationHelper var2, @Nonnull ExecutionContext var3, Scope var4, @Nonnull List<String> var5) {
boolean var6 = this.prioritiser.validate(var1, var2, this.builderManager, var3, var4, var5)
& super.validate(var1, var2, var3, var4, var5)
& this.collector.validate(var1, var2, this.builderManager, var3, var4, var5);
var2.clearPrioritiserProvidedFilterTypes();
class="kw">return var6;
}
class="kw">public double getRange(@Nonnull BuilderSupport var1) {
class="kw">return this.range.get(var1.getExecutionContext());
}
class="kw">public double getMinRange(@Nonnull BuilderSupport var1) {
class="kw">return this.minRange.get(var1.getExecutionContext());
}
class="kw">public boolean isLockOnTarget(@Nonnull BuilderSupport var1) {
class="kw">return this.lockOnTarget.get(var1.getExecutionContext());
}
class="kw">public boolean isLockRebind(@Nonnull BuilderSupport var1) {
class="kw">return this.lockRebind.get(var1.getExecutionContext());
}
class="kw">public boolean isMultiTarget(@Nonnull BuilderSupport var1) {
class="kw">return this.multiTarget.get(var1.getExecutionContext());
}
class="kw">public boolean isOnlyLockedTarget(@Nonnull BuilderSupport var1) {
class="kw">return this.onlyLockedTarget.get(var1.getExecutionContext());
}
class="kw">public int getLockedTargetSlot(@Nonnull BuilderSupport var1) {
class="kw">return !this.lockOnTarget.get(var1.getExecutionContext()) && !this.onlyLockedTarget.get(var1.getExecutionContext())
? Integer.MIN_VALUE
: var1.getTargetSlot(this.lockedTargetSlot.get(var1.getExecutionContext()));
}
class="kw">public int getIgnoredTargetSlot(@Nonnull BuilderSupport var1) {
String var2 = this.ignoredTargetSlot.get(var1.getExecutionContext());
class="kw">return var2 == null ? Integer.MIN_VALUE : var1.getTargetSlot(var2);
}
class="kw">public boolean isAutoUnlockTarget(@Nonnull BuilderSupport var1) {
class="kw">return this.autoUnlockTarget.get(var1.getExecutionContext());
}
class="kw">public boolean isUseProjectedDistance(@Nonnull BuilderSupport var1) {
class="kw">return this.useProjectedDistance.get(var1.getExecutionContext());
}
@Nullable
class="kw">public ISensorEntityPrioritiser getPrioritiser(@Nonnull BuilderSupport var1) {
class="kw">return !this.prioritiser.isPresent() ? new SensorEntityPrioritiserDefault() : this.prioritiser.build(var1);
}
@Nullable
class="kw">public ISensorEntityCollector getCollector(@Nonnull BuilderSupport var1) {
class="kw">return this.collector.isPresent() ? this.collector.build(var1) : ISensorEntityCollector.DEFAULT;
}
}