BuilderActionSpawn class

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

Файл: com/hypixel/hytale/server/npc/corecomponents/lifecycle/builders/BuilderActionSpawn.java

extends: BuilderActionBase

Поля (2)

МодификаторыТипИмя
final double[] DEFAULT_DISTANCE_RANGE
float var2

Методы (16)

МодификаторыВозвратСигнатура
abstract return new ActionSpawnreturn new ActionSpawn(this, var1)
public int[] getCountRangeint[] getCountRange(@Nonnull BuilderSupport var1)
public double[] getDelayRangedouble[] getDelayRange(@Nonnull BuilderSupport var1)
public double[] getDistanceRangedouble[] getDistanceRange(@Nonnull BuilderSupport var1)
public String getFlockString getFlock(@Nonnull BuilderSupport var1)
public String getKindString getKind(@Nonnull BuilderSupport var1)
public PositionSource getPositionSourcePositionSource getPositionSource(@Nonnull BuilderSupport var1)
public float getSpawnAnglefloat getSpawnAngle(@Nonnull BuilderSupport var1)
public float getSpawnDirectionfloat getSpawnDirection(@Nonnull BuilderSupport var1)
public String getSpawnStateString getSpawnState(@Nonnull BuilderSupport var1)
public String getSpawnSubStateString getSpawnSubState(@Nonnull BuilderSupport var1)
public double getSpreaddouble getSpread(@Nonnull BuilderSupport var1)
public boolean isFanOutboolean isFanOut(@Nonnull BuilderSupport var1)
public boolean isJoinFlockboolean isJoinFlock(@Nonnull BuilderSupport var1)
public boolean isLaunchAtTargetboolean isLaunchAtTarget(@Nonnull BuilderSupport var1)
public boolean isPitchHighboolean isPitchHigh(@Nonnull BuilderSupport var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.lifecycle.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.AssetHolder;
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.FloatHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.NumberArrayHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.StringHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.AssetValidator;
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.asset.builder.validators.IntSequenceValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.StringNotEmptyValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.StringNullOrNotEmptyValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.asset.FlockAssetExistsValidator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.PositionSource;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderActionBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.lifecycle.ActionSpawn;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BuilderActionSpawn class="kw">extends BuilderActionBase {
   class="kw">public class="kw">static class="kw">final double[] DEFAULT_DISTANCE_RANGE = new double[]{1.0, 1.0};
   class="kw">public class="kw">static class="kw">final int[] DEFAULT_COUNT_RANGE = new int[]{5, 5};
   class="kw">public class="kw">static class="kw">final double[] DEFAULT_DELAY_RANGE = new double[]{0.25, 0.25};
   class="kw">protected class="kw">final FloatHolder spawnDirection = new FloatHolder();
   class="kw">protected class="kw">final FloatHolder spawnAngle = new FloatHolder();
   class="kw">protected class="kw">final BooleanHolder fanOut = new BooleanHolder();
   class="kw">protected class="kw">final NumberArrayHolder distanceRange = new NumberArrayHolder();
   class="kw">protected class="kw">final NumberArrayHolder countRange = new NumberArrayHolder();
   class="kw">protected class="kw">final NumberArrayHolder delayRange = new NumberArrayHolder();
   class="kw">protected class="kw">final StringHolder kind = new StringHolder();
   class="kw">protected class="kw">final AssetHolder flock = new AssetHolder();
   class="kw">protected class="kw">final BooleanHolder launchAtTarget = new BooleanHolder();
   class="kw">protected class="kw">final BooleanHolder pitchHigh = new BooleanHolder();
   class="kw">protected class="kw">final DoubleHolder spread = new DoubleHolder();
   class="kw">protected class="kw">final BooleanHolder joinFlock = new BooleanHolder();
   class="kw">protected class="kw">final StringHolder spawnState = new StringHolder();
   class="kw">protected class="kw">final StringHolder spawnSubState = new StringHolder();
   class="kw">protected PositionSource positionSource;

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

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

   @Nonnull
   @Override
   class="kw">public String getShortDescription() {
      class="kw">return "Spawn an NPC";
   }

   @Nonnull
   @Override
   class="kw">public String getLongDescription() {
      class="kw">return "Spawn an NPC";
   }

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

   @Nonnull
   class="kw">public BuilderActionSpawn readConfig(@Nonnull JsonElement var1) {
      this.getFloat(
         var1,
         "SpawnDirection",
         this.spawnDirection,
         0.0,
         DoubleRangeValidator.between(-180.0, 180.0),
         BuilderDescriptorState.Experimental,
         "Direction of spawn cone relative to view direction (in degrees)",
         null
      );
      this.getFloat(
         var1,
         "SpawnAngle",
         this.spawnAngle,
         360.0,
         DoubleRangeValidator.between(0.0, 360.0),
         BuilderDescriptorState.Experimental,
         "Cone width of spawn direction (in degrees)",
         null
      );
      this.getBoolean(var1, "FanOut", this.fanOut, false, BuilderDescriptorState.Experimental, "Fan NPCs out equally over angle", null);
      this.getDoubleRange(
         var1,
         "DistanceRange",
         this.distanceRange,
         DEFAULT_DISTANCE_RANGE,
         DoubleSequenceValidator.fromExclToInclWeaklyMonotonic(0.0, 128.0),
         BuilderDescriptorState.Stable,
         "Distance from spawner to spawn",
         null
      );
      this.getIntRange(
         var1,
         "CountRange",
         this.countRange,
         DEFAULT_COUNT_RANGE,
         IntSequenceValidator.fromExclToInclWeaklyMonotonic(0, 100),
         BuilderDescriptorState.Stable,
         "Number of NPCs to spawn",
         null
      );
      this.getDoubleRange(
         var1,
         "DelayRange",
         this.delayRange,
         DEFAULT_DELAY_RANGE,
         DoubleSequenceValidator.betweenWeaklyMonotonic(0.0, Double.MAX_VALUE),
         BuilderDescriptorState.Stable,
         "Time between consecutive spawns in seconds",
         null
      );
      this.requireString(var1, "Kind", this.kind, StringNotEmptyValidator.get(), BuilderDescriptorState.Experimental, "NPC role to spawn", null);
      this.getAsset(
         var1,
         "Flock",
         this.flock,
         null,
         FlockAssetExistsValidator.withConfig(AssetValidator.CanBeEmpty),
         BuilderDescriptorState.Stable,
         "Flock definition to spawn",
         null
      );
      this.getBoolean(
         var1, "LaunchAtTarget", this.launchAtTarget, false, BuilderDescriptorState.WorkInProgress, "Launch the spawned NPC at target position/entity", null
      );
      this.getBoolean(var1, "PitchHigh", this.pitchHigh, true, BuilderDescriptorState.Stable, "If launching at a target, use high pitch", null);
      this.getDouble(
         var1,
         "LaunchSpread",
         this.spread,
         0.0,
         DoubleSingleValidator.greaterEqual0(),
         BuilderDescriptorState.Stable,
         "The radius of the circle centred on the target within which to spread thrown NPCs",
         null
      );
      this.getBoolean(var1, "JoinFlock", this.joinFlock, false, BuilderDescriptorState.Stable, "Whether to join the parent NPC's flock", null);
      this.getString(
         var1,
         "SpawnState",
         this.spawnState,
         null,
         StringNullOrNotEmptyValidator.get(),
         BuilderDescriptorState.Stable,
         "An optional state to set on the spawned NPC if it exists",
         null
      );
      this.getString(
         var1,
         "SpawnSubState",
         this.spawnSubState,
         null,
         StringNullOrNotEmptyValidator.get(),
         BuilderDescriptorState.Stable,
         "An optional substate to set on the spawned NPC if it exists",
         null
      );
      this.positionSource = this.readPositionSource(var1, "Where to spawn relative to: Self (the spawner) or Sensor (the matched position)");
      this.requireFeatureIf(this.launchAtTarget, true, Feature.AnyPosition);
      this.requireIsolatedForEach();
      class="kw">return this;
   }

   class="kw">public float getSpawnDirection(@Nonnull BuilderSupport var1) {
      float var2 = this.spawnDirection.get(var1.getExecutionContext());
      class="kw">return (float) (Math.PI / 180.0) * (var2 < 0.0F ? var2 + (float) (Math.PI * 2) : var2);
   }

   class="kw">public float getSpawnAngle(@Nonnull BuilderSupport var1) {
      class="kw">return (float) (Math.PI / 180.0) * this.spawnAngle.get(var1.getExecutionContext());
   }

   class="kw">public boolean isFanOut(@Nonnull BuilderSupport var1) {
      class="kw">return this.fanOut.get(var1.getExecutionContext());
   }

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

   class="kw">public String getKind(@Nonnull BuilderSupport var1) {
      class="kw">return this.kind.get(var1.getExecutionContext());
   }

   class="kw">public String getFlock(@Nonnull BuilderSupport var1) {
      class="kw">return this.flock.get(var1.getExecutionContext());
   }

   class="kw">public int[] getCountRange(@Nonnull BuilderSupport var1) {
      class="kw">return this.countRange.getIntArray(var1.getExecutionContext());
   }

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

   class="kw">public boolean isLaunchAtTarget(@Nonnull BuilderSupport var1) {
      class="kw">return this.launchAtTarget.get(var1.getExecutionContext());
   }

   class="kw">public boolean isPitchHigh(@Nonnull BuilderSupport var1) {
      class="kw">return this.pitchHigh.get(var1.getExecutionContext());
   }

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

   class="kw">public boolean isJoinFlock(@Nonnull BuilderSupport var1) {
      class="kw">return this.joinFlock.get(var1.getExecutionContext());
   }

   class="kw">public String getSpawnState(@Nonnull BuilderSupport var1) {
      class="kw">return this.spawnState.get(var1.getExecutionContext());
   }

   class="kw">public String getSpawnSubState(@Nonnull BuilderSupport var1) {
      class="kw">return this.spawnSubState.get(var1.getExecutionContext());
   }

   class="kw">public PositionSource getPositionSource(@Nonnull BuilderSupport var1) {
      class="kw">return this.positionSource;
   }
}