BlockEntity class
Пакет: com.hypixel.hytale.server.core.modules.block
Файл: com/hypixel/hytale/server/core/modules/block/BlockEntity.java
Поля (34)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var10 |
|
Ref |
var10 |
|
int |
var10 |
|
Holder |
var10 |
|
int |
var11 |
|
BlockReplaceEvent |
var11 |
|
int |
var11 |
|
Holder |
var11 |
|
int |
var12 |
|
BlockBoundingBoxes.RotatedVariantBoxes |
var12 |
|
int |
var12 |
|
Holder |
var13 |
|
int |
var13 |
|
int |
var13 |
|
Ref |
var14 |
|
Ref |
var14 |
|
Ref |
var14 |
|
BlockReplaceEvent |
var15 |
|
BlockComponentSection |
var15 |
|
BlockComponentSection |
var15 |
|
BlockBoundingBoxes.RotatedVariantBoxes |
var16 |
|
Ref |
var16 |
|
Ref |
var16 |
|
Holder |
var17 |
|
Holder |
var17 |
|
Holder |
var18 |
|
Ref |
var18 |
|
Holder |
var2 |
|
int |
var5 |
|
Ref |
var6 |
|
Holder |
var7 |
|
int |
var8 |
|
int |
var9 |
|
Ref |
var9 |
Методы (19)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
boolean |
declaresComponentboolean declaresComponent(@Nonnull BlockType var0, @Nonnull ComponentType<ChunkStore, ?> var1) |
|
|
if if(var8 == null) |
|
|
if if(var14 != null) |
|
|
if if(var7x != 0 || var8x != 0 || var9x != 0) |
|
|
if if(var18 != null) |
|
|
if if(var14 != null) |
|
|
if if(var15 != null) |
|
|
if if(var16 != null) |
|
|
if if(var17 != null) |
|
|
if if(var7x != 0 || var8x != 0 || var9x != 0) |
|
|
if if(var18 != null) |
|
|
if if(var14 != null) |
|
|
if if(var15 != null) |
|
|
if if(var16 != null) |
|
|
if if(var17 != null) |
|
|
if if(var10 != null) |
|
|
if if(var7 != 0) |
|
|
if if(var10 == null) |
static |
void |
setBlockEntityvoid setBlockEntity(@Nonnull ComponentAccessor<ChunkStore> var0,
@Nonnull Ref<ChunkStore> var1,
@Nonnull BlockComponentSection var2,
int var3,
int var4,
int var5,
@Nonnull BlockType var6,
int var7,
@Nullable Holder<ChunkStore> var8) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.block;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
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.chunk.section.BlockComponentSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BlockEntity {
class="kw">public BlockEntity() {
}
class="kw">public class="kw">static void setBlockEntity(
@Nonnull ComponentAccessor<ChunkStore> var0,
@Nonnull Ref<ChunkStore> var1,
@Nonnull BlockComponentSection var2,
int var3,
int var4,
int var5,
@Nonnull BlockType var6,
int var7,
@Nullable Holder<ChunkStore> var8
) {
int var9 = ChunkUtil.indexBlock(var3, var4, var5);
if (var8 == null) {
Ref var14 = var2.getBlockReference(var9);
if (var14 != null) {
var0.removeEntity(var14, ChunkStore.REGISTRY.newHolder(), RemoveReason.REMOVE);
} else {
var2.removeBlockHolder(var9);
}
} else if (var0.getArchetype(var1).contains(ChunkStore.REGISTRY.getNonTickingComponentType())) {
Holder var13 = var2.removeBlockHolder(var9);
BlockReplaceEvent var15 = new BlockReplaceEvent(var1, var3, var4, var5, var8, var3, var4, var5);
BlockBoundingBoxes.RotatedVariantBoxes var16 = BlockBoundingBoxes.getAssetMap().getAsset(var6.getHitboxTypeIndex()).get(var7);
FillerBlockUtil.forEachFillerBlock(var16, (var7x, var8x, var9x) -> {
if (var7x != 0 || var8x != 0 || var9x != 0) {
int var10 = var3 + var7x;
int var11 = var4 + var8x;
int var12 = var5 + var9x;
int var13 = ChunkUtil.indexBlock(var10, var11, var12);
if (ChunkUtil.isSameChunkSection(var3, var4, var5, var10, var11, var12)) {
Holder var18 = var2.getBlockHolder(var13);
if (var18 != null) {
var15.next(var10, var11, var12);
var0.invoke(var18, var15);
}
} else {
Ref var14 = var0.getExternalData().getChunkSectionReferenceAtBlock(var10, var11, var12);
if (var14 != null) {
BlockComponentSection var15 = var0.getComponent(var14, BlockComponentSection.getComponentType());
if (var15 != null) {
Ref var16 = var15.getBlockReference(var13);
if (var16 != null) {
var15.next(var10, var11, var12);
var0.invoke(var16, var15);
}
Holder var17 = var15.getBlockHolder(var13);
if (var17 != null) {
var15.next(var10, var11, var12);
var0.invoke(var17, var15);
}
}
}
}
} else if (var13 != null) {
var15.next(var3 + var7x, var4 + var8x, var5 + var9x);
var0.invoke(var13, var15);
}
});
var8.putComponent(BlockModule.BlockStateInfo.getComponentType(), new BlockModule.BlockStateInfo(var9, var1));
var2.addBlockHolder(var9, var8);
} else {
Ref var10 = var2.getBlockReference(var9);
BlockReplaceEvent var11 = new BlockReplaceEvent(var1, var3, var4, var5, var8, var3, var4, var5);
BlockBoundingBoxes.RotatedVariantBoxes var12 = BlockBoundingBoxes.getAssetMap().getAsset(var6.getHitboxTypeIndex()).get(var7);
FillerBlockUtil.forEachFillerBlock(var12, (var7x, var8x, var9x) -> {
if (var7x != 0 || var8x != 0 || var9x != 0) {
int var10 = var3 + var7x;
int var11 = var4 + var8x;
int var12 = var5 + var9x;
int var13 = ChunkUtil.indexBlock(var10, var11, var12);
if (ChunkUtil.isSameChunkSection(var3, var4, var5, var10, var11, var12)) {
Ref var18 = var2.getBlockReference(var13);
if (var18 != null) {
var11.next(var3 + var7x, var4 + var8x, var5 + var9x);
var0.invoke(var18, var11);
}
} else {
Ref var14 = var0.getExternalData().getChunkSectionReferenceAtBlock(var10, var11, var12);
if (var14 != null) {
BlockComponentSection var15 = var0.getComponent(var14, BlockComponentSection.getComponentType());
if (var15 != null) {
Ref var16 = var15.getBlockReference(var13);
if (var16 != null) {
var11.next(var10, var11, var12);
var0.invoke(var16, var11);
}
Holder var17 = var15.getBlockHolder(var13);
if (var17 != null) {
var11.next(var10, var11, var12);
var0.invoke(var17, var11);
}
}
}
}
} else if (var10 != null) {
var11.next(var3 + var7x, var4 + var8x, var5 + var9x);
var0.invoke(var10, var11);
}
});
if (var10 != null) {
var0.removeEntity(var10, ChunkStore.REGISTRY.newHolder(), RemoveReason.REMOVE);
} else {
var2.removeBlockHolder(var9);
}
var8.putComponent(BlockModule.BlockStateInfo.getComponentType(), new BlockModule.BlockStateInfo(var9, var1));
var0.addEntity(var8, AddReason.SPAWN);
}
}
@Nullable
class="kw">public class="kw">static Holder<ChunkStore> takeBlockEntity(
@Nonnull ComponentAccessor<ChunkStore> var0, @Nonnull BlockComponentSection var1, int var2, int var3, int var4
) {
int var5 = ChunkUtil.indexBlock(var2, var3, var4);
Ref var6 = var1.getBlockReference(var5);
if (var6 != null && var6.isValid()) {
var1.removeBlockReference(var5, var6);
Holder var7 = ChunkStore.REGISTRY.newHolder();
var0.removeEntity(var6, var7, RemoveReason.UNLOAD);
class="kw">return var7;
} else {
class="kw">return var1.removeBlockHolder(var5);
}
}
@Nullable
class="kw">public class="kw">static Ref<ChunkStore> ensureBlockEntity(
@Nonnull ComponentAccessor<ChunkStore> var0,
@Nonnull Ref<ChunkStore> var1,
@Nonnull BlockComponentSection var2,
int var3,
int var4,
int var5,
@Nonnull BlockType var6,
int var7
) {
if (var7 != 0) {
class="kw">return null;
}
int var8 = ChunkUtil.indexBlock(var3, var4, var5);
Ref var9 = var2.getBlockReference(var8);
if (var9 != null && var9.isValid()) {
class="kw">return var9;
}
if (var2.getBlockHolder(var8) != null) {
class="kw">return null;
}
Holder var10 = var6.getBlockEntity();
if (var10 == null) {
class="kw">return null;
}
Holder var11 = var10.clone();
var11.putComponent(BlockModule.BlockStateInfo.getComponentType(), new BlockModule.BlockStateInfo(var8, var1));
class="kw">return var0.addEntity(var11, AddReason.SPAWN);
}
class="kw">public class="kw">static boolean declaresComponent(@Nonnull BlockType var0, @Nonnull ComponentType<ChunkStore, ?> var1) {
Holder var2 = var0.getBlockEntity();
class="kw">return var2 != null && var2.getArchetype().contains(var1);
}
}