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