BrushConfigEditStore class

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

Файл: com/hypixel/hytale/builtin/buildertools/scriptedbrushes/BrushConfigEditStore.java

Поля (45)

МодификаторыТипИмя
break
break
break
break
int var10
int var10
int var10
boolean var10
int var10
int var11
WorldChunk var11
int var11
BlockMask var12
int var12
BlockType var12
WorldChunk var13
byte var13
BlockTypeAssetMap var13
ObjectIterator var14
Entry var15
int var16
WorldChunk var4
int var4
boolean var5
boolean var5
boolean var5
BuilderToolsPlugin.BuilderState.BlocksSampleData var5
Vector3i var6
int var6
boolean var6
int var6
Int2IntMap var6
int var7
int var7
int var7
int var7
int var8
BlockMask var8
int var8
BlockMask var8
int var9
WorldChunk var9
boolean var9
BlockMask var9
int var9

Методы (29)

МодификаторыВозвратСигнатура
public void flushCurrentEditsToPreviousvoid flushCurrentEditsToPrevious()
for for(int var7 = var1 - var4; var7 <= var1 + var4; var7++)
for for(int var8 = var3 - var4; var8 <= var3 + var4; var8++)
for for(int var9 = var2 - var4; var9 <= var2 + var4; var9++)
public int getBlockint getBlock(int var1, int var2, int var3)
public int getBlockIncludingCurrentint getBlockIncludingCurrent(int var1, int var2, int var3)
public int getFluidint getFluid(int var1, int var2, int var3)
public int getOriginalBlockint getOriginalBlock(int var1, int var2, int var3)
private int getOriginalFluidint getOriginalFluid(int var1, int var2, int var3)
if if(!var5)
if if(var5)
if if(var9 != null)
if if(!var9)
if if(var9)
if if(var13 != null)
if if(!var6)
if if(var6)
if if(var10 < 0)
if if(var11 != null)
if if(!var5)
if if(var5)
if if(var9 == 0)
if if(var11 > var5.mainBlockCount)
if if(var11 > var5.mainBlockNotAirCount && var16 != 0)
public boolean setBlockboolean setBlock(int var1, int var2, int var3, int var4)
boolean setFluidboolean setFluid(int var1, int var2, int var3, int var4, byte var5)
public boolean setFullBlockboolean setFullBlock(int var1, int var2, int var3, int var4, int var5, int var6, int var7, @Nullable Holder<ChunkStore> var8)
public boolean setMaterialboolean setMaterial(int var1, int var2, int var3, @Nonnull Material var4)
public boolean setMaterialWithFillerboolean setMaterialWithFiller(int var1, int var2, int var3, @Nonnull Material var4)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.utils.FillerPlacementUtil;
class="kw">import com.hypixel.hytale.builtin.buildertools.utils.Material;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.math.block.BlockUtil;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockMask;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntMaps;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntMap.Entry;
class="kw">import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class BrushConfigEditStore {
   @Nonnull
   class="kw">private class="kw">final BrushConfig brushConfig;
   @Nonnull
   class="kw">private class="kw">final BrushConfigChunkAccessor accessor;
   @Nonnull
   class="kw">private class="kw">final BlockSelection before;
   @Nonnull
   class="kw">private class="kw">final BlockSelection previous;
   class="kw">private BlockSelection current;
   class="kw">private class="kw">final LongOpenHashSet packedPlacedBlockPositions;
   class="kw">private class="kw">final LongOpenHashSet occupied = new LongOpenHashSet();
   @Nullable
   class="kw">private class="kw">final Vector3i selectionMin;
   @Nullable
   class="kw">private class="kw">final Vector3i selectionMax;

   class="kw">public BrushConfigEditStore(LongOpenHashSet var1, @Nonnull BrushConfig var2, World var3, @Nullable Vector3i var4, @Nullable Vector3i var5) {
      this.brushConfig = var2;
      this.packedPlacedBlockPositions = var1;
      this.selectionMin = var4;
      this.selectionMax = var5;
      Vector3i var6 = var2.getOrigin();
      int var7 = var2.getShapeWidth();
      int var8 = var2.getShapeHeight();
      int var9 = var7 / 2;
      int var10 = var8 / 2;
      this.accessor = BrushConfigChunkAccessor.atWorldCoords(this, var3, var6.x, var6.z, var7 * 2);
      this.before = new BlockSelection();
      this.before.setPosition(var6.x, var6.y, var6.z);
      this.before.setSelectionArea(new Vector3i(var6.x - var9, var6.y - var10, var6.z - var9), new Vector3i(var6.x + var9, var6.y + var10, var6.z + var9));
      this.previous = new BlockSelection(this.before);
      this.current = new BlockSelection(this.before);
   }

   @Nonnull
   class="kw">public BrushConfigChunkAccessor getAccessor() {
      class="kw">return this.accessor;
   }

   @Nonnull
   class="kw">public BrushConfig getBrushConfig() {
      class="kw">return this.brushConfig;
   }

   @Nullable
   class="kw">public Vector3i getSelectionMin() {
      class="kw">return this.selectionMin;
   }

   @Nullable
   class="kw">public Vector3i getSelectionMax() {
      class="kw">return this.selectionMax;
   }

   class="kw">public int getOriginalBlock(int var1, int var2, int var3) {
      class="kw">return this.accessor.getBlockIgnoringHistory(var1, var2, var3);
   }

   class="kw">public int getBlock(int var1, int var2, int var3) {
      class="kw">return this.previous.hasBlockAtWorldPos(var1, var2, var3) ? this.previous.getBlockAtWorldPos(var1, var2, var3) : this.getOriginalBlock(var1, var2, var3);
   }

   class="kw">public int getBlockIncludingCurrent(int var1, int var2, int var3) {
      class="kw">return this.current.hasBlockAtWorldPos(var1, var2, var3) ? this.current.getBlockAtWorldPos(var1, var2, var3) : this.getBlock(var1, var2, var3);
   }

   class="kw">public boolean setBlock(int var1, int var2, int var3, int var4) {
      boolean var5 = this.previous.hasBlockAtWorldPos(var1, var2, var3) || this.previous.getFluidAtWorldPos(var1, var2, var3) >= 0;
      class="kw">switch (this.brushConfig.getHistoryMask()) {
         case Only:
            if (!var5) {
               class="kw">return false;
            }
            break;
         case Not:
            if (var5) {
               class="kw">return false;
            }
         case None:
      }

      if (this.brushConfig.getRandom().nextInt(100) >= this.brushConfig.getDensity()) {
         class="kw">return false;
      }

      if (this.getOriginalBlock(var1, var2, var3) == 0) {
         this.packedPlacedBlockPositions.add(BlockUtil.pack(var1, var2, var3));
      }

      int var6 = this.getBlock(var1, var2, var3);
      int var7 = this.getFluid(var1, var2, var3);
      BlockMask var8 = this.brushConfig.getBlockMask();
      if (var8 != null && var8.isExcluded(this.accessor, var1, var2, var3, this.selectionMin, this.selectionMax, var6, var7)) {
         class="kw">return false;
      }

      if (!this.before.hasBlockAtWorldPos(var1, var2, var3)) {
         WorldChunk var9 = this.accessor.getChunkIfInMemory(ChunkUtil.indexChunkFromBlock(var1, var3));
         if (var9 != null) {
            this.before
               .addBlockAtWorldPos(
                  var1,
                  var2,
                  var3,
                  var6,
                  var9.getRotationIndex(var1, var2, var3),
                  var9.getFiller(var1, var2, var3),
                  var9.getSupportValue(var1, var2, var3),
                  var9.getBlockComponentHolder(var1, var2, var3)
               );
         }
      }

      this.current.addBlockAtWorldPos(var1, var2, var3, var4, 0, 0, 0);
      class="kw">return true;
   }

   class="kw">public boolean setFullBlock(int var1, int var2, int var3, int var4, int var5, int var6, int var7, @Nullable Holder<ChunkStore> var8) {
      boolean var9 = this.previous.hasBlockAtWorldPos(var1, var2, var3) || this.previous.getFluidAtWorldPos(var1, var2, var3) >= 0;
      class="kw">switch (this.brushConfig.getHistoryMask()) {
         case Only:
            if (!var9) {
               class="kw">return false;
            }
            break;
         case Not:
            if (var9) {
               class="kw">return false;
            }
         case None:
      }

      if (this.brushConfig.getRandom().nextInt(100) >= this.brushConfig.getDensity()) {
         class="kw">return false;
      }

      if (this.getOriginalBlock(var1, var2, var3) == 0) {
         this.packedPlacedBlockPositions.add(BlockUtil.pack(var1, var2, var3));
      }

      int var10 = this.getBlock(var1, var2, var3);
      int var11 = this.getFluid(var1, var2, var3);
      BlockMask var12 = this.brushConfig.getBlockMask();
      if (var12 != null && var12.isExcluded(this.accessor, var1, var2, var3, this.selectionMin, this.selectionMax, var10, var11)) {
         class="kw">return false;
      }

      if (!this.before.hasBlockAtWorldPos(var1, var2, var3)) {
         WorldChunk var13 = this.accessor.getChunkIfInMemory(ChunkUtil.indexChunkFromBlock(var1, var3));
         if (var13 != null) {
            this.before
               .addBlockAtWorldPos(
                  var1,
                  var2,
                  var3,
                  var10,
                  var13.getRotationIndex(var1, var2, var3),
                  var13.getFiller(var1, var2, var3),
                  var13.getSupportValue(var1, var2, var3),
                  var13.getBlockComponentHolder(var1, var2, var3)
               );
         }
      }

      this.current.addBlockAtWorldPos(var1, var2, var3, var4, var5, var6, var7, var8);
      class="kw">return true;
   }

   boolean setFluid(int var1, int var2, int var3, int var4, byte var5) {
      boolean var6 = this.previous.hasBlockAtWorldPos(var1, var2, var3) || this.previous.getFluidAtWorldPos(var1, var2, var3) >= 0;
      class="kw">switch (this.brushConfig.getHistoryMask()) {
         case Only:
            if (!var6) {
               class="kw">return false;
            }
            break;
         case Not:
            if (var6) {
               class="kw">return false;
            }
         case None:
      }

      if (this.brushConfig.getRandom().nextInt(100) >= this.brushConfig.getDensity()) {
         class="kw">return false;
      }

      int var7 = this.getBlock(var1, var2, var3);
      int var8 = this.getFluid(var1, var2, var3);
      BlockMask var9 = this.brushConfig.getBlockMask();
      if (var9 != null && var9.isExcluded(this.accessor, var1, var2, var3, this.selectionMin, this.selectionMax, var7, var8)) {
         class="kw">return false;
      }

      int var10 = this.before.getFluidAtWorldPos(var1, var2, var3);
      if (var10 < 0) {
         WorldChunk var11 = this.accessor.getChunkIfInMemory(ChunkUtil.indexChunkFromBlock(var1, var3));
         if (var11 != null) {
            int var12 = var11.getFluidId(var1, var2, var3);
            byte var13 = var11.getFluidLevel(var1, var2, var3);
            this.before.addFluidAtWorldPos(var1, var2, var3, var12, var13);
         }
      }

      this.current.addFluidAtWorldPos(var1, var2, var3, var4, var5);
      class="kw">return true;
   }

   class="kw">private int getOriginalFluid(int var1, int var2, int var3) {
      WorldChunk var4 = this.accessor.getChunkIfInMemory(ChunkUtil.indexChunkFromBlock(var1, var3));
      class="kw">return var4 != null ? var4.getFluidId(var1, var2, var3) : 0;
   }

   class="kw">public int getFluid(int var1, int var2, int var3) {
      int var4 = this.previous.getFluidAtWorldPos(var1, var2, var3);
      class="kw">return var4 >= 0 ? var4 : this.getOriginalFluid(var1, var2, var3);
   }

   class="kw">public boolean setMaterial(int var1, int var2, int var3, @Nonnull Material var4) {
      if (var4.isFluid() && var4.getBlockId() == 0) {
         class="kw">return this.setFluid(var1, var2, var3, var4.getFluidId(), var4.getFluidLevel());
      }

      boolean var5 = this.setFullBlock(var1, var2, var3, var4.getBlockId(), var4.getRotation(), var4.getFiller(), var4.getSupport(), var4.getHolder());
      if (var5 && var4.isEmpty()) {
         this.setFluid(var1, var2, var3, 0, (byte)0);
      } else if (var5 && var4.getFluidId() != 0) {
         this.setFluid(var1, var2, var3, var4.getFluidId(), var4.getFluidLevel());
      }

      class="kw">return var5;
   }

   class="kw">public boolean setMaterialWithFiller(int var1, int var2, int var3, @Nonnull Material var4) {
      if (var4.isFluid() && var4.getBlockId() == 0) {
         class="kw">return this.setFluid(var1, var2, var3, var4.getFluidId(), var4.getFluidLevel());
      }

      boolean var5 = this.previous.hasBlockAtWorldPos(var1, var2, var3) || this.previous.getFluidAtWorldPos(var1, var2, var3) >= 0;
      class="kw">switch (this.brushConfig.getHistoryMask()) {
         case Only:
            if (!var5) {
               class="kw">return false;
            }
            break;
         case Not:
            if (var5) {
               class="kw">return false;
            }
         case None:
      }

      if (this.brushConfig.getRandom().nextInt(100) >= this.brushConfig.getDensity()) {
         class="kw">return false;
      }

      int var6 = this.getBlock(var1, var2, var3);
      int var7 = this.getFluid(var1, var2, var3);
      BlockMask var8 = this.brushConfig.getBlockMask();
      if (var8 != null && var8.isExcluded(this.accessor, var1, var2, var3, this.selectionMin, this.selectionMax, var6, var7)) {
         class="kw">return false;
      }

      if (this.accessor.getChunkIfInMemory(ChunkUtil.indexChunkFromBlock(var1, var3)) == null) {
         class="kw">return false;
      }

      if (this.getOriginalBlock(var1, var2, var3) == 0) {
         this.packedPlacedBlockPositions.add(BlockUtil.pack(var1, var2, var3));
      }

      int var9 = var4.getBlockId();
      if (var9 == 0) {
         FillerPlacementUtil.captureAndClearFootprint(this.accessor, this.before, this.current, var1, var2, var3, this.previous);
         this.setFluid(var1, var2, var3, 0, (byte)0);
         class="kw">return true;
      }

      boolean var10 = FillerPlacementUtil.stampBlockWithFiller(
         this.accessor, this.before, this.current, this.occupied, var1, var2, var3, var9, var4.getRotation(), false, this.previous
      );
      if (var10 && var4.getFluidId() != 0) {
         this.setFluid(var1, var2, var3, var4.getFluidId(), var4.getFluidLevel());
      }

      class="kw">return var10;
   }

   @Nonnull
   class="kw">public BuilderToolsPlugin.BuilderState.BlocksSampleData getBlockSampledataIncludingPreviousStages(int var1, int var2, int var3, int var4) {
      BuilderToolsPlugin.BuilderState.BlocksSampleData var5 = new BuilderToolsPlugin.BuilderState.BlocksSampleData();
      Int2IntMap var6 = new Int2IntOpenHashMap();

      for (int var7 = var1 - var4; var7 <= var1 + var4; var7++) {
         for (int var8 = var3 - var4; var8 <= var3 + var4; var8++) {
            for (int var9 = var2 - var4; var9 <= var2 + var4; var9++) {
               int var10 = this.getBlock(var7, var9, var8);
               var6.put(var10, var6.getOrDefault(var10, 0) + 1);
            }
         }
      }

      BlockTypeAssetMap var13 = BlockType.getAssetMap();
      ObjectIterator var14 = Int2IntMaps.fastIterable(var6).iterator();

      while (var14.hasNext()) {
         Entry var15 = (Entry)var14.next();
         int var16 = var15.getIntKey();
         int var11 = var15.getIntValue();
         if (var11 > var5.mainBlockCount) {
            var5.mainBlock = var16;
            var5.mainBlockCount = var11;
         }

         BlockType var12 = var13.getAsset(var16);
         if (var11 > var5.mainBlockNotAirCount && var16 != 0) {
            var5.mainBlockNotAir = var16;
            var5.mainBlockNotAirCount = var11;
         }
      }

      class="kw">return var5;
   }

   class="kw">public void flushCurrentEditsToPrevious() {
      this.previous.add(this.current);
      this.current = new BlockSelection();
      this.current.setPosition(this.brushConfig.getOrigin().x, this.brushConfig.getOrigin().y, this.brushConfig.getOrigin().z);
      this.occupied.clear();
   }

   @Nonnull
   class="kw">public BlockSelection getAfter() {
      class="kw">return this.previous;
   }

   @Nonnull
   class="kw">public BlockSelection getBefore() {
      class="kw">return this.before;
   }
}