BlockInspectRotationCommand class

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

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

extends: AbstractPlayerCommand

Поля (20)

МодификаторыТипИмя
int var10
int var10
int var11
BlockType var11
int var12
int var12
int var13
int var13
int var14
Vector3d var15
RotationTuple var16
Vector3f var17
Store var5
TransformComponent var6
BlockSection var6
Vector3d var7
BlockTypeAssetMap var7
int var8
Vector3d var8
int var9

Методы (4)

МодификаторыВозвратСигнатура
for for(int var9 = 0; var9 < 32768; var9++)
if if(var6 == null)
if if(var11 != null)
abstract super super("inspectrotation", "server.commands.block.inspectrotation.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.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.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.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.Rotation;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
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 javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;

class="kw">public class BlockInspectRotationCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_ROTATION_NO_BLOCKS = Message.translation("server.commands.block.inspectrotation.noblocks");
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_ROTATION_DONE = Message.translation("server.commands.block.inspectrotation.done");

   class="kw">public BlockInspectRotationCommand() {
      super("inspectrotation", "server.commands.block.inspectrotation.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_ROTATION_NO_BLOCKS);
         } else {
            BlockTypeAssetMap var7 = BlockType.getAssetMap();
            Vector3d var8 = new Vector3d(ChunkUtil.minBlock(var11), ChunkUtil.minBlock(var12), ChunkUtil.minBlock(var13));

            for (int var9 = 0; var9 < 32768; var9++) {
               int var10 = var6.get(var9);
               BlockType var11 = var7.getAsset(var10);
               if (var11 != null) {
                  int var12 = ChunkUtil.xFromIndex(var9);
                  int var13 = ChunkUtil.yFromIndex(var9);
                  int var14 = ChunkUtil.zFromIndex(var9);
                  Vector3d var15 = new Vector3d(var12, var13, var14);
                  var15.add(0.5, 0.5, 0.5);
                  var15.add(var8);
                  RotationTuple var16 = var6.getRotation(var9);
                  if (var16.index() != 0) {
                     Vector3f var17 = new Vector3f();
                     var17.x = var16.yaw().ordinal() / (Rotation.VALUES.length - 1.0F);
                     var17.y = var16.pitch().ordinal() / (Rotation.VALUES.length - 1.0F);
                     var17.z = var16.roll().ordinal() / (Rotation.VALUES.length - 1.0F);
                     DebugUtils.addCube(var5.getExternalData().getWorld(), var15, var17, 1.05, 30.0F);
                  }
               }
            }

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