From 7f40671ad8841be99ce45ef00eb9fd35c12e1dc4 Mon Sep 17 00:00:00 2001 From: LexManos Date: Sat, 18 Aug 2012 02:16:17 -0700 Subject: [PATCH] Fix MC packet bugs for remote servers that use blocks with ids > 256 --- .../minecraft/src/Packet51MapChunk.java.patch | 16 ++++++++++++++++ .../minecraft/src/Packet56MapChunks.java.patch | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 patches/common/net/minecraft/src/Packet51MapChunk.java.patch create mode 100644 patches/common/net/minecraft/src/Packet56MapChunks.java.patch diff --git a/patches/common/net/minecraft/src/Packet51MapChunk.java.patch b/patches/common/net/minecraft/src/Packet51MapChunk.java.patch new file mode 100644 index 0000000000..db7b75519f --- /dev/null +++ b/patches/common/net/minecraft/src/Packet51MapChunk.java.patch @@ -0,0 +1,16 @@ +--- ../src_base/common/net/minecraft/src/Packet51MapChunk.java ++++ ../src_work/common/net/minecraft/src/Packet51MapChunk.java +@@ -100,6 +100,13 @@ + + var3 = 12288 * var2; + ++ int msb = 0; //BugFix: MC does not read the MSB array from the packet properly, causing issues for servers that use blocks > 256 ++ for (var3 = 0; var3 < 16; ++var3) ++ { ++ msb += this.yChMax >> var3 & 1; ++ } ++ var3 += (2048 * msb); ++ + if (this.includeInitialize) + { + var3 += 256; diff --git a/patches/common/net/minecraft/src/Packet56MapChunks.java.patch b/patches/common/net/minecraft/src/Packet56MapChunks.java.patch new file mode 100644 index 0000000000..3a8c9dc309 --- /dev/null +++ b/patches/common/net/minecraft/src/Packet56MapChunks.java.patch @@ -0,0 +1,17 @@ +--- ../src_base/common/net/minecraft/src/Packet56MapChunks.java ++++ ../src_work/common/net/minecraft/src/Packet56MapChunks.java +@@ -121,7 +121,13 @@ + var7 += this.field_73590_a[var6] >> var8 & 1; + } + +- var8 = 2048 * 5 * var7 + 256; ++ int msb = 0; //BugFix: MC does not read the MSB array from the packet properly, causing issues for servers that use blocks > 256 ++ for (var8 = 0; var8 < 16; ++var8) ++ { ++ msb += this.field_73588_b[var6] >> var8 & 1; ++ } ++ ++ var8 = 2048 * 5 * var7 + (2048 * msb) + 256; + this.field_73584_f[var6] = new byte[var8]; + System.arraycopy(var3, var5, this.field_73584_f[var6], 0, var8); + var5 += var8;