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