From ac58987add51634ea8a736ccabfd431be49edc37 Mon Sep 17 00:00:00 2001 From: Minecrell Date: Thu, 19 Jul 2018 19:50:34 +0200 Subject: [PATCH] Fix decompile/deobfuscation error in BlockPosition iterator Some of the fields in the anonymous class are named the same as the surrounding method's parameters, which caused the fields to be initialized incorrectly. That way it keeps returning the same block position, resulting in an infinite loop during chunk generation. --- Spigot-Server-Patches/0003-MC-Dev-fixes.patch | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/Spigot-Server-Patches/0003-MC-Dev-fixes.patch b/Spigot-Server-Patches/0003-MC-Dev-fixes.patch index 465c820e8..435437e4c 100644 --- a/Spigot-Server-Patches/0003-MC-Dev-fixes.patch +++ b/Spigot-Server-Patches/0003-MC-Dev-fixes.patch @@ -1,4 +1,4 @@ -From 79ef4326d4c33e7ce3ee139aa0ed5c101762af81 Mon Sep 17 00:00:00 2001 +From f25c458df3c7d564f49697dbdcf59faea5375903 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 30 Mar 2016 19:36:20 -0400 Subject: [PATCH] MC Dev fixes @@ -14,6 +14,48 @@ index e8f7b7292..a0ebc1eaa 100644 } + } +diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java +index 002da2a19..121a137f3 100644 +--- a/src/main/java/net/minecraft/server/BlockPosition.java ++++ b/src/main/java/net/minecraft/server/BlockPosition.java +@@ -150,7 +150,7 @@ public class BlockPosition extends BaseBlockPosition { + return a(Math.min(blockposition.getX(), blockposition1.getX()), Math.min(blockposition.getY(), blockposition1.getY()), Math.min(blockposition.getZ(), blockposition1.getZ()), Math.max(blockposition.getX(), blockposition1.getX()), Math.max(blockposition.getY(), blockposition1.getY()), Math.max(blockposition.getZ(), blockposition1.getZ())); + } + +- public static Iterable a(int i, int j, int k, int l, int i1, int j1) { ++ public static Iterable a(int x0, int y0, int z0, int l, int i1, int j1) { + return () -> { + return new AbstractIterator() { + private boolean g = true; +@@ -161,21 +161,21 @@ public class BlockPosition extends BaseBlockPosition { + protected BlockPosition a() { + if (this.g) { + this.g = false; +- this.h = i; +- this.i = j; +- this.j = k; +- return new BlockPosition(i, j, k); ++ this.h = x0; ++ this.i = y0; ++ this.j = z0; ++ return new BlockPosition(x0, y0, z0); + } else if (this.h == l && this.i == i1 && this.j == j1) { + return (BlockPosition) this.endOfData(); + } else { + if (this.h < l) { + ++this.h; + } else if (this.i < i1) { +- this.h = i; ++ this.h = x0; + ++this.i; + } else if (this.j < j1) { +- this.h = i; +- this.i = j; ++ this.h = x0; ++ this.i = y0; + ++this.j; + } + -- 2.18.0