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