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