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