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;
   }
}