diff --git a/Spigot-Server-Patches/Prevent-possible-infinite-loop-in-BlockPosition-iter.patch b/Spigot-Server-Patches/Prevent-possible-infinite-loop-in-BlockPosition-iter.patch index f12a486243..13bbd26020 100644 --- a/Spigot-Server-Patches/Prevent-possible-infinite-loop-in-BlockPosition-iter.patch +++ b/Spigot-Server-Patches/Prevent-possible-infinite-loop-in-BlockPosition-iter.patch @@ -47,4 +47,43 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.b = new BlockPosition(i, j, k); return this.b; +@@ -0,0 +0,0 @@ public class BlockPosition extends BaseBlockPosition { + + protected BlockPosition.MutableBlockPosition a() { + if (this.b == null) { +- this.b = new BlockPosition.MutableBlockPosition(blockposition.getX(), blockposition.getY(), blockposition.getZ()); ++ this.b = new BlockPosition.MutableBlockPosition(blockposition2.getX(), blockposition2.getY(), blockposition2.getZ()); // Paper - use blockposition2 instead of blockposition to prevent infinite loops + return this.b; +- } else if (this.b.equals(blockposition1)) { ++ } else if (this.b.equals(blockposition3)) { // Paper - use blockposition3 instead of blockposition1 to prevent infinite loops + return (BlockPosition.MutableBlockPosition) this.endOfData(); + } else { + int i = this.b.getX(); + int j = this.b.getY(); + int k = this.b.getZ(); + ++ // Paper start - use blockposition2 and blockposition3 to prevent infinite loops ++ /* + if (i < blockposition1.getX()) { + ++i; + } else if (j < blockposition1.getY()) { +@@ -0,0 +0,0 @@ public class BlockPosition extends BaseBlockPosition { + j = blockposition.getY(); + ++k; + } ++ */ ++ if (i < blockposition3.getX()) { ++ ++i; ++ } else if (j < blockposition3.getY()) { ++ i = blockposition2.getX(); ++ ++j; ++ } else if (k < blockposition3.getZ()) { ++ i = blockposition2.getX(); ++ j = blockposition2.getY(); ++ ++k; ++ } ++ // Paper end + + // Paper start - modify base position variables + ((BaseBlockPosition) this.b).a = i; -- \ No newline at end of file