RunCommandOperation class

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

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

extends: SequenceBrushOperation

Поля (10)

МодификаторыТипИмя
final BuilderCodec<RunCommandOperation> CODEC
PlayerRef var11
String var5
var5
var5
var5
Vector3i var6
Matcher var7
String var8
String var9

Методы (1)

МодификаторыВозвратСигнатура
abstract super super("runCommand", "Runs a command, see help for argument replacements", false)

Исходный код

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

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.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandManager;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.regex.Matcher;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class RunCommandOperation class="kw">extends SequenceBrushOperation {
   class="kw">public class="kw">static class="kw">final BuilderCodec<RunCommandOperation> CODEC = BuilderCodec.builder(RunCommandOperation.class, RunCommandOperation::new)
      .append(new KeyedCodec<>("CommandToRun", Codec.STRING), (var0, var1) -> var0.commandArg = var1, var0 -> var0.commandArg)
      .documentation(
         "Runs a command, substituting the strings... \n'{x}', '{y}', and '{z}' for the origin coordinates\n'{radius}' with width/2, '{width}' with width, and '{height}' with height\n'{var:<persistent variable name>} with the value of the persistent variable'"
      )
      .add()
      .documentation("Runs a command, see help for argument replacements")
      .build();
   class="kw">private String commandArg = "";
   class="kw">private class="kw">static class="kw">final Pattern regexBracketPattern = Pattern.compile("\\{var:(\\w*)}");

   class="kw">public RunCommandOperation() {
      super("runCommand", "Runs a command, see help for argument replacements", false);
   }

   @Override
   class="kw">public void modifyBrushConfig(
      @Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
   ) {
      String var5 = this.commandArg;
      if (var5.startsWith("/")) {
         var5 = var5.substring(1);
      }

      Vector3i var6 = var2.getOrigin();
      var5 = var5.replace("{x}", String.valueOf(var6.x))
         .replace("{y}", String.valueOf(var6.y))
         .replace("{z}", String.valueOf(var6.z))
         .replace("{width}", String.valueOf(var2.getShapeWidth()))
         .replace("{height}", String.valueOf(var2.getShapeHeight()))
         .replace("{radius}", String.valueOf(var2.getShapeWidth() / 2.0));
      Matcher var7 = regexBracketPattern.matcher(var5);

      while (var7.find()) {
         String var8 = var5.substring(var7.start(1), var7.end(1));
         String var9 = String.valueOf(var3.getPersistentVariableOrDefault(var8, Integer.MIN_VALUE));
         var5 = var5.replaceFirst(regexBracketPattern.pattern(), var9);
      }

      PlayerRef var11 = var4.getComponent(var1, PlayerRef.getComponentType());
      assert var11 != null;
      CommandManager.get().handleCommand(var11, var5);
   }
}