BlockInspectFillerCommand class

Пакет: com.hypixel.hytale.server.core.universe.world.commands.block

Файл: com/hypixel/hytale/server/core/universe/world/commands/block/BlockInspectFillerCommand.java

extends: AbstractPlayerCommand

Поля (34)

МодификаторыТипИмя
int var10
int var11
int var11
int var12
BlockType var12
int var13
BlockBoundingBoxes var13
int var14
int var15
int var16
int var17
Vector3d var18
int var19
BlockBoundingBoxes.RotatedVariantBoxes var20
int var21
int var22
int var23
Box var24
int var25
int var26
int var27
int var28
int var29
int var30
Vector3f var31
Store var5
TransformComponent var6
BlockSection var6
Vector3d var7
BlockTypeAssetMap var7
int var8
IndexedLookupTableAssetMap var8
int var9
Vector3d var9

Методы (10)

МодификаторыВозвратСигнатура
for for(int var10 = 0; var10 < 32768; var10++)
if if(var6 == null)
if if(var12 != null)
if if(var25 - var24.min.x > 0.0)
if if(var26 - var24.min.y > 0.0)
if if(var27 - var24.min.z > 0.0)
if if(var24.max.x - var28 > 0.0)
if if(var24.max.y - var29 > 0.0)
if if(var24.max.z - var30 > 0.0)
abstract super super("inspectfiller", "server.commands.block.inspectfiller.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.commands.block;

class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.common.util.CompletableFutureUtil;
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.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.Message;
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.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.modules.debug.DebugUtils;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
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 com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;

class="kw">public class BlockInspectFillerCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_FILLER_DONE = Message.translation("server.commands.block.inspectfiller.done");
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_FILLER_NO_BLOCKS = Message.translation("server.commands.block.inspectfiller.noblocks");

   class="kw">public BlockInspectFillerCommand() {
      super("inspectfiller", "server.commands.block.inspectfiller.desc");
      this.setPermissionGroups("hytale:WorldEditor");
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      TransformComponent var6 = var2.getComponent(var3, TransformComponent.getComponentType());
      assert var6 != null;
      Vector3d var7 = var6.getPosition();
      int var8 = MathUtil.floor(var7.x());
      int var9 = MathUtil.floor(var7.z());
      int var10 = MathUtil.floor(var7.y());
      int var11 = ChunkUtil.chunkCoordinate(var8);
      int var12 = ChunkUtil.chunkCoordinate(var10);
      int var13 = ChunkUtil.chunkCoordinate(var9);
      CompletableFutureUtil._catch(var5.getChunkStore().getChunkSectionReferenceAsync(var11, var12, var13).thenAcceptAsync(var4x -> {
         Store var5 = var4x.getStore();
         BlockSection var6 = var5.getComponent((Ref<ChunkStore>)var4x, BlockSection.getComponentType());
         if (var6 == null) {
            var4.sendMessage(MESSAGE_COMMANDS_BLOCK_INSPECT_FILLER_NO_BLOCKS);
         } else {
            BlockTypeAssetMap var7 = BlockType.getAssetMap();
            IndexedLookupTableAssetMap var8 = BlockBoundingBoxes.getAssetMap();
            Vector3d var9 = new Vector3d(ChunkUtil.minBlock(var11), ChunkUtil.minBlock(var12), ChunkUtil.minBlock(var13));

            for (int var10 = 0; var10 < 32768; var10++) {
               int var11 = var6.get(var10);
               BlockType var12 = var7.getAsset(var11);
               if (var12 != null) {
                  BlockBoundingBoxes var13 = var8.getAsset(var12.getHitboxTypeIndex());
                  if (var13 != null && var13.protrudesUnitBox()) {
                     int var14 = var6.getFiller(var10);
                     int var15 = ChunkUtil.xFromIndex(var10);
                     int var16 = ChunkUtil.yFromIndex(var10);
                     int var17 = ChunkUtil.zFromIndex(var10);
                     Vector3d var18 = new Vector3d(var15, var16, var17);
                     var18.add(0.5, 0.5, 0.5);
                     var18.add(var9);
                     int var19 = var6.getRotationIndex(var10);
                     BlockBoundingBoxes.RotatedVariantBoxes var20 = var13.get(var19);
                     int var21 = FillerBlockUtil.unpackX(var14);
                     int var22 = FillerBlockUtil.unpackY(var14);
                     int var23 = FillerBlockUtil.unpackZ(var14);
                     Box var24 = var20.getBoundingBox();
                     int var25 = (int)var24.min.x;
                     int var26 = (int)var24.min.y;
                     int var27 = (int)var24.min.z;
                     if (var25 - var24.min.x > 0.0) {
                        var25--;
                     }

                     if (var26 - var24.min.y > 0.0) {
                        var26--;
                     }

                     if (var27 - var24.min.z > 0.0) {
                        var27--;
                     }

                     int var28 = (int)var24.max.x;
                     int var29 = (int)var24.max.y;
                     int var30 = (int)var24.max.z;
                     if (var24.max.x - var28 > 0.0) {
                        var28++;
                     }

                     if (var24.max.y - var29 > 0.0) {
                        var29++;
                     }

                     if (var24.max.z - var30 > 0.0) {
                        var30++;
                     }

                     Vector3f var31 = new Vector3f();
                     var31.x = (float)(var21 - var25) / (var28 - var25);
                     var31.y = (float)(var22 - var26) / (var29 - var26);
                     var31.z = (float)(var23 - var27) / (var30 - var27);
                     DebugUtils.addCube(var5.getExternalData().getWorld(), var18, var31, 1.05, 30.0F);
                  }
               }
            }

            var4.sendMessage(MESSAGE_COMMANDS_BLOCK_INSPECT_FILLER_DONE);
         }
      }, var5));
   }
}