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