BuilderMotionControllerFly class
Пакет: com.hypixel.hytale.server.npc.movement.controllers.builders
Файл: com/hypixel/hytale/server/npc/movement/controllers/builders/BuilderMotionControllerFly.java
extends: BuilderMotionControllerBase
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
private |
double |
minAirSpeed |
|
double |
var2 |
Методы (23)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
MotionControllerFlyreturn new MotionControllerFly(var1, this) |
public |
double |
getAccelerationdouble getAcceleration() |
public |
double |
getDecelerationdouble getDeceleration() |
public |
double |
getDesiredAltitudeWeightdouble getDesiredAltitudeWeight() |
public |
double |
getFastFlyThresholddouble getFastFlyThreshold() |
public |
double |
getGravitydouble getGravity() |
public |
float |
getMaxClimbAnglefloat getMaxClimbAngle() |
public |
double |
getMaxClimbSpeeddouble getMaxClimbSpeed() |
public |
double |
getMaxFallSpeeddouble getMaxFallSpeed() |
public |
double |
getMaxHeightOverGrounddouble getMaxHeightOverGround(@Nonnull BuilderSupport var1) |
public |
double |
getMaxHeightOverGrounddouble getMaxHeightOverGround(@Nonnull ExecutionContext var1) |
public |
float |
getMaxRollAnglefloat getMaxRollAngle() |
public |
float |
getMaxRollSpeedfloat getMaxRollSpeed() |
public |
float |
getMaxSinkAnglefloat getMaxSinkAngle() |
public |
double |
getMaxSinkSpeeddouble getMaxSinkSpeed() |
public |
double |
getMaxSinkSpeedFluiddouble getMaxSinkSpeedFluid() |
public |
float |
getMaxTurnSpeedfloat getMaxTurnSpeed() |
public |
double |
getMinAirSpeeddouble getMinAirSpeed() |
public |
double |
getMinHeightOverGrounddouble getMinHeightOverGround(@Nonnull BuilderSupport var1) |
public |
double |
getMinHeightOverGrounddouble getMinHeightOverGround(@Nonnull ExecutionContext var1) |
public |
float |
getRollDampingfloat getRollDamping() |
|
|
if if(var1.breathesInAir) |
public |
boolean |
isAutoLevelboolean isAutoLevel() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.movement.controllers.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.holder.DoubleHolder;
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.movement.MovementMode;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionControllerFly;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.spawning.SpawnTestResult;
class="kw">import com.hypixel.hytale.server.spawning.SpawningContext;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">public class BuilderMotionControllerFly class="kw">extends BuilderMotionControllerBase {
class="kw">private double minAirSpeed;
class="kw">private double maxClimbSpeed;
class="kw">private double maxSinkSpeed;
class="kw">private double maxSinkSpeedFluid;
class="kw">private double maxFallSpeed;
class="kw">private float maxClimbAngle;
class="kw">private float maxSinkAngle;
class="kw">private double acceleration;
class="kw">private double deceleration;
class="kw">private double gravity;
class="kw">private float maxTurnSpeed;
class="kw">private float maxRollAngle;
class="kw">private float maxRollSpeed;
class="kw">private float rollDamping;
class="kw">private class="kw">final DoubleHolder minHeightOverGround = new DoubleHolder();
class="kw">private class="kw">final DoubleHolder maxHeightOverGround = new DoubleHolder();
class="kw">private double fastFlyThreshold;
class="kw">private boolean autoLevel;
class="kw">private double desiredAltitudeWeight;
class="kw">public BuilderMotionControllerFly() {
}
@Nonnull
class="kw">public MotionControllerFly build(@Nonnull BuilderSupport var1) {
class="kw">return new MotionControllerFly(var1, this);
}
@Nonnull
@Override
class="kw">public String getShortDescription() {
class="kw">return "Flight motion controller";
}
@Nonnull
@Override
class="kw">public String getLongDescription() {
class="kw">return this.getShortDescription();
}
@Nonnull
@Override
class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
class="kw">return BuilderDescriptorState.WorkInProgress;
}
@Nonnull
class="kw">public BuilderMotionControllerFly readConfig(@Nonnull JsonElement var1) {
this.getDouble(
var1,
"MinAirSpeed",
var1x -> this.minAirSpeed = var1x,
0.1,
DoubleSingleValidator.greaterEqual0(),
BuilderDescriptorState.WorkInProgress,
"Minimum in air speed",
null
);
this.getDouble(
var1,
"MaxHorizontalSpeed",
this.maxHorizontalSpeed,
8.0,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum horizontal speed",
null
);
this.getDouble(
var1,
"MaxClimbSpeed",
var1x -> this.maxClimbSpeed = var1x,
6.0,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum climbing speed",
null
);
this.getDouble(
var1,
"MaxSinkSpeed",
var1x -> this.maxSinkSpeed = var1x,
10.0,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum sink/drop speed",
null
);
this.getDouble(
var1,
"MaxFallSpeed",
var1x -> this.maxFallSpeed = var1x,
40.0,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum fall speed",
null
);
this.getDouble(
var1,
"MaxSinkSpeedFluid",
var1x -> this.maxSinkSpeedFluid = var1x,
4.0,
DoubleSingleValidator.greaterEqual0(),
BuilderDescriptorState.Stable,
"Maximum sink/fall speed in fluids",
null
);
this.getFloat(
var1,
"MaxClimbAngle",
var1x -> this.maxClimbAngle = var1x,
45.0F,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum climb angle",
null
);
this.getFloat(
var1,
"MaxSinkAngle",
var1x -> this.maxSinkAngle = var1x,
85.0F,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum sink angle",
null
);
this.getDouble(
var1,
"Acceleration",
var1x -> this.acceleration = var1x,
4.0,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum Acceleration",
null
);
this.getDouble(
var1,
"Deceleration",
var1x -> this.deceleration = var1x,
4.0,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum deceleration",
null
);
this.getDouble(var1, "Gravity", var1x -> this.gravity = var1x, 40.0, DoubleSingleValidator.greater0(), BuilderDescriptorState.Stable, "Gravity", null);
this.getFloat(
var1,
"MaxTurnSpeed",
var1x -> this.maxTurnSpeed = var1x,
180.0F,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum turn speed in degrees per second",
null
);
this.getFloat(
var1,
"MaxRollAngle",
var1x -> this.maxRollAngle = var1x,
45.0F,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum roll angle in degrees",
null
);
this.getFloat(
var1,
"MaxRollSpeed",
var1x -> this.maxRollSpeed = var1x,
180.0F,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum roll speed in degrees per second",
null
);
this.getFloat(
var1,
"RollDamping",
var1x -> this.rollDamping = var1x,
0.9F,
DoubleRangeValidator.between(0.0, 1.0),
BuilderDescriptorState.Stable,
"Roll damping",
null
);
this.getDouble(
var1,
"MinHeightOverGround",
this.minHeightOverGround,
1.0,
DoubleSingleValidator.greaterEqual0(),
BuilderDescriptorState.Stable,
"Minimum height over ground",
null
);
this.getDouble(
var1,
"MaxHeightOverGround",
this.maxHeightOverGround,
20.0,
DoubleSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum height over ground",
null
);
this.getDouble(
var1,
"FastFlyThreshold",
var1x -> this.fastFlyThreshold = var1x,
0.6,
DoubleRangeValidator.between01(),
BuilderDescriptorState.WorkInProgress,
"Relative threshold when fast flying animation should be used",
null
);
this.getBoolean(
var1, "AutoLevel", var1x -> this.autoLevel = var1x, true, BuilderDescriptorState.Stable, "Set pitch to 0 when no steering forces applied", null
);
this.getDouble(
var1,
"DesiredAltitudeWeight",
var1x -> this.desiredAltitudeWeight = var1x,
0.0,
DoubleRangeValidator.between(0.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."
);
class="kw">return this;
}
class="kw">public double getMinAirSpeed() {
class="kw">return this.minAirSpeed;
}
class="kw">public double getMaxClimbSpeed() {
class="kw">return this.maxClimbSpeed;
}
class="kw">public double getMaxSinkSpeed() {
class="kw">return this.maxSinkSpeed;
}
class="kw">public double getMaxFallSpeed() {
class="kw">return this.maxFallSpeed;
}
class="kw">public double getMaxSinkSpeedFluid() {
class="kw">return this.maxSinkSpeedFluid;
}
class="kw">public float getMaxClimbAngle() {
class="kw">return (float) (Math.PI / 180.0) * this.maxClimbAngle;
}
class="kw">public float getMaxSinkAngle() {
class="kw">return (float) (Math.PI / 180.0) * this.maxSinkAngle;
}
class="kw">public double getAcceleration() {
class="kw">return this.acceleration;
}
class="kw">public double getDeceleration() {
class="kw">return this.deceleration;
}
class="kw">public double getGravity() {
class="kw">return this.gravity;
}
class="kw">public float getMaxTurnSpeed() {
class="kw">return (float) (Math.PI / 180.0) * this.maxTurnSpeed;
}
class="kw">public float getMaxRollAngle() {
class="kw">return (float) (Math.PI / 180.0) * this.maxRollAngle;
}
class="kw">public float getMaxRollSpeed() {
class="kw">return (float) (Math.PI / 180.0) * this.maxRollSpeed;
}
class="kw">public float getRollDamping() {
class="kw">return this.rollDamping;
}
class="kw">public double getMinHeightOverGround(@Nonnull BuilderSupport var1) {
class="kw">return this.minHeightOverGround.get(var1.getExecutionContext());
}
class="kw">public double getMaxHeightOverGround(@Nonnull BuilderSupport var1) {
class="kw">return this.maxHeightOverGround.get(var1.getExecutionContext());
}
class="kw">public double getMinHeightOverGround(@Nonnull ExecutionContext var1) {
class="kw">return this.minHeightOverGround.get(var1);
}
class="kw">public double getMaxHeightOverGround(@Nonnull ExecutionContext var1) {
class="kw">return this.maxHeightOverGround.get(var1);
}
class="kw">public double getFastFlyThreshold() {
class="kw">return this.fastFlyThreshold;
}
class="kw">public boolean isAutoLevel() {
class="kw">return this.autoLevel;
}
class="kw">public double getDesiredAltitudeWeight() {
class="kw">return this.desiredAltitudeWeight;
}
@Nonnull
@Override
class="kw">public Class<MotionController> category() {
class="kw">return MotionController.class;
}
@Nonnull
@Override
class="kw">public String getType() {
class="kw">return "Fly";
}
@Nonnull
@Override
class="kw">public SpawnTestResult canSpawn(@Nonnull SpawningContext var1) {
double var2 = this.getMinHeightOverGround(var1.getExecutionContext());
if (!var1.isInAir(var2)) {
class="kw">return SpawnTestResult.FAIL_NO_POSITION;
} else {
class="kw">return var1.validatePosition(22) ? SpawnTestResult.TEST_OK : SpawnTestResult.FAIL_INVALID_POSITION;
}
}
@Override
class="kw">public boolean requiresSpawnDropHeightCheck(@Nonnull SpawningContext var1) {
class="kw">return false;
}
@Override
class="kw">public void getMovementModes(
@Nonnull SpawningContext var1, @Nonnull Set<MovementMode> var2, @Nonnull Set<MovementMode> var3, @Nonnull Set<MovementMode> var4
) {
var2.addAll(MotionControllerFly.SUPPORTED_MOVEMENT_MODES);
var3.addAll(MotionControllerFly.DEFAULT_SPAWN_MOVEMENT_MODES);
if (var1.breathesInAir) {
var4.add(MovementMode.FLY);
}
}
@Nonnull
@Override
class="kw">public Class<? class="kw">extends MotionController> getClassType() {
class="kw">return MotionControllerFly.class;
}
@Nonnull
@Override
class="kw">public Set<MovementMode> getSupportedMovementModes() {
class="kw">return MotionControllerFly.SUPPORTED_MOVEMENT_MODES;
}
}