LayerOperation class
Пакет: com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential
Файл: com/hypixel/hytale/builtin/buildertools/scriptedbrushes/operations/sequential/LayerOperation.java
extends: SequenceBrushOperation
Поля (11)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<LayerOperation> |
CODEC |
|
PlayerRef |
var10 |
|
BuilderToolsPlugin.BuilderState |
var11 |
|
Map |
var12 |
|
List |
var13 |
|
int |
var14 |
|
WorldChunk |
var17 |
|
BuilderTool |
var3 |
|
ItemStack |
var4 |
|
BuilderTool.ArgData |
var5 |
|
Player |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(LayerEntryCodec var16 : this.layerArgs) |
|
|
if if(var3 == null) |
|
|
if if(var4 == null) |
private |
String |
resolveBlockPatternString resolveBlockPattern(LayerEntryCodec var1, @Nullable Map<String, Object> var2, BrushConfig var3) |
abstract |
|
super super("Layer", "Replace blocks according to the specified layers in terms of their depth from the nearest air block", true) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
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.BrushConfigEditStore;
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.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.BuilderTool;
class="kw">import com.hypixel.hytale.server.core.codec.LayerEntryCodec;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
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.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
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 java.util.Arrays;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class LayerOperation class="kw">extends SequenceBrushOperation {
class="kw">public class="kw">static class="kw">final BuilderCodec<LayerOperation> CODEC = BuilderCodec.builder(LayerOperation.class, LayerOperation::new)
.append(
new KeyedCodec<>("Layers", new ArrayCodec<>(LayerEntryCodec.CODEC, LayerEntryCodec[]::new)),
(var0, var1) -> var0.layerArgs = var1 != null ? new ArrayList<>(Arrays.asList(var1)) : List.of(),
var0 -> var0.layerArgs != null ? var0.layerArgs.toArray(new LayerEntryCodec[0]) : new LayerEntryCodec[0]
)
.documentation("The layers to set")
.add()
.documentation("Replace blocks according to the specified layers in terms of their depth from the nearest air block")
.build();
class="kw">private List<LayerEntryCodec> layerArgs = new ArrayList<>();
class="kw">public LayerOperation() {
super("Layer", "Replace blocks according to the specified layers in terms of their depth from the nearest air block", true);
}
@Override
class="kw">public boolean modifyBlocks(
Ref<EntityStore> var1,
BrushConfig var2,
BrushConfigCommandExecutor var3,
@Nonnull BrushConfigEditStore var4,
int var5,
int var6,
int var7,
ComponentAccessor<EntityStore> var8
) {
Player var9 = var8.getComponent(var1, Player.getComponentType());
assert var9 != null;
PlayerRef var10 = var8.getComponent(var1, PlayerRef.getComponentType());
assert var10 != null;
BuilderToolsPlugin.BuilderState var11 = BuilderToolsPlugin.getState(var9, var10);
if (var4.getBlock(var5, var6, var7) <= 0) {
class="kw">return true;
}
Map var12 = this.getToolArgs(var1, var8);
List var13 = new ArrayList<>();
int var14 = 0;
for (LayerEntryCodec var16 : this.layerArgs) {
if (!var16.isSkip()) {
var14 += var16.getDepth();
var13.add(Pair.of(var16.getDepth(), this.resolveBlockPattern(var16, var12, var2)));
}
}
WorldChunk var17 = var4.getAccessor().getChunk(ChunkUtil.indexChunkFromBlock(var5, var7));
var11.layer(var5, var6, var7, var13, var14, Vector3iUtil.DOWN, var17, var4.getBefore(), var4.getAfter());
class="kw">return true;
}
class="kw">private String resolveBlockPattern(LayerEntryCodec var1, @Nullable Map<String, Object> var2, BrushConfig var3) {
if (var1.isUseToolArg()) {
if (var2 != null && var2.containsKey(var1.getMaterial())) {
if (var2.get(var1.getMaterial()) class="kw">instanceof BlockPattern var5) {
class="kw">return var5.toString();
} else {
var3.setErrorFlag("Layer: Tool arg '" + var1.getMaterial() + "' is not a Block type");
class="kw">return "";
}
} else {
var3.setErrorFlag("Layer: Tool arg '" + var1.getMaterial() + "' not found");
class="kw">return "";
}
} else {
class="kw">return var1.getMaterial();
}
}
@Nullable
class="kw">private Map<String, Object> getToolArgs(Ref<EntityStore> var1, ComponentAccessor<EntityStore> var2) {
BuilderTool var3 = BuilderTool.getActiveBuilderTool(var1, var2);
if (var3 == null) {
class="kw">return null;
}
ItemStack var4 = InventoryComponent.getItemInHand(var2, var1);
if (var4 == null) {
class="kw">return null;
}
BuilderTool.ArgData var5 = var3.getItemArgData(var4);
class="kw">return var5.tool();
}
@Override
class="kw">public void modifyBrushConfig(
@Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
) {
}
}