BuilderBodyMotionMaintainDistance class

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

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

extends: BuilderBodyMotionBase

Поля (2)

МодификаторыТипИмя
final String MIN_RANGE_PARAMETER
boolean var6

Методы (9)

МодификаторыВозвратСигнатура
abstract return new BodyMotionMaintainDistancereturn new BodyMotionMaintainDistance(this, var1)
public double[] getDesiredDistanceRangedouble[] getDesiredDistanceRange(@Nonnull BuilderSupport var1)
public double getMoveThresholddouble getMoveThreshold(@Nonnull BuilderSupport var1)
public double getMoveTowardsSlowdownThresholddouble getMoveTowardsSlowdownThreshold(@Nonnull BuilderSupport var1)
public double getRelativeBackwardsSpeeddouble getRelativeBackwardsSpeed(@Nonnull BuilderSupport var1)
public double getRelativeForwardsSpeeddouble getRelativeForwardsSpeed(@Nonnull BuilderSupport var1)
public double[] getStrafingDurationRangedouble[] getStrafingDurationRange(@Nonnull BuilderSupport var1)
public double[] getStrafingFrequencyRangedouble[] getStrafingFrequencyRange(@Nonnull BuilderSupport var1)
public double getTargetDistanceFactordouble getTargetDistanceFactor(@Nonnull BuilderSupport var1)

Исходный код

Показать/скрыть
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.BuilderDescriptorState;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Feature;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.DoubleHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.NumberArrayHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.DoubleRangeValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.DoubleSequenceValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.DoubleSingleValidator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderBodyMotionBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.movement.BodyMotionMaintainDistance;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionControllerWalk;
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">public class BuilderBodyMotionMaintainDistance class="kw">extends BuilderBodyMotionBase {
   class="kw">public class="kw">static class="kw">final String MIN_RANGE_PARAMETER = "MinRange";
   class="kw">public class="kw">static class="kw">final String MAX_RANGE_PARAMETER = "MaxRange";
   class="kw">public class="kw">static class="kw">final String POSITIONING_ANGLE_PARAMETER = "PositioningAngle";
   class="kw">public class="kw">static class="kw">final double NO_POSITIONING = Double.MAX_VALUE;
   class="kw">public class="kw">static class="kw">final double[] DEFAULT_STRAFING_DURATION_RANGE = new double[]{0.0, 0.0};
   class="kw">public class="kw">static class="kw">final double[] DEFAULT_STRAFING_FREQUENCY_RANGE = new double[]{2.0, 2.0};
   class="kw">protected class="kw">final NumberArrayHolder desiredDistanceRange = new NumberArrayHolder();
   class="kw">protected class="kw">final DoubleHolder targetDistanceFactor = new DoubleHolder();
   class="kw">protected class="kw">final DoubleHolder moveThreshold = new DoubleHolder();
   class="kw">protected class="kw">final DoubleHolder relativeForwardsSpeed = new DoubleHolder();
   class="kw">protected class="kw">final DoubleHolder relativeBackwardsSpeed = new DoubleHolder();
   class="kw">protected class="kw">final DoubleHolder moveTowardsSlowdownThreshold = new DoubleHolder();
   class="kw">protected class="kw">final NumberArrayHolder strafingDurationRange = new NumberArrayHolder();
   class="kw">protected class="kw">final NumberArrayHolder strafingFrequencyRange = new NumberArrayHolder();

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

   @Nonnull
   class="kw">public BodyMotionMaintainDistance build(@Nonnull BuilderSupport var1) {
      class="kw">return new BodyMotionMaintainDistance(this, var1);
   }

   @Nonnull
   @Override
   class="kw">public String getShortDescription() {
      class="kw">return "Maintain distance from a given position";
   }

   @Nonnull
   @Override
   class="kw">public String getLongDescription() {
      class="kw">return this.getShortDescription();
   }

   @Nonnull
   @Override
   class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
      class="kw">return BuilderDescriptorState.Stable;
   }

   @Nonnull
   class="kw">public BuilderBodyMotionMaintainDistance readConfig(@Nonnull JsonElement var1) {
      this.requireDoubleRange(
         var1,
         "DesiredDistanceRange",
         this.desiredDistanceRange,
         DoubleSequenceValidator.betweenWeaklyMonotonic(-Double.MAX_VALUE, Double.MAX_VALUE),
         BuilderDescriptorState.Stable,
         "The desired distance to remain at.",
         null
      );
      this.getDouble(
         var1,
         "TargetDistanceFactor",
         this.targetDistanceFactor,
         0.5,
         DoubleRangeValidator.between(0.0, 1.0),
         BuilderDescriptorState.Stable,
         "A factor used to decide what distance to move to within the target range.",
         "A factor used to decide what distance to move to within the target range when the target falls outside of it. 0 will result in moving the shortest distance to fall within the range, 1 the furthest distance, and 0.5 roughly the middle of the range."
      );
      this.getDouble(
         var1,
         "MoveThreshold",
         this.moveThreshold,
         1.0,
         DoubleSingleValidator.greater0(),
         BuilderDescriptorState.Stable,
         "An extra threshold distance on either side of the desired range before the NPC will trigger movement.",
         null
      );
      this.getDouble(
         var1,
         "RelativeForwardsSpeed",
         this.relativeForwardsSpeed,
         1.0,
         DoubleRangeValidator.fromExclToIncl(0.0, 2.0),
         BuilderDescriptorState.Stable,
         "Maximum relative speed for the NPC moving forwards",
         null
      );
      this.getDouble(
         var1,
         "RelativeBackwardsSpeed",
         this.relativeBackwardsSpeed,
         1.0,
         DoubleRangeValidator.fromExclToIncl(0.0, 2.0),
         BuilderDescriptorState.Stable,
         "Maximum relative speed for the NPC moving backwards",
         null
      );
      this.getDouble(
         var1,
         "MoveTowardsSlowdownThreshold",
         this.moveTowardsSlowdownThreshold,
         2.0,
         DoubleSingleValidator.greaterEqual0(),
         BuilderDescriptorState.Stable,
         "The distance away from the target stopping point at which the NPC will start to slow down while moving towards the target",
         null
      );
      this.getDoubleRange(
         var1,
         "StrafingDurationRange",
         this.strafingDurationRange,
         DEFAULT_STRAFING_DURATION_RANGE,
         DoubleSequenceValidator.betweenWeaklyMonotonic(0.0, Double.MAX_VALUE),
         BuilderDescriptorState.Stable,
         "How long to strafe for.",
         "How long to strafe for (moving left or right around the target). If set to [ 0, 0 ], will not move horizontally at all."
      );
      this.getDoubleRange(
         var1,
         "StrafingFrequencyRange",
         this.strafingFrequencyRange,
         DEFAULT_STRAFING_FREQUENCY_RANGE,
         DoubleSequenceValidator.fromExclToInclWeaklyMonotonic(0.0, Double.MAX_VALUE),
         BuilderDescriptorState.Stable,
         "How frequently to execute strafing",
         null
      );
      this.requireFeature(Feature.AnyPosition);
      class="kw">return this;
   }

   @Override
   class="kw">public boolean validate(String var1, @Nonnull NPCLoadTimeValidationHelper var2, ExecutionContext var3, Scope var4, @Nonnull List<String> var5) {
      boolean var6 = super.validate(var1, var2, var3, var4, var5);
      var2.requireMotionControllerType(MotionControllerWalk.class);
      class="kw">return var6;
   }

   class="kw">public double[] getDesiredDistanceRange(@Nonnull BuilderSupport var1) {
      class="kw">return this.desiredDistanceRange.get(var1.getExecutionContext());
   }

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

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

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

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

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

   class="kw">public double[] getStrafingDurationRange(@Nonnull BuilderSupport var1) {
      class="kw">return this.strafingDurationRange.get(var1.getExecutionContext());
   }

   class="kw">public double[] getStrafingFrequencyRange(@Nonnull BuilderSupport var1) {
      class="kw">return this.strafingFrequencyRange.get(var1.getExecutionContext());
   }
}