From 6a43ee25c71f48baea8b7f89e2d3bd6f6babf78a Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 16 Feb 2021 11:03:05 -0400 Subject: [PATCH 1/3] 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()); + } } } From 5b1ef770097259e61d340f24ebbc57629aa9955f Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 16 Feb 2021 11:08:54 -0400 Subject: [PATCH 2/3] only when necessary really --- .../java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java index 29298f17..74a36526 100644 --- a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java +++ b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java @@ -38,7 +38,7 @@ public class UpdateStructureBlockC2SPacketMixin { ) private void structureBlockLimitsWrite(PacketByteBuf buf, CallbackInfo ci) { //client method, only applicable if with carpet is on the server, or running locally - if (CarpetClient.isCarpet() || CarpetServer.minecraft_server != null) + if (CarpetSettings.structureBlockLimit >= 128 && (CarpetClient.isCarpet() || CarpetServer.minecraft_server != null)) { buf.writeInt(this.offset.getX()); buf.writeInt(this.offset.getY()); From df7a4a6681bd2c23fbcefabed87e3d591b2ba6a3 Mon Sep 17 00:00:00 2001 From: gnembon Date: Wed, 17 Feb 2021 03:09:41 -0400 Subject: [PATCH 3/3] applying altrisi's observations. --- src/main/java/carpet/CarpetSettings.java | 2 +- .../java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index f77a1a2f..40fdb082 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -819,7 +819,7 @@ public class CarpetSettings "'structureBlockOutlineDistance' may be required for", "correct rendering of long structures."}, options = {"48", "96", "192", "256"}, - category = {CREATIVE, CLIENT}, + category = CREATIVE, validate = StructureBlockLimitValidator.class, strict = false ) diff --git a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java index 74a36526..b7177773 100644 --- a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java +++ b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java @@ -38,7 +38,7 @@ public class UpdateStructureBlockC2SPacketMixin { ) private void structureBlockLimitsWrite(PacketByteBuf buf, CallbackInfo ci) { //client method, only applicable if with carpet is on the server, or running locally - if (CarpetSettings.structureBlockLimit >= 128 && (CarpetClient.isCarpet() || CarpetServer.minecraft_server != null)) + if (CarpetSettings.structureBlockLimit >= 128) { buf.writeInt(this.offset.getX()); buf.writeInt(this.offset.getY());