From 6a43ee25c71f48baea8b7f89e2d3bd6f6babf78a Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 16 Feb 2021 11:03:05 -0400 Subject: [PATCH] fixes #712 --- .../UpdateStructureBlockC2SPacketMixin.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java index da3d391a..29298f17 100644 --- a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java +++ b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java @@ -1,6 +1,8 @@ package carpet.mixins; +import carpet.CarpetServer; import carpet.CarpetSettings; +import carpet.network.CarpetClient; import net.minecraft.network.PacketByteBuf; import net.minecraft.network.packet.c2s.play.UpdateStructureBlockC2SPacket; import net.minecraft.util.math.BlockPos; @@ -23,7 +25,7 @@ public class UpdateStructureBlockC2SPacketMixin { at = @At("TAIL") ) private void structureBlockLimitsRead(PacketByteBuf buf, CallbackInfo ci) { - if (buf.readableBytes() > 0) { + if (buf.readableBytes() == 6*4) { // This will throw an exception if carpet is not installed on client offset = new BlockPos(MathHelper.clamp(buf.readInt(), -CarpetSettings.structureBlockLimit, CarpetSettings.structureBlockLimit), MathHelper.clamp(buf.readInt(), -CarpetSettings.structureBlockLimit, CarpetSettings.structureBlockLimit), MathHelper.clamp(buf.readInt(), -CarpetSettings.structureBlockLimit, CarpetSettings.structureBlockLimit)); size = new BlockPos(MathHelper.clamp(buf.readInt(), 0, CarpetSettings.structureBlockLimit), MathHelper.clamp(buf.readInt(), 0, CarpetSettings.structureBlockLimit), MathHelper.clamp(buf.readInt(), 0, CarpetSettings.structureBlockLimit)); @@ -35,11 +37,15 @@ public class UpdateStructureBlockC2SPacketMixin { at = @At("TAIL") ) private void structureBlockLimitsWrite(PacketByteBuf buf, CallbackInfo ci) { - buf.writeInt(this.offset.getX()); - buf.writeInt(this.offset.getY()); - buf.writeInt(this.offset.getZ()); - buf.writeInt(this.size.getX()); - buf.writeInt(this.size.getY()); - buf.writeInt(this.size.getZ()); + //client method, only applicable if with carpet is on the server, or running locally + if (CarpetClient.isCarpet() || CarpetServer.minecraft_server != null) + { + buf.writeInt(this.offset.getX()); + buf.writeInt(this.offset.getY()); + buf.writeInt(this.offset.getZ()); + buf.writeInt(this.size.getX()); + buf.writeInt(this.size.getY()); + buf.writeInt(this.size.getZ()); + } } }