StateTransition class
Пакет: com.hypixel.hytale.server.npc.statetransition.builders
Файл: com/hypixel/hytale/server/npc/statetransition/builders/BuilderStateTransition.java
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final ActionList |
actions |
|
private final List<BuilderStateTransitionEdges.StateTransitionEdges> |
stateTransitionEdges |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public ActionList |
getActionspublic ActionList getActions() |
|
public List<BuilderStateTransitionEdges.StateTransitionEdges> |
getStateTransitionEdgespublic List<BuilderStateTransitionEdges.StateTransitionEdges> getStateTransitionEdges() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.statetransition.builders;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Builder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderBase;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderDescriptorState;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderObjectReferenceHelper;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderObjectStaticListHelper;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.BooleanHolder;
class="kw">import com.hypixel.hytale.server.npc.instructions.ActionList;
class="kw">import com.hypixel.hytale.server.npc.statetransition.StateTransitionController;
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.BitSet;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BuilderStateTransition class="kw">extends BuilderBase<BuilderStateTransition.StateTransition> {
class="kw">protected class="kw">final BuilderObjectStaticListHelper<BuilderStateTransitionEdges.StateTransitionEdges> stateTransitionEdges = new BuilderObjectStaticListHelper<>(
BuilderStateTransitionEdges.StateTransitionEdges.class, this
);
class="kw">protected class="kw">final BuilderObjectReferenceHelper<ActionList> actions = new BuilderObjectReferenceHelper<>(ActionList.class, this);
class="kw">protected class="kw">final BooleanHolder enabled = new BooleanHolder();
class="kw">public BuilderStateTransition() {
}
@Nonnull
@Override
class="kw">public String getShortDescription() {
class="kw">return "An entry containing a list of actions to execute when moving from one state to another";
}
@Nonnull
@Override
class="kw">public String getLongDescription() {
class="kw">return this.getShortDescription();
}
@Nonnull
class="kw">public BuilderStateTransition.StateTransition build(@Nonnull BuilderSupport var1) {
class="kw">return new BuilderStateTransition.StateTransition(this, var1);
}
@Nonnull
@Override
class="kw">public Class<BuilderStateTransition.StateTransition> category() {
class="kw">return BuilderStateTransition.StateTransition.class;
}
@Nonnull
@Override
class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
class="kw">return BuilderDescriptorState.Stable;
}
@Override
class="kw">public boolean isEnabled(ExecutionContext var1) {
class="kw">return this.enabled.get(var1);
}
@Nonnull
@Override
class="kw">public Builder<BuilderStateTransition.StateTransition> readConfig(@Nonnull JsonElement var1) {
this.requireArray(
var1, "States", this.stateTransitionEdges, null, BuilderDescriptorState.Stable, "List of state transitions", null, this.validationHelper
);
this.requireObject(var1, "Actions", this.actions, BuilderDescriptorState.Stable, "List of actions", null, this.validationHelper);
this.getBoolean(var1, "Enabled", this.enabled, true, BuilderDescriptorState.Stable, "Whether this sensor should be enabled on the NPC", null);
class="kw">return this;
}
@Override
class="kw">public boolean validate(String var1, @Nonnull NPCLoadTimeValidationHelper var2, @Nonnull ExecutionContext var3, Scope var4, @Nonnull List<String> var5) {
boolean var6 = super.validate(var1, var2, var3, var4, var5)
& this.stateTransitionEdges.validate(var1, var2, this.builderManager, var3, var4, var5)
& this.actions.validate(var1, var2, this.builderManager, var3, var4, var5);
List var7 = this.stateTransitionEdges.staticBuild(this.builderManager);
BitSet var8 = new BitSet();
int[] var9 = this.stateHelper.getAllMainStates();
for (BuilderStateTransitionEdges.StateTransitionEdges var11 : var7) {
for (int var15 : var11.getFromStateIndices() != null ? var11.getFromStateIndices() : var9) {
for (int var19 : var11.getToStateIndices() != null ? var11.getToStateIndices() : var9) {
int var20 = StateTransitionController.indexStateTransitionEdge(var15, var19);
if (var8.get(var20)) {
var5.add(
String.format(
"Cannot define the same edge twice in state transitions: %s -> %s!",
this.stateHelper.getStateName(var15),
this.stateHelper.getStateName(var19)
)
);
var6 = false;
} else {
var8.set(var20);
}
}
}
}
class="kw">return var6;
}
@Nullable
class="kw">public List<BuilderStateTransitionEdges.StateTransitionEdges> getStateTransitionEdges(@Nonnull BuilderSupport var1) {
class="kw">return this.stateTransitionEdges.build(var1);
}
@Nonnull
class="kw">public ActionList getActionList(@Nonnull BuilderSupport var1) {
ActionList var2 = this.actions.build(var1);
if (var2 != ActionList.EMPTY_ACTION_LIST) {
var2.setAtomic(false);
var2.setBlocking(true);
}
class="kw">return var2;
}
class="kw">public class="kw">static class StateTransition {
@Nullable
class="kw">private class="kw">final List<BuilderStateTransitionEdges.StateTransitionEdges> stateTransitionEdges;
@Nonnull
class="kw">private class="kw">final ActionList actions;
class="kw">private StateTransition(@Nonnull BuilderStateTransition var1, @Nonnull BuilderSupport var2) {
this.stateTransitionEdges = var1.getStateTransitionEdges(var2);
this.actions = var1.getActionList(var2);
}
@Nullable
class="kw">public List<BuilderStateTransitionEdges.StateTransitionEdges> getStateTransitionEdges() {
class="kw">return this.stateTransitionEdges;
}
@Nonnull
class="kw">public ActionList getActions() {
class="kw">return this.actions;
}
}
}