From 21aa5ce33b606aa02d1cbd56ca56ce952e07bae1 Mon Sep 17 00:00:00 2001 From: shartte Date: Wed, 22 Jul 2020 10:22:28 +0200 Subject: [PATCH] Don't use PacketBuffer#readString since it's client-only. (#4489) Fixes #4488 --- src/main/java/appeng/core/sync/BasePacket.java | 9 +++++++++ .../java/appeng/core/sync/packets/ConfigValuePacket.java | 4 ++-- .../appeng/recipes/handlers/GrinderRecipeSerializer.java | 3 ++- .../recipes/handlers/InscriberRecipeSerializer.java | 3 ++- src/main/java/appeng/tile/storage/DriveTileEntity.java | 3 ++- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/appeng/core/sync/BasePacket.java b/src/main/java/appeng/core/sync/BasePacket.java index f8f5172bd..a31d32c1d 100644 --- a/src/main/java/appeng/core/sync/BasePacket.java +++ b/src/main/java/appeng/core/sync/BasePacket.java @@ -32,6 +32,15 @@ import appeng.core.sync.network.INetworkInfo; import appeng.core.sync.network.NetworkHandler; public abstract class BasePacket { + + /** + * Sadly {@link PacketBuffer#readString()} gets inlined by Proguard which means + * it's not available on the Server. This field has the default string length + * that is used for writeString, which then also should be used for readString + * when it has no special length requirements. + */ + public static final int MAX_STRING_LENGTH = 32767; + private PacketBuffer p; public void serverPacketData(final INetworkInfo manager, final PlayerEntity player) { diff --git a/src/main/java/appeng/core/sync/packets/ConfigValuePacket.java b/src/main/java/appeng/core/sync/packets/ConfigValuePacket.java index 1d7fb2ffc..5a3bbca36 100644 --- a/src/main/java/appeng/core/sync/packets/ConfigValuePacket.java +++ b/src/main/java/appeng/core/sync/packets/ConfigValuePacket.java @@ -57,8 +57,8 @@ public class ConfigValuePacket extends BasePacket { private final String Value; public ConfigValuePacket(final PacketBuffer stream) { - this.Name = stream.readString(); - this.Value = stream.readString(); + this.Name = stream.readString(MAX_STRING_LENGTH); + this.Value = stream.readString(MAX_STRING_LENGTH); } // api diff --git a/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java b/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java index 6b8af2a9e..38d5b8c08 100644 --- a/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java +++ b/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java @@ -21,6 +21,7 @@ import net.minecraftforge.registries.ForgeRegistryEntry; import appeng.core.AEConfig; import appeng.core.AppEng; +import appeng.core.sync.BasePacket; public class GrinderRecipeSerializer extends ForgeRegistryEntry> implements IRecipeSerializer { @@ -70,7 +71,7 @@ public class GrinderRecipeSerializer extends ForgeRegistryEntry> implements IRecipeSerializer { @@ -67,7 +68,7 @@ public class InscriberRecipeSerializer extends ForgeRegistryEntry