BuilderActionDropItem class
Пакет: com.hypixel.hytale.server.npc.corecomponents.items.builders
Файл: com/hypixel/hytale/server/npc/corecomponents/items/builders/BuilderActionDropItem.java
extends: BuilderActionWithDelay
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double[] |
DEFAULT_THROW_DISTANCE |
|
boolean |
var6 |
|
|
var6 |
|
Model |
var7 |
|
float |
var8 |
|
double |
var9 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
ActionDropItemreturn new ActionDropItem(this, var1) |
public |
double[] |
getDistancedouble[] getDistance() |
public |
String |
getDropListString getDropList(@Nonnull BuilderSupport var1) |
public |
double[] |
getDropSectorRadiansdouble[] getDropSectorRadians() |
public |
String |
getItemString getItem(@Nonnull BuilderSupport var1) |
public |
float |
getThrowSpeedfloat getThrowSpeed() |
|
|
if if(var9 > this.throwSpeed) |
public |
boolean |
isHighPitchboolean isHighPitch() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.items.builders;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
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.InstructionType;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.AssetHolder;
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.asset.ItemDropListExistsValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.asset.ItemExistsValidator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderActionWithDelay;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.items.ActionDropItem;
class="kw">import com.hypixel.hytale.server.npc.instructions.Action;
class="kw">import com.hypixel.hytale.server.npc.util.AimingHelper;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.Scope;
class="kw">import com.hypixel.hytale.server.npc.validators.NPCLoadTimeValidationHelper;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">public class BuilderActionDropItem class="kw">extends BuilderActionWithDelay {
class="kw">public class="kw">static class="kw">final double[] DEFAULT_THROW_DISTANCE = new double[]{1.0, 1.0};
class="kw">public class="kw">static class="kw">final double[] DEFAULT_DROP_SECTOR = new double[]{0.0, 0.0};
class="kw">protected class="kw">final AssetHolder item = new AssetHolder();
class="kw">protected class="kw">final AssetHolder dropList = new AssetHolder();
class="kw">protected float throwSpeed;
class="kw">protected double[] distance;
class="kw">protected double[] dropSector;
class="kw">protected boolean highPitch;
class="kw">public BuilderActionDropItem() {
}
@Nonnull
@Override
class="kw">public String getShortDescription() {
class="kw">return "Drop an item";
}
@Nonnull
@Override
class="kw">public String getLongDescription() {
class="kw">return "Drop an item. Can be a specific item, or from a drop table";
}
@Nonnull
class="kw">public Action build(@Nonnull BuilderSupport var1) {
class="kw">return new ActionDropItem(this, var1);
}
@Nonnull
class="kw">public BuilderActionDropItem readConfig(@Nonnull JsonElement var1) {
this.getAsset(
var1,
"Item",
this.item,
null,
ItemExistsValidator.withConfig(AssetValidator.CanBeEmpty),
BuilderDescriptorState.Stable,
"A specific item to drop",
null
);
this.getAsset(
var1,
"DropList",
this.dropList,
null,
ItemDropListExistsValidator.withConfig(AssetValidator.CanBeEmpty),
BuilderDescriptorState.Stable,
"A reference to an item drop list",
null
);
this.getFloat(
var1,
"ThrowSpeed",
var1x -> this.throwSpeed = var1x,
1.0F,
DoubleRangeValidator.fromExclToIncl(0.0, Float.MAX_VALUE),
BuilderDescriptorState.Stable,
"The throw speed to use",
null
);
this.getDoubleRange(
var1,
"Distance",
var1x -> this.distance = var1x,
DEFAULT_THROW_DISTANCE,
DoubleSequenceValidator.betweenWeaklyMonotonic(0.0, Double.MAX_VALUE),
BuilderDescriptorState.Stable,
"The range from which to pick a distance to throw the item",
null
);
this.getDoubleRange(
var1,
"DropSector",
var1x -> this.dropSector = var1x,
DEFAULT_DROP_SECTOR,
DoubleSequenceValidator.betweenWeaklyMonotonic(-360.0, 360.0),
BuilderDescriptorState.Stable,
"The sector to spread drops in relative to view direction of NPC",
"The sector to spread drops in relative to view direction of NPC in degrees."
);
this.getBoolean(
var1, "PitchHigh", var1x -> this.highPitch = var1x, false, BuilderDescriptorState.Stable, "Whether to pitch high or pitch low instead", null
);
this.validateOneSetAsset(this.item, this.dropList);
this.requireInstructionType(InstructionType.NPCOnlyInstructions);
class="kw">return this;
}
@Nonnull
@Override
class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
class="kw">return BuilderDescriptorState.Stable;
}
@Override
class="kw">public boolean validate(String var1, @Nonnull NPCLoadTimeValidationHelper var2, ExecutionContext var3, Scope var4, @Nonnull List<String> var5) {
boolean var6 = super.validate(var1, var2, var3, var4, var5);
Model var7 = var2.getSpawnModel();
float var8 = var7.getEyeHeight();
double var9 = AimingHelper.ensurePossibleThrowSpeed(this.distance[1], var8, 32.0, this.throwSpeed);
if (var9 > this.throwSpeed) {
var5.add(
String.format(
"%s: Throw speed %.2f is too low to achieve distance of %.2f in DropItem action. Needs to be at least %.2f",
var1,
this.throwSpeed,
this.distance[1],
Math.ceil(var9 * 100.0) / 100.0
)
);
var6 = false;
}
class="kw">return var6;
}
class="kw">public String getItem(@Nonnull BuilderSupport var1) {
class="kw">return this.item.get(var1.getExecutionContext());
}
class="kw">public String getDropList(@Nonnull BuilderSupport var1) {
class="kw">return this.dropList.get(var1.getExecutionContext());
}
class="kw">public float getThrowSpeed() {
class="kw">return this.throwSpeed;
}
class="kw">public double[] getDropSectorRadians() {
class="kw">return this.dropSector;
}
class="kw">public double[] getDistance() {
class="kw">return this.distance;
}
class="kw">public boolean isHighPitch() {
class="kw">return this.highPitch;
}
}