BlockInspectFillerCommand class
Пакет: com.hypixel.hytale.server.core.universe.world.commands.block
Файл: com/hypixel/hytale/server/core/universe/world/commands/block/BlockInspectFillerCommand.java
extends: AbstractPlayerCommand
Поля (34)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var10 |
|
int |
var11 |
|
int |
var11 |
|
int |
var12 |
|
BlockType |
var12 |
|
int |
var13 |
|
BlockBoundingBoxes |
var13 |
|
int |
var14 |
|
int |
var15 |
|
int |
var16 |
|
int |
var17 |
|
Vector3d |
var18 |
|
int |
var19 |
|
BlockBoundingBoxes.RotatedVariantBoxes |
var20 |
|
int |
var21 |
|
int |
var22 |
|
int |
var23 |
|
Box |
var24 |
|
int |
var25 |
|
int |
var26 |
|
int |
var27 |
|
int |
var28 |
|
int |
var29 |
|
int |
var30 |
|
Vector3f |
var31 |
|
Store |
var5 |
|
TransformComponent |
var6 |
|
BlockSection |
var6 |
|
Vector3d |
var7 |
|
BlockTypeAssetMap |
var7 |
|
int |
var8 |
|
IndexedLookupTableAssetMap |
var8 |
|
int |
var9 |
|
Vector3d |
var9 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var10 = 0; var10 < 32768; var10++) |
|
|
if if(var6 == null) |
|
|
if if(var12 != null) |
|
|
if if(var25 - var24.min.x > 0.0) |
|
|
if if(var26 - var24.min.y > 0.0) |
|
|
if if(var27 - var24.min.z > 0.0) |
|
|
if if(var24.max.x - var28 > 0.0) |
|
|
if if(var24.max.y - var29 > 0.0) |
|
|
if if(var24.max.z - var30 > 0.0) |
abstract |
|
super super("inspectfiller", "server.commands.block.inspectfiller.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.assetstore.map.IndexedLookupTableAssetMap;
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.shape.Box;
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.blockhitbox.BlockBoundingBoxes;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
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 com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;
class="kw">public class BlockInspectFillerCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_FILLER_DONE = Message.translation("server.commands.block.inspectfiller.done");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_BLOCK_INSPECT_FILLER_NO_BLOCKS = Message.translation("server.commands.block.inspectfiller.noblocks");
class="kw">public BlockInspectFillerCommand() {
super("inspectfiller", "server.commands.block.inspectfiller.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_FILLER_NO_BLOCKS);
} else {
BlockTypeAssetMap var7 = BlockType.getAssetMap();
IndexedLookupTableAssetMap var8 = BlockBoundingBoxes.getAssetMap();
Vector3d var9 = new Vector3d(ChunkUtil.minBlock(var11), ChunkUtil.minBlock(var12), ChunkUtil.minBlock(var13));
for (int var10 = 0; var10 < 32768; var10++) {
int var11 = var6.get(var10);
BlockType var12 = var7.getAsset(var11);
if (var12 != null) {
BlockBoundingBoxes var13 = var8.getAsset(var12.getHitboxTypeIndex());
if (var13 != null && var13.protrudesUnitBox()) {
int var14 = var6.getFiller(var10);
int var15 = ChunkUtil.xFromIndex(var10);
int var16 = ChunkUtil.yFromIndex(var10);
int var17 = ChunkUtil.zFromIndex(var10);
Vector3d var18 = new Vector3d(var15, var16, var17);
var18.add(0.5, 0.5, 0.5);
var18.add(var9);
int var19 = var6.getRotationIndex(var10);
BlockBoundingBoxes.RotatedVariantBoxes var20 = var13.get(var19);
int var21 = FillerBlockUtil.unpackX(var14);
int var22 = FillerBlockUtil.unpackY(var14);
int var23 = FillerBlockUtil.unpackZ(var14);
Box var24 = var20.getBoundingBox();
int var25 = (int)var24.min.x;
int var26 = (int)var24.min.y;
int var27 = (int)var24.min.z;
if (var25 - var24.min.x > 0.0) {
var25--;
}
if (var26 - var24.min.y > 0.0) {
var26--;
}
if (var27 - var24.min.z > 0.0) {
var27--;
}
int var28 = (int)var24.max.x;
int var29 = (int)var24.max.y;
int var30 = (int)var24.max.z;
if (var24.max.x - var28 > 0.0) {
var28++;
}
if (var24.max.y - var29 > 0.0) {
var29++;
}
if (var24.max.z - var30 > 0.0) {
var30++;
}
Vector3f var31 = new Vector3f();
var31.x = (float)(var21 - var25) / (var28 - var25);
var31.y = (float)(var22 - var26) / (var29 - var26);
var31.z = (float)(var23 - var27) / (var30 - var27);
DebugUtils.addCube(var5.getExternalData().getWorld(), var18, var31, 1.05, 30.0F);
}
}
}
var4.sendMessage(MESSAGE_COMMANDS_BLOCK_INSPECT_FILLER_DONE);
}
}, var5));
}
}