BlockInspectPhysicsCommand class

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

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

extends: AbstractPlayerCommand

Поля (25)

МодификаторыТипИмя
continue
int var10
int var11
int var11
int var12
int var12
int var13
int var13
int var14
int var14
Vector3d var15
Vector3f var16
var16
var16
var16
var16
BlockType var17
float var18
TransformComponent var6
Vector3d var7
Store var7
boolean var8
BlockPhysics var8
int var9
Vector3d var9

Методы (6)

МодификаторыВозвратСигнатура
for for(int var10 = 0; var10 < 32768; var10++)
if if(var8 == null)
if if(var11 != 0 || var8)
if if(var11 == 15)
if if(var11 == 0)
abstract super super("inspectphys", "server.commands.block.inspectphys.desc")

Исходный код

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

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.math.vector.Vector3dUtil;
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.blocktype.component.BlockPhysics;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
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.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 BlockInspectPhysicsCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_PHYS_NO_BLOCKS = Message.translation("server.commands.block.inspectphys.noblocks");
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_PHYS_DONE = Message.translation("server.commands.block.inspectphys.done");
   class="kw">private class="kw">final FlagArg ALL = this.withFlagArg("all", "server.commands.block.inspectphys.all.desc");

   class="kw">public BlockInspectPhysicsCommand() {
      super("inspectphys", "server.commands.block.inspectphys.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();
      boolean var8 = this.ALL.get(var1);
      int var9 = MathUtil.floor(var7.x());
      int var10 = MathUtil.floor(var7.z());
      int var11 = MathUtil.floor(var7.y());
      int var12 = ChunkUtil.chunkCoordinate(var9);
      int var13 = ChunkUtil.chunkCoordinate(var11);
      int var14 = ChunkUtil.chunkCoordinate(var10);
      CompletableFutureUtil._catch(var5.getChunkStore().getChunkSectionReferenceAsync(var12, var13, var14).thenAcceptAsync(var6x -> {
         Store var7 = var6x.getStore();
         BlockPhysics var8 = var7.getComponent((Ref<ChunkStore>)var6x, BlockPhysics.getComponentType());
         if (var8 == null) {
            var4.sendMessage(MESSAGE_COMMANDS_BLOCK_INSPECT_PHYS_NO_BLOCKS);
         } else {
            Vector3d var9 = new Vector3d(ChunkUtil.minBlock(var12), ChunkUtil.minBlock(var13), ChunkUtil.minBlock(var14));

            for (int var10 = 0; var10 < 32768; var10++) {
               int var11 = var8.get(var10);
               if (var11 != 0 || var8) {
                  int var12 = ChunkUtil.xFromIndex(var10);
                  int var13 = ChunkUtil.yFromIndex(var10);
                  int var14 = ChunkUtil.zFromIndex(var10);
                  Vector3d var15 = new Vector3d(var12, var13, var14);
                  var15.add(0.5, 0.5, 0.5);
                  var15.add(var9);
                  Vector3f var16;
                  if (var11 == 15) {
                     var16 = new Vector3f(0.0F, 1.0F, 0.0F);
                  } else {
                     BlockType var17 = var5.getBlockType(Vector3dUtil.toVector3i(var15));
                     if (!var17.hasSupport()) {
                        if (var11 == 0) {
                           class="kw">continue;
                        }

                        var16 = new Vector3f(1.0F, 1.0F, 0.0F);
                     } else if (var17.getMaxSupportDistance() != 0) {
                        float var18 = (float)var11 / var17.getMaxSupportDistance();
                        var16 = new Vector3f(var18, 0.0F, 1.0F - var18);
                     } else {
                        var16 = new Vector3f(0.0F, 1.0F, 1.0F);
                     }
                  }

                  DebugUtils.addCube(var7.getExternalData().getWorld(), var15, var16, 1.05, 30.0F);
               }
            }

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