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