Fixes CME cause by plugin

This commit is contained in:
Sotr
2018-08-02 13:18:21 +08:00
parent 05cc09ff51
commit 5d5bb381c0

View File

@@ -16,7 +16,6 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -58,7 +57,7 @@ public class PlayerChunkMap {
private final Set<PlayerChunk> f = Sets.newHashSet(); private final Set<PlayerChunk> f = Sets.newHashSet();
private final List<PlayerChunk> g = Lists.newLinkedList(); private final List<PlayerChunk> g = Lists.newLinkedList();
private final List<PlayerChunk> h = Lists.newLinkedList(); private final List<PlayerChunk> h = Lists.newLinkedList();
private final List<PlayerChunk> i = Lists.newArrayList(); private final List<PlayerChunk> 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 AtomicInteger j = new AtomicInteger(); public int getViewDistance() { return j.get(); } // Paper OBFHELPER // Akarin - atmoic
private long k; private long k;
private AtomicBoolean l = new AtomicBoolean(true); // Akarin - atmoic private AtomicBoolean l = new AtomicBoolean(true); // Akarin - atmoic
@@ -74,10 +73,10 @@ public class PlayerChunkMap {
return this.world; return this.world;
} }
public synchronized Iterator<Chunk> b() { // Akarin - synchronized public Iterator<Chunk> b() {
final Iterator iterator = this.i.iterator(); final Iterator iterator = this.i.iterator();
return new AbstractIterator() { return new AbstractIterator<Chunk>() {
protected Chunk a() { protected Chunk a() {
while (true) { while (true) {
if (iterator.hasNext()) { if (iterator.hasNext()) {
@@ -107,7 +106,7 @@ public class PlayerChunkMap {
} }
} }
protected Object computeNext() { protected Chunk computeNext() {
return this.a(); return this.a();
} }
}; };