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