package net.minecraft.network.protocol.common.custom; import java.util.List; import net.minecraft.core.registries.Registries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.structure.BoundingBox; public record StructuresDebugPayload(ResourceKey dimension, BoundingBox mainBB, List pieces) implements CustomPacketPayload { public static final StreamCodec STREAM_CODEC = CustomPacketPayload.codec( StructuresDebugPayload::write, StructuresDebugPayload::new ); public static final CustomPacketPayload.Type TYPE = CustomPacketPayload.createType("debug/structures"); private StructuresDebugPayload(FriendlyByteBuf buffer) { this(buffer.readResourceKey(Registries.DIMENSION), readBoundingBox(buffer), buffer.readList(StructuresDebugPayload.PieceInfo::new)); } private void write(FriendlyByteBuf buffer) { buffer.writeResourceKey(this.dimension); writeBoundingBox(buffer, this.mainBB); buffer.writeCollection(this.pieces, (friendlyByteBuf2, pieceInfo) -> pieceInfo.write(buffer)); } @Override public CustomPacketPayload.Type type() { return TYPE; } static BoundingBox readBoundingBox(FriendlyByteBuf buffer) { return new BoundingBox(buffer.readInt(), buffer.readInt(), buffer.readInt(), buffer.readInt(), buffer.readInt(), buffer.readInt()); } static void writeBoundingBox(FriendlyByteBuf buffer, BoundingBox boundingBox) { buffer.writeInt(boundingBox.minX()); buffer.writeInt(boundingBox.minY()); buffer.writeInt(boundingBox.minZ()); buffer.writeInt(boundingBox.maxX()); buffer.writeInt(boundingBox.maxY()); buffer.writeInt(boundingBox.maxZ()); } public record PieceInfo(BoundingBox boundingBox, boolean isStart) { public PieceInfo(FriendlyByteBuf buffer) { this(StructuresDebugPayload.readBoundingBox(buffer), buffer.readBoolean()); } public void write(FriendlyByteBuf buffer) { StructuresDebugPayload.writeBoundingBox(buffer, this.boundingBox); buffer.writeBoolean(this.isStart); } } }