AppendMaskFromToolArgOperation class

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

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

extends: SequenceBrushOperation

Поля (13)

МодификаторыТипИмя
final BuilderCodec<AppendMaskFromToolArgOperation> CODEC
ArrayList var11
String var12
int var17
String var18
BlockFilter var20
BlockMask var22
String var25
BuilderTool var5
ItemStack var6
BuilderTool.ArgData var7
Map var8
Object var9

Методы (3)

МодификаторыВозвратСигнатура
if if(var5 == null)
if if(var6 == null)
abstract super super("Append Mask From Tool Arg", "Append a mask from a Block tool arg with configurable filter type", false)

Исходный код

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

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.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.BuilderTool;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockFilter;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockMask;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class AppendMaskFromToolArgOperation class="kw">extends SequenceBrushOperation {
   class="kw">public class="kw">static class="kw">final BuilderCodec<AppendMaskFromToolArgOperation> CODEC = BuilderCodec.builder(
         AppendMaskFromToolArgOperation.class, AppendMaskFromToolArgOperation::new
      )
      .append(new KeyedCodec<>("ArgName", Codec.STRING, true), (var0, var1) -> var0.argNameArg = var1, var0 -> var0.argNameArg)
      .documentation("The name of the Block tool arg to read the material from")
      .add()
      .<BlockFilter.FilterType>append(
         new KeyedCodec<>("FilterType", new EnumCodec<>(BlockFilter.FilterType.class)), (var0, var1) -> var0.filterTypeArg = var1, var0 -> var0.filterTypeArg
      )
      .documentation("The type of block filter mask to apply (e.g., TARGET_BLOCK, ABOVE_BLOCK, BELOW_BLOCK)")
      .add()
      .<Boolean>append(new KeyedCodec<>("Invert", Codec.BOOLEAN, true), (var0, var1) -> var0.invertArg = var1, var0 -> var0.invertArg)
      .documentation("Whether to invert the block filter mask or not")
      .add()
      .<String>append(new KeyedCodec<>("AdditionalBlocks", Codec.STRING), (var0, var1) -> var0.additionalBlocksArg = var1, var0 -> var0.additionalBlocksArg)
      .documentation("Additional block names to append to the mask, comma separated (e.g., Rock_Stone,Rock_Granite)")
      .add()
      .documentation("Append a mask from a Block tool arg with configurable filter type and optional additional blocks")
      .build();
   @Nonnull
   class="kw">public String argNameArg = "";
   class="kw">public boolean invertArg = false;
   @Nonnull
   class="kw">public BlockFilter.FilterType filterTypeArg = BlockFilter.FilterType.TargetBlock;
   @Nullable
   class="kw">public String additionalBlocksArg;

   class="kw">public AppendMaskFromToolArgOperation() {
      super("Append Mask From Tool Arg", "Append a mask from a Block tool arg with configurable filter type", false);
   }

   @Override
   class="kw">public void modifyBrushConfig(
      @Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
   ) {
      BuilderTool var5 = BuilderTool.getActiveBuilderTool(var1, var4);
      if (var5 == null) {
         var2.setErrorFlag("AppendMaskFromToolArg: No active builder tool");
      } else {
         ItemStack var6 = InventoryComponent.getItemInHand(var4, var1);
         if (var6 == null) {
            var2.setErrorFlag("AppendMaskFromToolArg: No item in hand");
         } else {
            BuilderTool.ArgData var7 = var5.getItemArgData(var6);
            Map var8 = var7.tool();
            if (var8 != null && var8.containsKey(this.argNameArg)) {
               Object var9 = var8.get(this.argNameArg);
               if (!(var9 class="kw">instanceof BlockPattern var10)) {
                  var2.setErrorFlag(
                     "AppendMaskFromToolArg: Tool arg '" + this.argNameArg + "' is not a Block type (found " + var9.getClass().getSimpleName() + ")"
                  );
               } else {
                  ArrayList var11 = new ArrayList();
                  String var12 = var10.toString();
                  if (!var12.isEmpty() && !var12.equals("-")) {
                     for (String var16 : var12.split(",", 0)) {
                        int var17 = var16.indexOf(37);
                        String var18 = var17 >= 0 ? var16.substring(var17 + 1) : var16;
                        if (!var18.isEmpty()) {
                           var11.add(var18);
                        }
                     }
                  }

                  if (this.additionalBlocksArg != null && !this.additionalBlocksArg.isEmpty()) {
                     for (String var24 : this.additionalBlocksArg.split(",", 0)) {
                        String var25 = var24.trim();
                        if (!var25.isEmpty()) {
                           var11.add(var25);
                        }
                     }
                  }

                  if (var11.isEmpty()) {
                     var2.setErrorFlag("AppendMaskFromToolArg: No blocks to add to mask");
                  } else {
                     BlockFilter var20 = new BlockFilter(this.filterTypeArg, var11.toArray(new String[0]), this.invertArg);
                     BlockMask var22 = new BlockMask(new BlockFilter[]{var20});
                     var2.appendOperationMask(var22);
                  }
               }
            } else {
               var2.setErrorFlag("AppendMaskFromToolArg: Tool arg '" + this.argNameArg + "' not found");
            }
         }
      }
   }
}