aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0388-ChunkMapDistance-CME.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0388-ChunkMapDistance-CME.patch')
-rw-r--r--Spigot-Server-Patches/0388-ChunkMapDistance-CME.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0388-ChunkMapDistance-CME.patch b/Spigot-Server-Patches/0388-ChunkMapDistance-CME.patch
new file mode 100644
index 0000000000..c1e3bc7236
--- /dev/null
+++ b/Spigot-Server-Patches/0388-ChunkMapDistance-CME.patch
@@ -0,0 +1,54 @@
+From f740ce691e50b45b0fb0b729ce92c5e1ead81226 Mon Sep 17 00:00:00 2001
+From: Shane Freeder <[email protected]>
+Date: Wed, 29 May 2019 04:01:22 +0100
+Subject: [PATCH] ChunkMapDistance CME
+
+
+diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java
+index 101eb58ac..63a688725 100644
+--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
++++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java
+@@ -36,7 +36,7 @@ public abstract class ChunkMapDistance {
+ private final ChunkMapDistance.a e = new ChunkMapDistance.a();
+ private final ChunkMapDistance.b f = new ChunkMapDistance.b(8);
+ private final ChunkMapDistance.c g = new ChunkMapDistance.c(33);
+- private final Set<PlayerChunk> pendingChunkUpdates = Sets.newHashSet();
++ private final java.util.Queue<PlayerChunk> pendingChunkUpdates = new java.util.LinkedList<>(); // PAIL pendingChunkUpdates // Paper - use a queue
+ private final ChunkTaskQueueSorter i;
+ private final Mailbox<ChunkTaskQueueSorter.a<Runnable>> j;
+ private final Mailbox<ChunkTaskQueueSorter.b> k;
+@@ -99,26 +99,12 @@ public abstract class ChunkMapDistance {
+ ;
+ }
+
++ // Paper start
+ if (!this.pendingChunkUpdates.isEmpty()) {
+- // CraftBukkit start
+- // Iterate pending chunk updates with protection against concurrent modification exceptions
+- java.util.Iterator<PlayerChunk> iter = this.pendingChunkUpdates.iterator();
+- int expectedSize = this.pendingChunkUpdates.size();
+- do {
+- PlayerChunk playerchunk = iter.next();
+- iter.remove();
+- expectedSize--;
+-
+- playerchunk.a(playerchunkmap);
+-
+- // Reset iterator if set was modified using add()
+- if (this.pendingChunkUpdates.size() != expectedSize) {
+- expectedSize = this.pendingChunkUpdates.size();
+- iter = this.pendingChunkUpdates.iterator();
+- }
+- } while (iter.hasNext());
+- // CraftBukkit end
+-
++ while(!this.pendingChunkUpdates.isEmpty()) {
++ this.pendingChunkUpdates.remove().a(playerchunkmap);
++ }
++ // Paper end
+ return true;
+ } else {
+ if (!this.l.isEmpty()) {
+--
+2.23.0
+