JumpToRandomIndex class

Пакет: com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential.flowcontrol

Файл: com/hypixel/hytale/builtin/buildertools/scriptedbrushes/operations/sequential/flowcontrol/JumpToRandomIndex.java

extends: SequenceBrushOperation

Поля (3)

МодификаторыТипИмя
final BuilderCodec<JumpToRandomIndex> CODEC
ArrayList var1
String var5

Методы (5)

МодификаторыВозвратСигнатура
for for(PairCodec.IntegerStringPair var6 : var1)
if if(var1 != null && var1.length != 0)
if if(var0.variableNameArg == null)
if if(this.variableNameArg != null)
abstract super super("Jump to Random Stored Index", "Jump the stack execution to a random location in the stack using the specified weights and saved index names", false)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential.flowcontrol;

class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfig;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfigCommandExecutor;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.system.SequenceBrushOperation;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.common.map.WeightedMap;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.server.core.codec.PairCodec;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.Pair;
class="kw">import java.util.ArrayList;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class JumpToRandomIndex class="kw">extends SequenceBrushOperation {
   class="kw">public class="kw">static class="kw">final BuilderCodec<JumpToRandomIndex> CODEC = BuilderCodec.builder(JumpToRandomIndex.class, JumpToRandomIndex::new)
      .append(
         new KeyedCodec<>("WeightedListOfIndexNames", new ArrayCodec<>(PairCodec.IntegerStringPair.CODEC, PairCodec.IntegerStringPair[]::new)),
         (var0, var1) -> {
            if (var1 != null && var1.length != 0) {
               WeightedMap.Builder var2 = WeightedMap.builder(new String[0]);

               for (PairCodec.IntegerStringPair var6 : var1) {
                  var2.put(var6.getRight(), var6.getLeft().doubleValue());
               }

               var0.variableNameArg = var2.build();
            } else {
               var0.variableNameArg = null;
            }
         },
         var0 -> {
            if (var0.variableNameArg == null) {
               class="kw">return new PairCodec.IntegerStringPair[0];
            }

            ArrayList var1 = new ArrayList<>();
            var0.variableNameArg.forEachEntry((var1x, var2) -> var1.add(PairCodec.IntegerStringPair.fromPair(Pair.of((int)var2, var1x))));
            class="kw">return var1.toArray(new PairCodec.IntegerStringPair[0]);
         }
      )
      .documentation("A weighted list of weights and their corresponding index names")
      .add()
      .documentation("Jump the stack execution to a random location in the stack using the specified weights and saved index names")
      .build();
   @Nullable
   class="kw">public IWeightedMap<String> variableNameArg = null;

   class="kw">public JumpToRandomIndex() {
      super(
         "Jump to Random Stored Index", "Jump the stack execution to a random location in the stack using the specified weights and saved index names", false
      );
   }

   @Override
   class="kw">public void modifyBrushConfig(
      @Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
   ) {
      if (this.variableNameArg != null) {
         String var5 = this.variableNameArg.get(var2.getRandom());
         var3.loadOperatingIndex(var5);
      }
   }
}