ChunkShapeCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.world.chunk

Файл: com/hypixel/hytale/server/core/command/commands/world/chunk/ChunkShapeCommand.java

extends: AbstractTargetPlayerCommand

Поля (13)

МодификаторыТипИмя
int[] var10
ChunkStore var11
Ref var11
Store var12
boolean var12
ComponentType var13
Vector3f var13
var13
var13
var13
ChunkTracker var7
boolean var8
Vector3d var9

Методы (5)

МодификаторыВозвратСигнатура
if if(!var8 || var12)
if if(!var12)
static void renderSectionvoid renderSection(@Nonnull World var0, @Nonnull Vector3d var1, int var2, int var3, int var4, @Nonnull Vector3f var5)
abstract renderSection renderSection(var5, var9, var8x, var9x, var10x, var13)
abstract super super("shape", "server.commands.chunk.shape.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.NonTicking;
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.protocol.DebugShape;
class="kw">import com.hypixel.hytale.server.core.Message;
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.AbstractTargetPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.modules.debug.DebugUtils;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.ChunkTracker;
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 javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;

class="kw">public class ChunkShapeCommand class="kw">extends AbstractTargetPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Vector3f COLOR_HOT = new Vector3f(0.2F, 0.85F, 0.25F);
   @Nonnull
   class="kw">private class="kw">static class="kw">final Vector3f COLOR_COLD = new Vector3f(0.85F, 0.45F, 0.15F);
   @Nonnull
   class="kw">private class="kw">static class="kw">final Vector3f COLOR_CASCADE_HOT = new Vector3f(0.85F, 0.85F, 0.2F);
   class="kw">private class="kw">static class="kw">final float SHAPE_TTL_SECONDS = 30.0F;
   class="kw">private class="kw">static class="kw">final double CUBE_SCALE = 16.0;
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_SUCCESS = Message.translation("server.commands.chunk.shape.success");
   @Nonnull
   class="kw">private class="kw">final FlagArg hotOnlyFlag = this.withFlagArg("hot-only", "server.commands.chunk.shape.hotOnly.desc");

   class="kw">public ChunkShapeCommand() {
      super("shape", "server.commands.chunk.shape.desc");
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1,
      @Nullable Ref<EntityStore> var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull PlayerRef var4,
      @Nonnull World var5,
      @Nonnull Store<EntityStore> var6
   ) {
      ChunkTracker var7 = var6.getComponent(var3, ChunkTracker.getComponentType());
      assert var7 != null;
      boolean var8 = this.hotOnlyFlag.get(var1);
      Vector3d var9 = new Vector3d();
      int[] var10 = new int[]{0};
      ChunkStore var11 = var5.getChunkStore();
      Store var12 = var11.getStore();
      ComponentType var13 = ChunkStore.REGISTRY.getNonTickingComponentType();
      var7.forEachLoadedSection((var8x, var9x, var10x) -> {
         Ref var11 = var11.getChunkSectionReference(var8x, var9x, var10x);
         boolean var12 = var11 != null && var11.isValid() && var12.<NonTicking<ChunkStore>>getComponent(var11, var13) == null;
         if (!var8 || var12) {
            Vector3f var13;
            if (!var12) {
               var13 = COLOR_COLD;
            } else if (var7.getSectionVisibility(var8x, var9x, var10x) == ChunkTracker.ChunkVisibility.HOT) {
               var13 = COLOR_HOT;
            } else {
               var13 = COLOR_CASCADE_HOT;
            }

            renderSection(var5, var9, var8x, var9x, var10x, var13);
            var10[0]++;
         }
      });
      var1.sendMessage(MESSAGE_SUCCESS.param("count", var10[0]));
   }

   class="kw">private class="kw">static void renderSection(@Nonnull World var0, @Nonnull Vector3d var1, int var2, int var3, int var4, @Nonnull Vector3f var5) {
      var1.set(ChunkUtil.minBlock(var2) + 16.0, ChunkUtil.minBlock(var3) + 16.0, ChunkUtil.minBlock(var4) + 16.0);
      DebugUtils.add(var0, DebugShape.Cube, DebugUtils.makeMatrix(var1, 16.0), var5, 30.0F, 0);
   }
}