BuilderStateTransition class

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

Файл: com/hypixel/hytale/server/npc/statetransition/builders/BuilderStateTransition.java

extends: BuilderBase<BuilderStateTransition.StateTransition>

Поля (10)

МодификаторыТипИмя
private final ActionList actions
final BuilderObjectStaticListHelper<BuilderStateTransitionEdges.StateTransitionEdges> stateTransitionEdges
private final List<BuilderStateTransitionEdges.StateTransitionEdges> stateTransitionEdges
ActionList var2
int var20
boolean var6
var6
List var7
BitSet var8
int[] var9

Методы (5)

МодификаторыВозвратСигнатура
private StateTransitionprivate StateTransition(@Nonnull BuilderStateTransition var1, @Nonnull BuilderSupport var2)
for for(BuilderStateTransitionEdges.StateTransitionEdges var11 : var7)
public ActionList getActionspublic ActionList getActions()
public List<BuilderStateTransitionEdges.StateTransitionEdges> getStateTransitionEdgespublic List<BuilderStateTransitionEdges.StateTransitionEdges> getStateTransitionEdges()
if if(var2 != ActionList.EMPTY_ACTION_LIST)

Исходный код

Показать/скрыть
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;
      }
   }
}