BuilderActionForEach class
Пакет: com.hypixel.hytale.server.npc.corecomponents.utility.builders
Файл: com/hypixel/hytale/server/npc/corecomponents/utility/builders/BuilderActionForEach.java
extends: BuilderActionSequence
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
DEFAULT_MAX_TARGETS |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
ActionForEachreturn new ActionForEach(this, var1) |
public |
int |
getMaxTargetsint getMaxTargets(@Nonnull BuilderSupport var1) |
public |
int[] |
getTargetCountRangeint[] getTargetCountRange(@Nonnull BuilderSupport var1) |
|
|
if if(this.instructionContextHelper != null) |
|
|
if if(this.instructionContextHelper != null) |
public |
boolean |
isClearOncePerTargetboolean isClearOncePerTarget(@Nonnull BuilderSupport var1) |
public |
boolean |
isIsolatePerTargetboolean isIsolatePerTarget(@Nonnull BuilderSupport var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.utility.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.BooleanHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.IntHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.NumberArrayHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.IntSequenceValidator;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.IntSingleValidator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.utility.ActionForEach;
class="kw">import javax.annotation.Nonnull;
class="kw">public class BuilderActionForEach class="kw">extends BuilderActionSequence {
class="kw">private class="kw">static class="kw">final int DEFAULT_MAX_TARGETS = 16;
class="kw">private class="kw">static class="kw">final int[] DEFAULT_TARGET_COUNT = new int[]{-1, -1};
class="kw">protected class="kw">final IntHolder maxTargets = new IntHolder();
class="kw">protected class="kw">final NumberArrayHolder targetCount = new NumberArrayHolder();
class="kw">protected class="kw">final BooleanHolder clearOncePerTarget = new BooleanHolder();
class="kw">protected boolean isolatePerTarget;
class="kw">public BuilderActionForEach() {
}
@Nonnull
class="kw">public ActionForEach build(@Nonnull BuilderSupport var1) {
class="kw">return new ActionForEach(this, var1);
}
@Nonnull
@Override
class="kw">public String getShortDescription() {
class="kw">return "Runs its actions once for each target the sensor matched";
}
@Nonnull
@Override
class="kw">public String getLongDescription() {
class="kw">return "Runs its nested actions once per matched target/position. Requires a sensor that exposes a multi-target set.";
}
@Nonnull
@Override
class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
class="kw">return BuilderDescriptorState.Experimental;
}
@Nonnull
class="kw">public BuilderActionForEach readConfig(@Nonnull JsonElement var1) {
this.getBoolean(
var1,
"IsolatePerTarget",
var1x -> this.isolatePerTarget = var1x,
false,
BuilderDescriptorState.Stable,
"Give each target (keyed by entity UUID) its own action-instance so deferred/stateful nested actions don't clobber each other across targets.",
null
);
this.requireIsolatedForEachIf("IsolatePerTarget", true, this.isolatePerTarget);
if (this.instructionContextHelper != null) {
this.instructionContextHelper.pushForEach(this.isolatePerTarget);
}
this.requireObject(var1, "Actions", this.actions, BuilderDescriptorState.Stable, "Actions to run for each matched target", null, this.validationHelper);
if (this.instructionContextHelper != null) {
this.instructionContextHelper.popForEach();
}
this.getInt(
var1,
"MaxTargets",
this.maxTargets,
16,
IntSingleValidator.greater0(),
BuilderDescriptorState.Stable,
"Maximum number of targets to run the actions for in a single tick",
null
);
this.getIntRange(
var1,
"TargetCount",
this.targetCount,
DEFAULT_TARGET_COUNT,
IntSequenceValidator.betweenWeaklyMonotonic(-1, Integer.MAX_VALUE),
BuilderDescriptorState.Stable,
"Pick a random number of the matched targets each tick instead of running every one.",
null
);
this.getBoolean(
var1,
"ClearOncePerTarget",
this.clearOncePerTarget,
true,
BuilderDescriptorState.Stable,
"Reset Once actions between targets so they fire for every target rather than only the first",
null
);
this.requireFeature(Feature.AnyPosition);
class="kw">return this;
}
class="kw">public int getMaxTargets(@Nonnull BuilderSupport var1) {
class="kw">return this.maxTargets.get(var1.getExecutionContext());
}
class="kw">public int[] getTargetCountRange(@Nonnull BuilderSupport var1) {
class="kw">return this.targetCount.getIntArray(var1.getExecutionContext());
}
class="kw">public boolean isClearOncePerTarget(@Nonnull BuilderSupport var1) {
class="kw">return this.clearOncePerTarget.get(var1.getExecutionContext());
}
class="kw">public boolean isIsolatePerTarget(@Nonnull BuilderSupport var1) {
class="kw">return this.isolatePerTarget;
}
}