BlockPlacementHelper class

Пакет: com.hypixel.hytale.server.npc.util

Файл: com/hypixel/hytale/server/npc/util/BlockPlacementHelper.java

Поля (17)

МодификаторыТипИмя
BlockSection var10
BlockSection var10
BlockType var11
BlockSection var12
var12
Ref var13
int var14
int var15
BlockType var16
Box var3
ChunkStore var6
Store var7
ChunkStore var7
BlockTypeAssetMap var8
Ref var8
Ref var9
Store var9

Методы (10)

МодификаторыВозвратСигнатура
static boolean canPlaceBlockboolean canPlaceBlock(@Nonnull World var0, @Nonnull BlockType var1, int var2, boolean var3, int var4, int var5, int var6)
static boolean canPlaceUnitBlockboolean canPlaceUnitBlock(@Nonnull World var0, BlockType var1, boolean var2, int var3, int var4, int var5)
if if(var10 == null)
if if(var11 == null)
if if(var12 == null)
if if(var16 == null)
if if(var1 == BlockType.EMPTY)
static boolean testBlockboolean testBlock(BlockType var0, @Nonnull BlockType var1, boolean var2)
static boolean testSupportingBlockboolean testSupportingBlock(@Nonnull BlockType var0, int var1, int var2)
abstract return testSupportingBlockreturn testSupportingBlock(var16, var15, var14)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.util;

class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.protocol.BlockMaterial;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockhitbox.BlockBoundingBoxes;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockOperations;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BlockPlacementHelper {
   class="kw">public BlockPlacementHelper() {
   }

   class="kw">public class="kw">static boolean canPlaceUnitBlock(@Nonnull World var0, BlockType var1, boolean var2, int var3, int var4, int var5) {
      ChunkStore var6 = var0.getChunkStore();
      Store var7 = var6.getStore();
      BlockTypeAssetMap var8 = BlockType.getAssetMap();
      Ref var9 = var6.getChunkSectionReferenceAtBlock(var3, var4, var5);
      if (var9 != null && var9.isValid()) {
         BlockSection var10 = var7.getComponent(var9, BlockSection.getComponentType());
         if (var10 == null) {
            class="kw">return false;
         }

         BlockType var11 = var8.getAsset(var10.get(var3, var4, var5));
         if (var11 == null) {
            class="kw">return false;
         }

         if (!testBlock(var1, var11, var2)) {
            class="kw">return false;
         }

         BlockSection var12 = var10;
         if (ChunkUtil.chunkCoordinate(var4 - 1) != ChunkUtil.chunkCoordinate(var4)) {
            Ref var13 = var6.getChunkSectionReferenceAtBlock(var3, var4 - 1, var5);
            if (var13 == null || !var13.isValid()) {
               class="kw">return false;
            }

            var12 = var7.getComponent(var13, BlockSection.getComponentType());
            if (var12 == null) {
               class="kw">return false;
            }
         }

         BlockType var16 = var8.getAsset(var12.get(var3, var4 - 1, var5));
         if (var16 == null) {
            class="kw">return false;
         }

         int var14 = var12.getFiller(var3, var4 - 1, var5);
         int var15 = var12.getRotationIndex(var3, var4 - 1, var5);
         class="kw">return testSupportingBlock(var16, var15, var14);
      } else {
         class="kw">return false;
      }
   }

   class="kw">public class="kw">static boolean canPlaceBlock(@Nonnull World var0, @Nonnull BlockType var1, int var2, boolean var3, int var4, int var5, int var6) {
      ChunkStore var7 = var0.getChunkStore();
      Ref var8 = var7.getChunkSectionReferenceAtBlock(var4, var5, var6);
      if (var8 != null && var8.isValid()) {
         Store var9 = var7.getStore();
         BlockSection var10 = var9.getComponent(var8, BlockSection.getComponentType());
         class="kw">return var10 == null
            ? false
            : BlockOperations.testPlaceBlock(
               var9, var10, var4, var5, var6, var1, var2, (var2x, var3x, var4x, var5x, var6x, var7x) -> testBlock(var1, var5x, var3)
            );
      } else {
         class="kw">return false;
      }
   }

   class="kw">public class="kw">static boolean testBlock(BlockType var0, @Nonnull BlockType var1, boolean var2) {
      if (var1 == BlockType.EMPTY) {
         class="kw">return true;
      } else {
         class="kw">return var2 && var1.getMaterial() == BlockMaterial.Empty ? true : true;
      }
   }

   class="kw">public class="kw">static boolean testSupportingBlock(@Nonnull BlockType var0, int var1, int var2) {
      Box var3 = BlockBoundingBoxes.getAssetMap().getAsset(var0.getHitboxTypeIndex()).get(var1).getBoundingBox();
      class="kw">return var0 != BlockType.EMPTY && var0 != BlockType.UNKNOWN && var0.getMaterial() == BlockMaterial.Solid && var2 == 0 && var3.isUnitBox();
   }
}