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