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