PastePrefabOperation class
Пакет: com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential
Файл: com/hypixel/hytale/builtin/buildertools/scriptedbrushes/operations/sequential/PastePrefabOperation.java
extends: SequenceBrushOperation
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<PastePrefabOperation> |
CODEC |
|
Path |
var10 |
|
PrefabBuffer |
var11 |
|
PrefabBuffer.PrefabBufferAccessor |
var12 |
|
int |
var15 |
|
int |
var16 |
|
int |
var17 |
|
PrefabListAsset |
var9 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(this.hasBeenPlacedAlready) |
|
|
if if(var9 == null) |
|
|
if if(var10 == null) |
|
|
if if(var11x != 0) |
|
|
if if(var13 != 0) |
abstract |
|
super super("Paste Prefab", "Paste a prefab at the origin+offset point", true) |
Исходный код
Показать/скрыть
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.BrushConfigEditStore;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.system.SequenceBrushOperation;
class="kw">import com.hypixel.hytale.builtin.buildertools.utils.Material;
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.asset.type.blocktype.config.Rotation;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.PrefabListAsset;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabRotation;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.buffer.PrefabBufferCall;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.buffer.PrefabBufferUtil;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.buffer.impl.IPrefabBuffer;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.buffer.impl.PrefabBuffer;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class PastePrefabOperation class="kw">extends SequenceBrushOperation {
class="kw">public class="kw">static class="kw">final BuilderCodec<PastePrefabOperation> CODEC = BuilderCodec.builder(PastePrefabOperation.class, PastePrefabOperation::new)
.append(new KeyedCodec<>("PrefabListAssetName", Codec.STRING), (var0, var1) -> var0.prefabListAssetId = var1, var0 -> var0.prefabListAssetId)
.documentation("The name of a PrefabList asset")
.add()
.documentation("Paste a prefab at the origin+offset point")
.build();
@Nullable
class="kw">public String prefabListAssetId = null;
class="kw">private boolean hasBeenPlacedAlready = false;
class="kw">public PastePrefabOperation() {
super("Paste Prefab", "Paste a prefab at the origin+offset point", true);
}
@Override
class="kw">public void resetInternalState() {
this.hasBeenPlacedAlready = false;
}
@Override
class="kw">public void modifyBrushConfig(
@Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
) {
this.hasBeenPlacedAlready = false;
}
@Override
class="kw">public boolean modifyBlocks(
@Nonnull Ref<EntityStore> var1,
@Nonnull BrushConfig var2,
BrushConfigCommandExecutor var3,
BrushConfigEditStore var4,
int var5,
int var6,
int var7,
ComponentAccessor<EntityStore> var8
) {
if (this.hasBeenPlacedAlready) {
class="kw">return false;
} else {
PrefabListAsset var9 = this.prefabListAssetId != null ? PrefabListAsset.getAssetMap().getAsset(this.prefabListAssetId) : null;
if (var9 == null) {
var2.setErrorFlag("PrefabList asset not found: " + this.prefabListAssetId);
class="kw">return false;
} else {
Path var10 = var9.getRandomPrefab();
if (var10 == null) {
var2.setErrorFlag("No prefab found in prefab list. Please double check your PrefabList asset.");
class="kw">return false;
} else {
PrefabBuffer var11 = PrefabBufferUtil.loadBuffer(var10);
PrefabBuffer.PrefabBufferAccessor var12 = var11.newAccess();
this.hasBeenPlacedAlready = true;
var12.forEach(
IPrefabBuffer.iterateAllColumns(),
(var4x, var5x, var6x, var7x, var8x, var9x, var10x, var11x, var12x, var13, var14) -> {
int var15 = var5 + var4x;
int var16 = var6 + var5x;
int var17 = var7 + var6x;
if (var11x != 0) {
if (var13 != 0) {
var4.setMaterial(var15, var16, var17, Material.fluid(var13, (byte)var14));
}
} else {
var4.setMaterial(var15, var16, var17, Material.full(var7x, var10x, var9x, 0, var8x, var13, (byte)var14));
}
},
(var0, var1x, var2x, var3x) -> {},
(var0, var1x, var2x, var3x, var4x, var5x, var6x, var7x, var8x, var9x) -> {},
new PrefabBufferCall(new Random(), PrefabRotation.fromRotation(Rotation.None))
);
class="kw">return false;
}
}
}
}
}