From 5d5bb381c095c90520a1d2d20bc5952f88897321 Mon Sep 17 00:00:00 2001 From: Sotr Date: Thu, 2 Aug 2018 13:18:21 +0800 Subject: [PATCH] Fixes CME cause by plugin --- .../main/java/net/minecraft/server/PlayerChunkMap.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sources/src/main/java/net/minecraft/server/PlayerChunkMap.java b/sources/src/main/java/net/minecraft/server/PlayerChunkMap.java index fdeb2585c..e47f98a69 100644 --- a/sources/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/sources/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -16,7 +16,6 @@ import java.util.List; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.ReentrantReadWriteLock; import javax.annotation.Nullable; @@ -58,7 +57,7 @@ public class PlayerChunkMap { private final Set f = Sets.newHashSet(); private final List g = Lists.newLinkedList(); private final List h = Lists.newLinkedList(); - private final List i = Lists.newArrayList(); + private final List i = Lists.newCopyOnWriteArrayList(); // Akarin - bad plugin will access this private AtomicInteger j = new AtomicInteger(); public int getViewDistance() { return j.get(); } // Paper OBFHELPER // Akarin - atmoic private long k; private AtomicBoolean l = new AtomicBoolean(true); // Akarin - atmoic @@ -74,10 +73,10 @@ public class PlayerChunkMap { return this.world; } - public synchronized Iterator b() { // Akarin - synchronized + public Iterator b() { final Iterator iterator = this.i.iterator(); - return new AbstractIterator() { + return new AbstractIterator() { protected Chunk a() { while (true) { if (iterator.hasNext()) { @@ -107,7 +106,7 @@ public class PlayerChunkMap { } } - protected Object computeNext() { + protected Chunk computeNext() { return this.a(); } };