From a7231d5a31c140b27f2450fb5fbd26e08597b9d1 Mon Sep 17 00:00:00 2001 From: FalsePattern Date: Mon, 9 Dec 2024 18:09:33 +0100 Subject: [PATCH] separation of concerns for meta/blockid block packet --- .../internal/vanilla/BlockIDManager.java | 8 ++---- .../internal/vanilla/MetadataManager.java | 26 ++++++++++++++++++- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/falsepattern/chunk/internal/vanilla/BlockIDManager.java b/src/main/java/com/falsepattern/chunk/internal/vanilla/BlockIDManager.java index da7c6ac..bdb5b44 100644 --- a/src/main/java/com/falsepattern/chunk/internal/vanilla/BlockIDManager.java +++ b/src/main/java/com/falsepattern/chunk/internal/vanilla/BlockIDManager.java @@ -148,15 +148,11 @@ public class BlockIDManager extends VanillaManager @Override public void writeBlockPacketToBuffer(S23PacketBlockChange packet, PacketBuffer buffer) throws IOException { - buffer.writeShort((short)((Block.getIdFromBlock(packet.field_148883_d) & 0xFFF) << 4 | packet.field_148884_e & 0xF)); + buffer.writeShort(Block.getIdFromBlock(packet.field_148883_d) & 0xFFF); } @Override public void readBlockPacketFromBuffer(S23PacketBlockChange packet, PacketBuffer buffer) throws IOException { - int packed = buffer.readUnsignedShort(); - int id = (packed >> 4) & 0xFFF; - int meta = packed & 0xF; - packet.field_148883_d = Block.getBlockById(id); - packet.field_148884_e = meta; + packet.field_148883_d = Block.getBlockById(buffer.readUnsignedShort() & 0xFFF); } } diff --git a/src/main/java/com/falsepattern/chunk/internal/vanilla/MetadataManager.java b/src/main/java/com/falsepattern/chunk/internal/vanilla/MetadataManager.java index f3dc13c..33def85 100644 --- a/src/main/java/com/falsepattern/chunk/internal/vanilla/MetadataManager.java +++ b/src/main/java/com/falsepattern/chunk/internal/vanilla/MetadataManager.java @@ -30,11 +30,17 @@ import com.falsepattern.chunk.api.ArrayUtil; import com.falsepattern.chunk.api.DataManager; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; +import net.minecraft.network.play.server.S23PacketBlockChange; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.NibbleArray; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; -public class MetadataManager extends NibbleManager implements DataManager.SubChunkDataManager { +import java.io.IOException; + +public class MetadataManager extends NibbleManager implements + DataManager.BlockPacketDataManager, + DataManager.SubChunkDataManager { @Override protected NibbleArray getNibbleArray(ExtendedBlockStorage subChunk) { return subChunk.getMetadataArray(); @@ -64,4 +70,22 @@ public class MetadataManager extends NibbleManager implements DataManager.SubChu public void cloneSubChunk(Chunk fromChunk, ExtendedBlockStorage from, ExtendedBlockStorage to) { to.setBlockMetadataArray(ArrayUtil.copyArray(from.getMetadataArray(), to.getMetadataArray())); } + + @Override + public void writeBlockToPacket(Chunk chunk, int x, int y, int z, S23PacketBlockChange packet) { + } + + @Override + public void readBlockFromPacket(Chunk chunk, int x, int y, int z, S23PacketBlockChange packet) { + } + + @Override + public void writeBlockPacketToBuffer(S23PacketBlockChange packet, PacketBuffer buffer) throws IOException { + buffer.writeByte(packet.field_148884_e & 0xF); + } + + @Override + public void readBlockPacketFromBuffer(S23PacketBlockChange packet, PacketBuffer buffer) throws IOException { + packet.field_148884_e = buffer.readUnsignedByte() & 0xF; + } }