BuilderBodyMotionWanderBase class

Пакет: com.hypixel.hytale.server.npc.corecomponents.movement.builders

Файл: com/hypixel/hytale/server/npc/corecomponents/movement/builders/BuilderBodyMotionWanderBase.java

extends: BuilderBodyMotionBase

Поля (1)

МодификаторыТипИмя
final String[] AVOID_OR_RELAXED_ATTRIBUTES

Методы (13)

МодификаторыВозвратСигнатура
public double getDesiredAltitudeWeightdouble getDesiredAltitudeWeight(@Nonnull BuilderSupport var1)
public float getMaxHeadingChangefloat getMaxHeadingChange(@Nonnull BuilderSupport var1)
public double getMaxWalkTimedouble getMaxWalkTime(@Nonnull BuilderSupport var1)
public float getMinHeadingChangefloat getMinHeadingChange(@Nonnull BuilderSupport var1)
public double getMinMoveDistancedouble getMinMoveDistance(@Nonnull BuilderSupport var1)
public double getMinWalkTimedouble getMinWalkTime(@Nonnull BuilderSupport var1)
public double getRelativeSpeeddouble getRelativeSpeed(@Nonnull BuilderSupport var1)
public double getStopDistancedouble getStopDistance(@Nonnull BuilderSupport var1)
public int getTestsPerTickint getTestsPerTick(@Nonnull BuilderSupport var1)
public boolean isAvoidingBlockDamageboolean isAvoidingBlockDamage(@Nonnull BuilderSupport var1)
public boolean isLegacyRelaxedMoveConstraintsboolean isLegacyRelaxedMoveConstraints(@Nonnull BuilderSupport var1)
public boolean isRelaxHeadingChangeboolean isRelaxHeadingChange(@Nonnull BuilderSupport var1)
public boolean isRelaxedConstraintsPresentboolean isRelaxedConstraintsPresent()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.movement.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.BuilderSupport;
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.EnumSetHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.FloatHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.IntHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.DoubleRangeValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.DoubleSingleValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.IntSingleValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.RelationalOperator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderBodyMotionBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.movement.BodyMotionWanderBase;
class="kw">import com.hypixel.hytale.server.npc.instructions.BodyMotion;
class="kw">import com.hypixel.hytale.server.npc.movement.constraints.RelaxedConstraint;
class="kw">import java.util.EnumSet;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class BuilderBodyMotionWanderBase class="kw">extends BuilderBodyMotionBase {
   class="kw">private class="kw">static class="kw">final String[] AVOID_OR_RELAXED_ATTRIBUTES = new String[]{"AvoidBlockDamage", "RelaxedConstraints"};
   class="kw">private class="kw">static class="kw">final String[] LEGACY_OR_RELAXED_ATTRIBUTES = new String[]{"RelaxedMoveConstraints", "RelaxedConstraints"};
   class="kw">protected class="kw">final DoubleHolder minWalkTime = new DoubleHolder();
   class="kw">protected class="kw">final DoubleHolder maxWalkTime = new DoubleHolder();
   class="kw">protected class="kw">final FloatHolder minHeadingChange = new FloatHolder();
   class="kw">protected class="kw">final FloatHolder maxHeadingChange = new FloatHolder();
   class="kw">protected class="kw">final BooleanHolder relaxHeadingChange = new BooleanHolder();
   class="kw">protected class="kw">final DoubleHolder relativeSpeed = new DoubleHolder();
   class="kw">protected class="kw">final DoubleHolder minMoveDistance = new DoubleHolder();
   class="kw">protected class="kw">final DoubleHolder stopDistance = new DoubleHolder();
   class="kw">protected class="kw">final BooleanHolder isAvoidingBlockDamage = new BooleanHolder();
   class="kw">protected class="kw">final BooleanHolder isLegacyRelaxedMoveConstraints = new BooleanHolder();
   class="kw">protected class="kw">final EnumSetHolder<RelaxedConstraint> relaxedConstraints = new EnumSetHolder<>();
   class="kw">protected class="kw">final IntHolder testsPerTick = new IntHolder();
   class="kw">protected class="kw">final DoubleHolder desiredAltitudeWeight = new DoubleHolder();
   class="kw">private class="kw">final boolean[] avoidOrRelaxedPresent = new boolean[2];
   class="kw">private class="kw">final boolean[] legacyOrRelaxedPresent = new boolean[2];

   class="kw">public BuilderBodyMotionWanderBase() {
   }

   @Nullable
   class="kw">public BodyMotionWanderBase build(@Nonnull BuilderSupport var1) {
      var1.setRequireLeashPosition();
      class="kw">return null;
   }

   @Nonnull
   @Override
   class="kw">public Builder<BodyMotion> readCommonConfig(@Nonnull JsonElement var1) {
      super.readCommonConfig(var1);
      this.getDouble(
         var1,
         "MinWalkTime",
         this.minWalkTime,
         2.0,
         DoubleSingleValidator.greaterEqual0(),
         BuilderDescriptorState.Stable,
         "Minimum time to wander for a segment.",
         null
      );
      this.getDouble(
         var1,
         "MaxWalkTime",
         this.maxWalkTime,
         4.0,
         DoubleSingleValidator.greater0(),
         BuilderDescriptorState.Stable,
         "Maximum time to wander for a segment.",
         null
      );
      this.getFloat(
         var1,
         "MinHeadingChange",
         this.minHeadingChange,
         0.0,
         DoubleRangeValidator.between(0.0, 180.0),
         BuilderDescriptorState.Stable,
         "Approximate minimum heading change between segments",
         null
      );
      this.getFloat(
         var1,
         "MaxHeadingChange",
         this.maxHeadingChange,
         90.0,
         DoubleRangeValidator.between(0.0, 180.0),
         BuilderDescriptorState.Stable,
         "Approximate maximum heading change between segments",
         null
      );
      this.getBoolean(
         var1,
         "RelaxHeadingChange",
         this.relaxHeadingChange,
         true,
         BuilderDescriptorState.Stable,
         "Allow other directions when preferred directions blocked",
         null
      );
      this.getDouble(
         var1,
         "RelativeSpeed",
         this.relativeSpeed,
         0.5,
         DoubleRangeValidator.fromExclToIncl(0.0, 2.0),
         BuilderDescriptorState.Stable,
         "Relative wander speed",
         null
      );
      this.getDouble(
         var1,
         "MinMoveDistance",
         this.minMoveDistance,
         0.5,
         DoubleSingleValidator.greater0(),
         BuilderDescriptorState.Stable,
         "Minimum distance to move in a segment",
         null
      );
      this.getDouble(
         var1, "StopDistance", this.stopDistance, 0.5, DoubleSingleValidator.greater0(), BuilderDescriptorState.Stable, "Distance to stop at target", null
      );
      this.getInt(var1, "TestsPerTick", this.testsPerTick, 1, IntSingleValidator.greater0(), BuilderDescriptorState.Stable, "Direction tests per tick", null);
      this.avoidOrRelaxedPresent[0] = this.getBoolean(
         var1, "AvoidBlockDamage", this.isAvoidingBlockDamage, true, BuilderDescriptorState.Deprecated, "Should avoid environmental damage from blocks", null
      );
      this.legacyOrRelaxedPresent[0] = this.getBoolean(
         var1,
         "RelaxedMoveConstraints",
         this.isLegacyRelaxedMoveConstraints,
         false,
         BuilderDescriptorState.Deprecated,
         "NPC can do movements like wading (depends on motion controller type)",
         null
      );
      this.avoidOrRelaxedPresent[1] = this.getEnumSet(
         var1,
         "RelaxedConstraints",
         this.relaxedConstraints,
         RelaxedConstraint.class,
         EnumSet.noneOf(RelaxedConstraint.class),
         BuilderDescriptorState.Stable,
         "List of constraints to relax for this motion (new mode; empty = no relaxed constraints)",
         null
      );
      this.legacyOrRelaxedPresent[1] = this.avoidOrRelaxedPresent[1];
      this.validateOneOrNonePresent(AVOID_OR_RELAXED_ATTRIBUTES, this.avoidOrRelaxedPresent);
      this.validateOneOrNonePresent(LEGACY_OR_RELAXED_ATTRIBUTES, this.legacyOrRelaxedPresent);
      this.getDouble(
         var1,
         "DesiredAltitudeWeight",
         this.desiredAltitudeWeight,
         -1.0,
         DoubleRangeValidator.between(-1.0, 1.0),
         BuilderDescriptorState.Stable,
         "How much this NPC prefers being within the desired height range",
         "How much this NPC prefers being within the desired height range. 0 means it doesn't care much, 1 means it will do its best to get there fast. Values below 0 mean the class="kw">default in the motion controller will be used."
      );
      this.validateDoubleRelation(this.minWalkTime, RelationalOperator.LessEqual, this.maxWalkTime);
      this.validateFloatRelation(this.minHeadingChange, RelationalOperator.LessEqual, this.maxHeadingChange);
      class="kw">return this;
   }

   class="kw">public double getMinWalkTime(@Nonnull BuilderSupport var1) {
      class="kw">return this.minWalkTime.get(var1.getExecutionContext());
   }

   class="kw">public double getMaxWalkTime(@Nonnull BuilderSupport var1) {
      class="kw">return this.maxWalkTime.get(var1.getExecutionContext());
   }

   class="kw">public float getMinHeadingChange(@Nonnull BuilderSupport var1) {
      class="kw">return this.minHeadingChange.get(var1.getExecutionContext());
   }

   class="kw">public float getMaxHeadingChange(@Nonnull BuilderSupport var1) {
      class="kw">return this.maxHeadingChange.get(var1.getExecutionContext());
   }

   class="kw">public boolean isRelaxHeadingChange(@Nonnull BuilderSupport var1) {
      class="kw">return this.relaxHeadingChange.get(var1.getExecutionContext());
   }

   class="kw">public double getRelativeSpeed(@Nonnull BuilderSupport var1) {
      class="kw">return this.relativeSpeed.get(var1.getExecutionContext());
   }

   class="kw">public double getMinMoveDistance(@Nonnull BuilderSupport var1) {
      class="kw">return this.minMoveDistance.get(var1.getExecutionContext());
   }

   class="kw">public double getStopDistance(@Nonnull BuilderSupport var1) {
      class="kw">return this.stopDistance.get(var1.getExecutionContext());
   }

   class="kw">public boolean isAvoidingBlockDamage(@Nonnull BuilderSupport var1) {
      class="kw">return this.isAvoidingBlockDamage.get(var1.getExecutionContext());
   }

   class="kw">public boolean isLegacyRelaxedMoveConstraints(@Nonnull BuilderSupport var1) {
      class="kw">return this.isLegacyRelaxedMoveConstraints.get(var1.getExecutionContext());
   }

   @Nonnull
   class="kw">public EnumSet<RelaxedConstraint> getRelaxedConstraints(@Nonnull BuilderSupport var1) {
      class="kw">return this.relaxedConstraints.get(var1.getExecutionContext());
   }

   class="kw">public boolean isRelaxedConstraintsPresent() {
      class="kw">return this.avoidOrRelaxedPresent[1];
   }

   class="kw">public int getTestsPerTick(@Nonnull BuilderSupport var1) {
      class="kw">return this.testsPerTick.get(var1.getExecutionContext());
   }

   class="kw">public double getDesiredAltitudeWeight(@Nonnull BuilderSupport var1) {
      class="kw">return this.desiredAltitudeWeight.get(var1.getExecutionContext());
   }
}