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