Use distance map to optimise entity tracker / Misc Utils
Use the distance map to find candidate players for tracking. This also ports a few utility changes from Tuinity
Dieser Commit ist enthalten in:
Ursprung
d80d15174b
Commit
b4e629a283
@ -1,4 +1,4 @@
|
||||
From 3837658c3b4d01d6c8ef94bc972a644eb77e222f Mon Sep 17 00:00:00 2001
|
||||
From b9fa8d98289a044c4bc231ef79435e27d829a5de Mon Sep 17 00:00:00 2001
|
||||
From: MiniDigger <admin@minidigger.me>
|
||||
Date: Fri, 3 Jan 2020 16:24:46 +0100
|
||||
Subject: [PATCH] Add Mob Goal API
|
||||
@ -462,5 +462,5 @@ index 957a6016..4fecbe94 100644
|
||||
/**
|
||||
* Check if this is tamed
|
||||
--
|
||||
2.17.1
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b2436021374f61062a581239cc1a3500edd54bb4 Mon Sep 17 00:00:00 2001
|
||||
From e84c20166fcaa037639b0f5205807b1af111257f Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 28 Mar 2016 20:55:47 -0400
|
||||
Subject: [PATCH] MC Utils
|
||||
@ -248,10 +248,10 @@ index 0000000000..59868f37d1
|
||||
+}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/util/map/QueuedChangesMapLong2Object.java b/src/main/java/com/destroystokyo/paper/util/map/QueuedChangesMapLong2Object.java
|
||||
new file mode 100644
|
||||
index 0000000000..07685b6bd5
|
||||
index 0000000000..7bab31a312
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/util/map/QueuedChangesMapLong2Object.java
|
||||
@@ -0,0 +1,172 @@
|
||||
@@ -0,0 +1,202 @@
|
||||
+package com.destroystokyo.paper.util.map;
|
||||
+
|
||||
+import com.destroystokyo.paper.util.concurrent.WeakSeqLock;
|
||||
@ -300,10 +300,18 @@ index 0000000000..07685b6bd5
|
||||
+ return this.updatingMap.get(k);
|
||||
+ }
|
||||
+
|
||||
+ public boolean updatingContainsKey(final long k) {
|
||||
+ return this.updatingMap.containsKey(k);
|
||||
+ }
|
||||
+
|
||||
+ public V getVisible(final long k) {
|
||||
+ return this.visibleMap.get(k);
|
||||
+ }
|
||||
+
|
||||
+ public boolean visibleContainsKey(final long k) {
|
||||
+ return this.visibleMap.containsKey(k);
|
||||
+ }
|
||||
+
|
||||
+ public V getVisibleAsync(final long k) {
|
||||
+ long readlock;
|
||||
+ V ret = null;
|
||||
@ -326,6 +334,28 @@ index 0000000000..07685b6bd5
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ public boolean visibleContainsKeyAsync(final long k) {
|
||||
+ long readlock;
|
||||
+ boolean ret = false;
|
||||
+
|
||||
+ do {
|
||||
+ readlock = this.updatingMapSeqLock.acquireRead();
|
||||
+
|
||||
+ try {
|
||||
+ ret = this.visibleMap.containsKey(k);
|
||||
+ } catch (final Throwable thr) {
|
||||
+ if (thr instanceof ThreadDeath) {
|
||||
+ throw (ThreadDeath)thr;
|
||||
+ }
|
||||
+ // ignore...
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ } while (!this.updatingMapSeqLock.tryReleaseRead(readlock));
|
||||
+
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ public Long2ObjectLinkedOpenHashMap<V> getVisibleMap() {
|
||||
+ return this.visibleMap;
|
||||
+ }
|
||||
@ -1065,10 +1095,10 @@ index 0000000000..c3b936f54b
|
||||
+}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
|
||||
new file mode 100644
|
||||
index 0000000000..f625da9f09
|
||||
index 0000000000..c71ed11834
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
|
||||
@@ -0,0 +1,409 @@
|
||||
@@ -0,0 +1,439 @@
|
||||
+package com.destroystokyo.paper.util.misc;
|
||||
+
|
||||
+import com.destroystokyo.paper.util.math.IntegerUtil;
|
||||
@ -1148,27 +1178,57 @@ index 0000000000..f625da9f09
|
||||
+ return this.areaMap.size();
|
||||
+ }
|
||||
+
|
||||
+ public final void update(final E object, final int chunkX, final int chunkZ, final int viewDistance) {
|
||||
+ public final void addOrUpdate(final E object, final int chunkX, final int chunkZ, final int viewDistance) {
|
||||
+ final int oldViewDistance = this.objectToViewDistance.put(object, viewDistance);
|
||||
+ final long newPos = MCUtil.getCoordinateKey(chunkX, chunkZ);
|
||||
+ final long oldPos = this.objectToLastCoordinate.put(object, newPos);
|
||||
+
|
||||
+ if (oldViewDistance == -1) {
|
||||
+ this.objectToLastCoordinate.put(object, newPos);
|
||||
+ this.addObject(object, chunkX, chunkZ, Integer.MIN_VALUE, Integer.MIN_VALUE, viewDistance);
|
||||
+ this.addObjectCallback(object, chunkX, chunkZ, viewDistance);
|
||||
+ } else {
|
||||
+ final long oldPos = this.objectToLastCoordinate.put(object, newPos);
|
||||
+ this.updateObject(object, oldPos, newPos, oldViewDistance, viewDistance);
|
||||
+ this.updateObjectCallback(object, oldPos, newPos, oldViewDistance, viewDistance);
|
||||
+ }
|
||||
+ //this.validate(object, viewDistance);
|
||||
+ }
|
||||
+
|
||||
+ // called after the distance map updates
|
||||
+ protected void addObjectCallback(final E object, final int chunkX, final int chunkZ, final int viewDistance) {}
|
||||
+ public final boolean update(final E object, final int chunkX, final int chunkZ, final int viewDistance) {
|
||||
+ final int oldViewDistance = this.objectToViewDistance.replace(object, viewDistance);
|
||||
+ if (oldViewDistance == -1) {
|
||||
+ return false;
|
||||
+ } else {
|
||||
+ final long newPos = MCUtil.getCoordinateKey(chunkX, chunkZ);
|
||||
+ final long oldPos = this.objectToLastCoordinate.put(object, newPos);
|
||||
+ this.updateObject(object, oldPos, newPos, oldViewDistance, viewDistance);
|
||||
+ this.updateObjectCallback(object, oldPos, newPos, oldViewDistance, viewDistance);
|
||||
+ }
|
||||
+ //this.validate(object, viewDistance);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ // called after the distance map updates
|
||||
+ protected void updateObjectCallback(final E Object, final long oldPosition, final long newPosition, final int oldViewDistance, final int newViewDistance) {}
|
||||
+
|
||||
+ public final boolean add(final E object, final int chunkX, final int chunkZ, final int viewDistance) {
|
||||
+ final int oldViewDistance = this.objectToViewDistance.putIfAbsent(object, viewDistance);
|
||||
+ if (oldViewDistance != -1) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ final long newPos = MCUtil.getCoordinateKey(chunkX, chunkZ);
|
||||
+ this.objectToLastCoordinate.put(object, newPos);
|
||||
+ this.addObject(object, chunkX, chunkZ, Integer.MIN_VALUE, Integer.MIN_VALUE, viewDistance);
|
||||
+ this.addObjectCallback(object, chunkX, chunkZ, viewDistance);
|
||||
+
|
||||
+ //this.validate(object, viewDistance);
|
||||
+
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ // called after the distance map updates
|
||||
+ protected void addObjectCallback(final E object, final int chunkX, final int chunkZ, final int viewDistance) {}
|
||||
+
|
||||
+ public final boolean remove(final E object) {
|
||||
+ final long position = this.objectToLastCoordinate.removeLong(object);
|
||||
+ final int viewDistance = this.objectToViewDistance.removeInt(object);
|
||||
@ -2015,6 +2075,197 @@ index 0000000000..e51104e65a
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/util/pooled/PooledObjects.java b/src/main/java/com/destroystokyo/paper/util/pooled/PooledObjects.java
|
||||
new file mode 100644
|
||||
index 0000000000..d4325f1f11
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/util/pooled/PooledObjects.java
|
||||
@@ -0,0 +1,185 @@
|
||||
+package com.destroystokyo.paper.util.pooled;
|
||||
+
|
||||
+import org.apache.commons.lang3.mutable.MutableInt;
|
||||
+import java.util.ArrayDeque;
|
||||
+import java.util.concurrent.ThreadLocalRandom;
|
||||
+import java.util.concurrent.locks.ReentrantLock;
|
||||
+
|
||||
+public final class PooledObjects<E> {
|
||||
+
|
||||
+ public static final PooledObjects<MutableInt> POOLED_MUTABLE_INTEGERS = new PooledObjects<>(new PooledObjectHandler<MutableInt>() {
|
||||
+ @Override
|
||||
+ public MutableInt createNew() {
|
||||
+ return new MutableInt();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onAcquire(final MutableInt value) {}
|
||||
+
|
||||
+ @Override
|
||||
+ public void onRelease(final MutableInt value) {}
|
||||
+ }, 200, -1);
|
||||
+
|
||||
+ private final PooledObjectHandler<E> handler;
|
||||
+ private final int maxPoolSize;
|
||||
+ private final int expectingThreads;
|
||||
+
|
||||
+ private final IsolatedPool<E> mainPool;
|
||||
+ // use these under contention
|
||||
+ private final IsolatedPool<E>[] contendedPools;
|
||||
+
|
||||
+ public PooledObjects(final PooledObjectHandler<E> handler, final int maxPoolSize, int expectingThreads) {
|
||||
+ if (handler == null) {
|
||||
+ throw new NullPointerException("Handler must not be null");
|
||||
+ }
|
||||
+ if (maxPoolSize <= 0) {
|
||||
+ throw new IllegalArgumentException("Max pool size must be greater-than 0");
|
||||
+ }
|
||||
+ if (expectingThreads <= 0) {
|
||||
+ expectingThreads = Runtime.getRuntime().availableProcessors();
|
||||
+ }
|
||||
+
|
||||
+ this.handler = handler;
|
||||
+ this.maxPoolSize = maxPoolSize;
|
||||
+ this.expectingThreads = expectingThreads;
|
||||
+ this.mainPool = new IsolatedPool<>(handler, maxPoolSize);
|
||||
+ final IsolatedPool<E>[] contendedPools = new IsolatedPool[2 * expectingThreads];
|
||||
+
|
||||
+ for (int i = 0; i < contendedPools.length; ++i) {
|
||||
+ contendedPools[i] = new IsolatedPool<>(handler, Math.max(1, maxPoolSize / 2));
|
||||
+ }
|
||||
+
|
||||
+ this.contendedPools = contendedPools;
|
||||
+ }
|
||||
+
|
||||
+ // Taken from
|
||||
+ // https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/
|
||||
+ // https://github.com/lemire/Code-used-on-Daniel-Lemire-s-blog/blob/master/2016/06/25/fastrange.c
|
||||
+ // Original license is public domain
|
||||
+ public static int fastRandomBounded(final long randomInteger, final long limit) {
|
||||
+ // randomInteger must be [0, pow(2, 32))
|
||||
+ // limit must be [0, pow(2, 32))
|
||||
+ return (int)((randomInteger * limit) >>> 32);
|
||||
+ }
|
||||
+
|
||||
+ public E acquire() {
|
||||
+ E ret;
|
||||
+ PooledObjects.IsolatedPool<E> pooled = this.mainPool;
|
||||
+ int lastIndex = -1;
|
||||
+ while ((ret = pooled.tryAcquireUncontended()) == null) {
|
||||
+ int index;
|
||||
+ while (lastIndex == (index = fastRandomBounded(ThreadLocalRandom.current().nextInt() & 0xFFFFFFFFL, this.contendedPools.length)));
|
||||
+ lastIndex = index;
|
||||
+ pooled = this.contendedPools[index];
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ public void release(final E value) {
|
||||
+ PooledObjects.IsolatedPool<E> pooled = this.mainPool;
|
||||
+ int lastIndex = -1;
|
||||
+ while (!pooled.tryReleaseUncontended(value)) {
|
||||
+ int index;
|
||||
+ while (lastIndex == (index = fastRandomBounded(ThreadLocalRandom.current().nextInt() & 0xFFFFFFFFL, this.contendedPools.length)));
|
||||
+ lastIndex = index;
|
||||
+ pooled = this.contendedPools[index];
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /** This object is restricted from interacting with any pool */
|
||||
+ static interface PooledObjectHandler<E> {
|
||||
+
|
||||
+ /**
|
||||
+ * Must return a non-null object
|
||||
+ */
|
||||
+ E createNew();
|
||||
+
|
||||
+ void onAcquire(final E value);
|
||||
+
|
||||
+ void onRelease(final E value);
|
||||
+ }
|
||||
+
|
||||
+ protected static class IsolatedPool<E> {
|
||||
+
|
||||
+ protected final PooledObjectHandler<E> handler;
|
||||
+
|
||||
+ // We use arraydeque as it doesn't create garbage per element...
|
||||
+ protected final ArrayDeque<E> pool;
|
||||
+ protected final int maxPoolSize;
|
||||
+
|
||||
+ protected final ReentrantLock lock = new ReentrantLock();
|
||||
+
|
||||
+ public IsolatedPool(final PooledObjectHandler<E> handler, final int maxPoolSize) {
|
||||
+ this.handler = handler;
|
||||
+ this.pool = new ArrayDeque<>();
|
||||
+ this.maxPoolSize = maxPoolSize;
|
||||
+ }
|
||||
+
|
||||
+ protected E acquireOrCreateNoLock() {
|
||||
+ E ret;
|
||||
+
|
||||
+ ret = this.pool.poll();
|
||||
+
|
||||
+ if (ret == null) {
|
||||
+ ret = this.handler.createNew();
|
||||
+ }
|
||||
+ this.handler.onAcquire(ret);
|
||||
+
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ public E tryAcquireUncontended() {
|
||||
+ if (!this.lock.tryLock()) {
|
||||
+ return null;
|
||||
+ }
|
||||
+ try {
|
||||
+ return this.acquireOrCreateNoLock();
|
||||
+ } finally {
|
||||
+ this.lock.unlock();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public E acquire() {
|
||||
+ this.lock.lock();
|
||||
+ try {
|
||||
+ return this.acquireOrCreateNoLock();
|
||||
+ } finally {
|
||||
+ this.lock.unlock();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ protected void releaseNoLock(final E value) {
|
||||
+ if (this.pool.size() >= this.maxPoolSize) {
|
||||
+ this.handler.onRelease(value);
|
||||
+ return; // can't accept, we're at capacity
|
||||
+ }
|
||||
+
|
||||
+ this.pool.add(value);
|
||||
+ this.handler.onRelease(value);
|
||||
+ }
|
||||
+
|
||||
+ public boolean tryReleaseUncontended(final E value) {
|
||||
+ if (!this.lock.tryLock()) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ try {
|
||||
+ this.releaseNoLock(value);
|
||||
+ } finally {
|
||||
+ this.lock.unlock();
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ public void release(final E value) {
|
||||
+ this.lock.lock();
|
||||
+ try {
|
||||
+ this.releaseNoLock(value);
|
||||
+ } finally {
|
||||
+ this.lock.unlock();
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java b/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java
|
||||
new file mode 100644
|
||||
index 0000000000..9df0006c1a
|
||||
@ -2136,7 +2387,7 @@ index 1cf97cefc9..2040f18349 100644
|
||||
return this.d.containsKey(iblockstate);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
index c88a62f6b7..5dbd3e60fe 100644
|
||||
index c88a62f6b7..f8ac39e1b0 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
@@ -120,6 +120,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@ -2156,7 +2407,15 @@ index c88a62f6b7..5dbd3e60fe 100644
|
||||
public BlockPosition immutableCopy() {
|
||||
return this;
|
||||
}
|
||||
@@ -402,6 +405,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -264,6 +267,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
super(i, j, k);
|
||||
}
|
||||
|
||||
+ public static BlockPosition.PooledBlockPosition acquire() { return r(); } // Paper - OBFHELPER
|
||||
public static BlockPosition.PooledBlockPosition r() {
|
||||
return f(0, 0, 0);
|
||||
}
|
||||
@@ -402,6 +406,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
return this.d;
|
||||
}
|
||||
|
||||
@ -2164,7 +2423,7 @@ index c88a62f6b7..5dbd3e60fe 100644
|
||||
public BlockPosition.MutableBlockPosition d(int i, int j, int k) {
|
||||
this.b = i;
|
||||
this.c = j;
|
||||
@@ -413,6 +417,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -413,6 +418,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
return this.c(entity.locX(), entity.locY(), entity.locZ());
|
||||
}
|
||||
|
||||
@ -2172,7 +2431,7 @@ index c88a62f6b7..5dbd3e60fe 100644
|
||||
public BlockPosition.MutableBlockPosition c(double d0, double d1, double d2) {
|
||||
return this.d(MathHelper.floor(d0), MathHelper.floor(d1), MathHelper.floor(d2));
|
||||
}
|
||||
@@ -441,14 +446,17 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -441,14 +447,17 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
return this.d(this.b + i, this.c + j, this.d + k);
|
||||
}
|
||||
|
||||
@ -2191,7 +2450,7 @@ index c88a62f6b7..5dbd3e60fe 100644
|
||||
this.d = i;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 55373cae07..c50fe1c245 100644
|
||||
index 55373cae07..b39ce329aa 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -25,7 +25,7 @@ import org.apache.logging.log4j.Logger;
|
||||
@ -2221,7 +2480,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
this.i = chunkconverter;
|
||||
HeightMap.Type[] aheightmap_type = HeightMap.Type.values();
|
||||
int j = aheightmap_type.length;
|
||||
@@ -108,6 +108,93 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -108,6 +108,107 @@ public class Chunk implements IChunkAccess {
|
||||
public boolean needsDecoration;
|
||||
// CraftBukkit end
|
||||
|
||||
@ -2256,27 +2515,41 @@ index 55373cae07..c50fe1c245 100644
|
||||
+ if (chunk == null) {
|
||||
+ throw new IllegalArgumentException("Chunk must be non-null, neighbour: (" + relativeX + "," + relativeZ + "), chunk: " + this.loc);
|
||||
+ }
|
||||
+ final long before = this.neighbourChunksLoadedBitset;
|
||||
+ final int index = getNeighbourIndex(relativeX, relativeZ);
|
||||
+ this.loadedNeighbourChunks[index] = chunk;
|
||||
+ this.neighbourChunksLoadedBitset |= (1L << index);
|
||||
+ this.onNeighbourChange(before, this.neighbourChunksLoadedBitset);
|
||||
+ }
|
||||
+
|
||||
+ public final void setNeighbourUnloaded(final int relativeX, final int relativeZ) {
|
||||
+ final long before = this.neighbourChunksLoadedBitset;
|
||||
+ final int index = getNeighbourIndex(relativeX, relativeZ);
|
||||
+ this.loadedNeighbourChunks[index] = null;
|
||||
+ this.neighbourChunksLoadedBitset &= ~(1L << index);
|
||||
+ this.onNeighbourChange(before, this.neighbourChunksLoadedBitset);
|
||||
+ }
|
||||
+
|
||||
+ public final void resetNeighbours() {
|
||||
+ final long before = this.neighbourChunksLoadedBitset;
|
||||
+ this.neighbourChunksLoadedBitset = 0L;
|
||||
+ java.util.Arrays.fill(this.loadedNeighbourChunks, null);
|
||||
+ this.onNeighbourChange(before, 0L);
|
||||
+ }
|
||||
+
|
||||
+ protected void onNeighbourChange(final long bitsetBefore, final long bitsetAfter) {
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ public final boolean areNeighboursLoaded(final int radius) {
|
||||
+ return Chunk.areNeighboursLoaded(this.neighbourChunksLoadedBitset, radius);
|
||||
+ }
|
||||
+
|
||||
+ public static boolean areNeighboursLoaded(final long bitset, final int radius) {
|
||||
+ // index = relativeX + (relativeZ * (NEIGHBOUR_CACHE_RADIUS * 2 + 1)) + (NEIGHBOUR_CACHE_RADIUS + NEIGHBOUR_CACHE_RADIUS * ((NEIGHBOUR_CACHE_RADIUS * 2 + 1)))
|
||||
+ switch (radius) {
|
||||
+ case 0: {
|
||||
+ return this.loadedTicketLevel;
|
||||
+ return (bitset & (1L << getNeighbourIndex(0, 0))) != 0;
|
||||
+ }
|
||||
+ case 1: {
|
||||
+ long mask = 0L;
|
||||
@ -2285,7 +2558,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
+ mask |= (1L << getNeighbourIndex(dx, dz));
|
||||
+ }
|
||||
+ }
|
||||
+ return (this.neighbourChunksLoadedBitset & mask) == mask;
|
||||
+ return (bitset & mask) == mask;
|
||||
+ }
|
||||
+ case 2: {
|
||||
+ long mask = 0L;
|
||||
@ -2294,7 +2567,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
+ mask |= (1L << getNeighbourIndex(dx, dz));
|
||||
+ }
|
||||
+ }
|
||||
+ return (this.neighbourChunksLoadedBitset & mask) == mask;
|
||||
+ return (bitset & mask) == mask;
|
||||
+ }
|
||||
+ case 3: {
|
||||
+ long mask = 0L;
|
||||
@ -2303,7 +2576,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
+ mask |= (1L << getNeighbourIndex(dx, dz));
|
||||
+ }
|
||||
+ }
|
||||
+ return (this.neighbourChunksLoadedBitset & mask) == mask;
|
||||
+ return (bitset & mask) == mask;
|
||||
+ }
|
||||
+
|
||||
+ default:
|
||||
@ -2315,7 +2588,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
public Chunk(World world, ProtoChunk protochunk) {
|
||||
this(world, protochunk.getPos(), protochunk.getBiomeIndex(), protochunk.p(), protochunk.n(), protochunk.o(), protochunk.getInhabitedTime(), protochunk.getSections(), (Consumer) null);
|
||||
Iterator iterator = protochunk.y().iterator();
|
||||
@@ -213,6 +300,18 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -213,6 +314,18 @@ public class Chunk implements IChunkAccess {
|
||||
}
|
||||
}
|
||||
|
||||
@ -2334,7 +2607,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
@Override
|
||||
public Fluid getFluid(BlockPosition blockposition) {
|
||||
return this.a(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
||||
@@ -352,6 +451,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -352,6 +465,7 @@ public class Chunk implements IChunkAccess {
|
||||
entity.chunkX = this.loc.x;
|
||||
entity.chunkY = k;
|
||||
entity.chunkZ = this.loc.z;
|
||||
@ -2342,7 +2615,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
this.entitySlices[k].add(entity);
|
||||
}
|
||||
|
||||
@@ -374,6 +474,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -374,6 +488,7 @@ public class Chunk implements IChunkAccess {
|
||||
}
|
||||
|
||||
this.entitySlices[i].remove(entity);
|
||||
@ -2350,7 +2623,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -395,6 +496,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -395,6 +510,7 @@ public class Chunk implements IChunkAccess {
|
||||
return this.a(blockposition, Chunk.EnumTileEntityState.CHECK);
|
||||
}
|
||||
|
||||
@ -2358,7 +2631,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
@Nullable
|
||||
public TileEntity a(BlockPosition blockposition, Chunk.EnumTileEntityState chunk_enumtileentitystate) {
|
||||
// CraftBukkit start
|
||||
@@ -506,7 +608,25 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -506,7 +622,25 @@ public class Chunk implements IChunkAccess {
|
||||
|
||||
// CraftBukkit start
|
||||
public void loadCallback() {
|
||||
@ -2384,7 +2657,7 @@ index 55373cae07..c50fe1c245 100644
|
||||
if (server != null) {
|
||||
/*
|
||||
* If it's a new world, the first few chunks are generated inside
|
||||
@@ -545,6 +665,22 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -545,6 +679,22 @@ public class Chunk implements IChunkAccess {
|
||||
server.getPluginManager().callEvent(unloadEvent);
|
||||
// note: saving can be prevented, but not forced if no saving is actually required
|
||||
this.mustNotSave = !unloadEvent.isSaveChunk();
|
||||
@ -3704,10 +3977,10 @@ index 5c5bf010d0..6e9f402fb0 100644
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 7ad30548e2..93d838ec2d 100644
|
||||
index 7ad30548e2..b505244516 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -99,6 +99,35 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -99,6 +99,28 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
};
|
||||
// CraftBukkit end
|
||||
|
||||
@ -3715,26 +3988,19 @@ index 7ad30548e2..93d838ec2d 100644
|
||||
+ private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets<EntityPlayer> pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>();
|
||||
+
|
||||
+ void addPlayerToDistanceMaps(EntityPlayer player) {
|
||||
+ this.updateMaps(player);
|
||||
+
|
||||
+
|
||||
+
|
||||
+ int chunkX = MCUtil.getChunkCoordinate(player.locX());
|
||||
+ int chunkZ = MCUtil.getChunkCoordinate(player.locZ());
|
||||
+ // Note: players need to be explicitly added to distance maps before they can be updated
|
||||
+ }
|
||||
+
|
||||
+ void removePlayerFromDistanceMaps(EntityPlayer player) {
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ void updateMaps(EntityPlayer player) {
|
||||
+ int chunkX = MCUtil.getChunkCoordinate(player.locX());
|
||||
+ int chunkZ = MCUtil.getChunkCoordinate(player.locZ());
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+ // Note: players need to be explicitly added to distance maps before they can be updated
|
||||
+ }
|
||||
+
|
||||
+
|
||||
@ -3743,7 +4009,38 @@ index 7ad30548e2..93d838ec2d 100644
|
||||
public PlayerChunkMap(WorldServer worldserver, File file, DataFixer datafixer, DefinedStructureManager definedstructuremanager, Executor executor, IAsyncTaskHandler<Runnable> iasynctaskhandler, ILightAccess ilightaccess, ChunkGenerator<?> chunkgenerator, WorldLoadListener worldloadlistener, Supplier<WorldPersistentData> supplier, int i) {
|
||||
super(new File(worldserver.getWorldProvider().getDimensionManager().a(file), "region"), datafixer);
|
||||
this.visibleChunks = this.updatingChunks.clone();
|
||||
@@ -984,6 +1013,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -187,6 +209,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
};
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ public final int getEffectiveViewDistance() {
|
||||
+ // TODO this needs to be checked on update
|
||||
+ // Mojang currently sets it to +1 of the configured view distance. So subtract one to get the one we really want.
|
||||
+ return this.viewDistance - 1;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
private CompletableFuture<Either<List<IChunkAccess>, PlayerChunk.Failure>> a(ChunkCoordIntPair chunkcoordintpair, int i, IntFunction<ChunkStatus> intfunction) {
|
||||
List<CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>>> list = Lists.newArrayList();
|
||||
int j = chunkcoordintpair.x;
|
||||
@@ -867,6 +897,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
if (!flag1) {
|
||||
this.chunkDistanceManager.a(SectionPosition.a((Entity) entityplayer), entityplayer);
|
||||
}
|
||||
+ this.addPlayerToDistanceMaps(entityplayer); // Paper - distance maps
|
||||
} else {
|
||||
SectionPosition sectionposition = entityplayer.K();
|
||||
|
||||
@@ -874,6 +905,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
if (!flag2) {
|
||||
this.chunkDistanceManager.b(sectionposition, entityplayer);
|
||||
}
|
||||
+ this.removePlayerFromDistanceMaps(entityplayer); // Paper - distance maps
|
||||
}
|
||||
|
||||
for (int k = i - this.viewDistance; k <= i + this.viewDistance; ++k) {
|
||||
@@ -984,6 +1016,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
}
|
||||
|
||||
@ -3961,26 +4258,6 @@ index 2e1eabba14..2a4fa455ff 100644
|
||||
Fluid fluid = this.getFluid(blockposition);
|
||||
|
||||
return this.setTypeAndData(blockposition, fluid.getBlockData(), 3 | (flag ? 64 : 0));
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index d5014abc9d..8a5ac6f69b 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -973,6 +973,7 @@ public class WorldServer extends World {
|
||||
}
|
||||
|
||||
this.registerEntity(entityplayer);
|
||||
+ this.getChunkProvider().playerChunkMap.addPlayerToDistanceMaps(entityplayer); // Paper - distance maps
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
@@ -1115,6 +1116,7 @@ public class WorldServer extends World {
|
||||
EntityPlayer entityplayer = (EntityPlayer) entity;
|
||||
|
||||
this.players.remove(entityplayer);
|
||||
+ this.getChunkProvider().playerChunkMap.removePlayerFromDistanceMaps(entityplayer); // Paper - distance maps
|
||||
}
|
||||
|
||||
this.getScoreboard().a(entity);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
|
||||
index e181df6f4d..4a9132c701 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
|
||||
@ -4034,5 +4311,5 @@ index 1aec70a1f1..f72c13beda 100644
|
||||
private int initialCapacity;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 501904519947a10ca310e0db3b92828950e3a027 Mon Sep 17 00:00:00 2001
|
||||
From e969742b4a74d232455d49d51ce3ac8c0c915e05 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 4 Jul 2018 02:10:36 -0400
|
||||
Subject: [PATCH] Store reference to current Chunk for Entity and Block
|
||||
@ -8,7 +8,7 @@ This enables us a fast reference to the entities current chunk instead
|
||||
of having to look it up by hashmap lookups.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index c50fe1c245..061384b012 100644
|
||||
index b39ce329aa..4d7dc71474 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -29,7 +29,7 @@ public class Chunk implements IChunkAccess {
|
||||
@ -58,7 +58,7 @@ index c50fe1c245..061384b012 100644
|
||||
this.l = Maps.newHashMap();
|
||||
this.m = Maps.newHashMap();
|
||||
this.n = new ShortList[16];
|
||||
@@ -448,6 +473,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -462,6 +487,7 @@ public class Chunk implements IChunkAccess {
|
||||
}
|
||||
|
||||
entity.inChunk = true;
|
||||
@ -66,7 +66,7 @@ index c50fe1c245..061384b012 100644
|
||||
entity.chunkX = this.loc.x;
|
||||
entity.chunkY = k;
|
||||
entity.chunkZ = this.loc.z;
|
||||
@@ -460,6 +486,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -474,6 +500,7 @@ public class Chunk implements IChunkAccess {
|
||||
((HeightMap) this.heightMap.get(heightmap_type)).a(along);
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ index c50fe1c245..061384b012 100644
|
||||
public void b(Entity entity) {
|
||||
this.a(entity, entity.chunkY);
|
||||
}
|
||||
@@ -473,7 +500,12 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -487,7 +514,12 @@ public class Chunk implements IChunkAccess {
|
||||
i = this.entitySlices.length - 1;
|
||||
}
|
||||
|
||||
@ -200,5 +200,5 @@ index 056525526e..5a047dd682 100644
|
||||
/*
|
||||
* Order is *EXTREMELY* important -- keep it right! =D
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From ecf43fc4577369da779f08aa2b5c9a3ba2a248cb Mon Sep 17 00:00:00 2001
|
||||
From 8c353e9c2c1388d62b4b73c47d18c629f4a5682b Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 4 Jul 2018 02:13:59 -0400
|
||||
Subject: [PATCH] Store counts for each Entity/Block Entity Type
|
||||
@ -6,7 +6,7 @@ Subject: [PATCH] Store counts for each Entity/Block Entity Type
|
||||
Opens door for future patches to optimize performance
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 061384b012..2b6fe2e01d 100644
|
||||
index 4d7dc71474..a144f4ef56 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -56,15 +56,19 @@ public class Chunk implements IChunkAccess {
|
||||
@ -37,7 +37,7 @@ index 061384b012..2b6fe2e01d 100644
|
||||
}
|
||||
return removed;
|
||||
}
|
||||
@@ -472,6 +477,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -486,6 +491,7 @@ public class Chunk implements IChunkAccess {
|
||||
k = this.entitySlices.length - 1;
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ index 061384b012..2b6fe2e01d 100644
|
||||
entity.inChunk = true;
|
||||
entity.setCurrentChunk(this); // Paper
|
||||
entity.chunkX = this.loc.x;
|
||||
@@ -505,6 +511,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -519,6 +525,7 @@ public class Chunk implements IChunkAccess {
|
||||
if (!this.entitySlices[i].remove(entity)) {
|
||||
return;
|
||||
}
|
||||
@ -54,5 +54,5 @@ index 061384b012..2b6fe2e01d 100644
|
||||
this.entities.remove(entity); // Paper
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f0fe55e3dd96e50f2eb4a56ca5a601d8e0c89a6a Mon Sep 17 00:00:00 2001
|
||||
From 3ebd9a34ff56a4ff3f3ff262e9f6ca4059e9363e Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 3 Mar 2016 04:00:11 -0600
|
||||
Subject: [PATCH] Timings v2
|
||||
@ -343,10 +343,10 @@ index cd72a9c845..5de881371a 100644
|
||||
private final float frictionFactor;
|
||||
private final float f;
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 2b6fe2e01d..4cd353b253 100644
|
||||
index a144f4ef56..352bb787fd 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -675,6 +675,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -689,6 +689,7 @@ public class Chunk implements IChunkAccess {
|
||||
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration));
|
||||
|
||||
if (this.needsDecoration) {
|
||||
@ -354,7 +354,7 @@ index 2b6fe2e01d..4cd353b253 100644
|
||||
this.needsDecoration = false;
|
||||
java.util.Random random = new java.util.Random();
|
||||
random.setSeed(world.getSeed());
|
||||
@@ -694,6 +695,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -708,6 +709,7 @@ public class Chunk implements IChunkAccess {
|
||||
}
|
||||
}
|
||||
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
|
||||
@ -934,7 +934,7 @@ index b4a0bd7951..67bdd57747 100644
|
||||
this.methodProfiler.exit();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 93d838ec2d..5e31b65e16 100644
|
||||
index b505244516..65134c8777 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -1,7 +1,9 @@
|
||||
@ -947,7 +947,7 @@ index 93d838ec2d..5e31b65e16 100644
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Queues;
|
||||
import com.google.common.collect.Sets;
|
||||
@@ -506,11 +508,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -507,11 +509,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
private CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> f(ChunkCoordIntPair chunkcoordintpair) {
|
||||
return CompletableFuture.supplyAsync(() -> {
|
||||
@ -965,7 +965,7 @@ index 93d838ec2d..5e31b65e16 100644
|
||||
boolean flag = nbttagcompound.hasKeyOfType("Level", 10) && nbttagcompound.getCompound("Level").hasKeyOfType("Status", 8);
|
||||
|
||||
if (flag) {
|
||||
@@ -521,7 +526,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -522,7 +527,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
PlayerChunkMap.LOGGER.error("Chunk file at {} is missing level data, skipping", chunkcoordintpair);
|
||||
@ -974,7 +974,7 @@ index 93d838ec2d..5e31b65e16 100644
|
||||
} catch (ReportedException reportedexception) {
|
||||
Throwable throwable = reportedexception.getCause();
|
||||
|
||||
@@ -548,7 +553,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -549,7 +554,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
return "chunkGenerate " + chunkstatus.d();
|
||||
});
|
||||
return completablefuture.thenComposeAsync((either) -> {
|
||||
@ -983,7 +983,7 @@ index 93d838ec2d..5e31b65e16 100644
|
||||
try {
|
||||
CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> completablefuture1 = chunkstatus.a(this.world, this.chunkGenerator, this.definedStructureManager, this.lightEngine, (ichunkaccess) -> {
|
||||
return this.c(playerchunk);
|
||||
@@ -601,6 +606,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -602,6 +607,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
ChunkStatus chunkstatus = PlayerChunk.getChunkStatus(playerchunk.getTicketLevel());
|
||||
|
||||
return !chunkstatus.b(ChunkStatus.FULL) ? PlayerChunk.UNLOADED_CHUNK_ACCESS : either.mapLeft((ichunkaccess) -> {
|
||||
@ -991,7 +991,7 @@ index 93d838ec2d..5e31b65e16 100644
|
||||
ChunkCoordIntPair chunkcoordintpair = playerchunk.i();
|
||||
Chunk chunk;
|
||||
|
||||
@@ -652,6 +658,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -653,6 +659,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
return chunk;
|
||||
@ -999,7 +999,7 @@ index 93d838ec2d..5e31b65e16 100644
|
||||
});
|
||||
}, (runnable) -> {
|
||||
Mailbox mailbox = this.mailboxMain;
|
||||
@@ -1091,6 +1098,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1094,6 +1101,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker;
|
||||
ObjectIterator objectiterator;
|
||||
@ -1007,7 +1007,7 @@ index 93d838ec2d..5e31b65e16 100644
|
||||
|
||||
for (objectiterator = this.trackedEntities.values().iterator(); objectiterator.hasNext(); playerchunkmap_entitytracker.trackerEntry.a()) {
|
||||
playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next();
|
||||
@@ -1108,16 +1116,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1111,16 +1119,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
playerchunkmap_entitytracker.e = sectionposition1;
|
||||
}
|
||||
}
|
||||
@ -1260,7 +1260,7 @@ index 2a4fa455ff..f572c5f227 100644
|
||||
CrashReport crashreport = CrashReport.a(throwable, "Ticking entity");
|
||||
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being ticked");
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 8a5ac6f69b..6810d49b17 100644
|
||||
index d5014abc9d..38a71bca2f 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1,6 +1,8 @@
|
||||
@ -1870,5 +1870,5 @@ index ca7789b5e0..4423839697 100644
|
||||
}
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 7d9ffa2cd54f434e0c356777203796fb62c3a137 Mon Sep 17 00:00:00 2001
|
||||
From f2cfab87a7d62010dd7e2d7c9e23d72e302d1bf6 Mon Sep 17 00:00:00 2001
|
||||
From: Byteflux <byte@byteflux.net>
|
||||
Date: Tue, 1 Mar 2016 15:08:03 -0600
|
||||
Subject: [PATCH] Remove invalid mob spawner tile entities
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 4cd353b253..56d740fcad 100644
|
||||
index 352bb787fd..687e609cab 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -590,6 +590,10 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -604,6 +604,10 @@ public class Chunk implements IChunkAccess {
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
@ -20,5 +20,5 @@ index 4cd353b253..56d740fcad 100644
|
||||
System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ()
|
||||
+ " (" + getType(blockposition) + ") where there was no entity tile!");
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From d02bc60a955773b5851092ecfc25439317cc4fdb Mon Sep 17 00:00:00 2001
|
||||
From 9294ce1bcbd8799c239b4016a04637ef70470340 Mon Sep 17 00:00:00 2001
|
||||
From: Byteflux <byte@byteflux.net>
|
||||
Date: Tue, 1 Mar 2016 23:45:08 -0600
|
||||
Subject: [PATCH] Entity Origin API
|
||||
@ -101,10 +101,10 @@ index 5406f4c40f..d778eac45d 100644
|
||||
if (i >= 0 && i < this.list.size()) {
|
||||
NBTBase nbtbase = (NBTBase) this.list.get(i);
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 6810d49b17..450b414298 100644
|
||||
index 38a71bca2f..351825ebec 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1180,6 +1180,11 @@ public class WorldServer extends World {
|
||||
@@ -1178,6 +1178,11 @@ public class WorldServer extends World {
|
||||
this.navigators.add(((EntityInsentient) entity).getNavigation());
|
||||
}
|
||||
entity.valid = true; // CraftBukkit
|
||||
@ -134,5 +134,5 @@ index 5a047dd682..5625e5bda2 100644
|
||||
+ // Paper end
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 10395b6165373c7b9fee5ad40e085d90e2d121e1 Mon Sep 17 00:00:00 2001
|
||||
From 29462b1030a7b988922e9e4b7bedcad81158195b Mon Sep 17 00:00:00 2001
|
||||
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||
Date: Wed, 2 Mar 2016 23:13:07 -0600
|
||||
Subject: [PATCH] Send absolute position the first time an entity is seen
|
||||
@ -77,10 +77,10 @@ index a75e0ec54e..a13fd9b340 100644
|
||||
|
||||
this.c();
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 5e31b65e16..d49f456f73 100644
|
||||
index 65134c8777..eece2f689c 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -1217,10 +1217,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1220,10 +1220,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
private final Entity tracker;
|
||||
private final int trackingDistance;
|
||||
private SectionPosition e;
|
||||
@ -97,7 +97,7 @@ index 5e31b65e16..d49f456f73 100644
|
||||
this.tracker = entity;
|
||||
this.trackingDistance = i;
|
||||
this.e = SectionPosition.a(entity);
|
||||
@@ -1302,7 +1306,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1305,7 +1309,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId()));
|
||||
// CraftBukkit end
|
||||
|
||||
@ -107,5 +107,5 @@ index 5e31b65e16..d49f456f73 100644
|
||||
}
|
||||
} else if (this.trackedPlayers.remove(entityplayer)) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 2442a75dde041601a119e270ac0db9fbea769b3a Mon Sep 17 00:00:00 2001
|
||||
From 9f2aaaba2db42bdb16c50970b27d088680156f7a Mon Sep 17 00:00:00 2001
|
||||
From: Joseph Hirschfeld <joe@ibj.io>
|
||||
Date: Thu, 3 Mar 2016 03:15:41 -0600
|
||||
Subject: [PATCH] Add exception reporting event
|
||||
@ -49,7 +49,7 @@ index 0000000000..f699ce18ca
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 56d740fcad..39e77f8248 100644
|
||||
index 687e609cab..8f3eee5ea8 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -1,5 +1,6 @@
|
||||
@ -59,7 +59,7 @@ index 56d740fcad..39e77f8248 100644
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
|
||||
@@ -595,10 +596,15 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -609,10 +610,15 @@ public class Chunk implements IChunkAccess {
|
||||
this.tileEntities.remove(blockposition);
|
||||
// Paper end
|
||||
} else {
|
||||
@ -121,10 +121,10 @@ index c9c2b00251..1422503e11 100644
|
||||
}
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index d49f456f73..a79e4cef4a 100644
|
||||
index eece2f689c..6374bf8785 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -727,6 +727,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -728,6 +728,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
this.world.checkSession();
|
||||
} catch (ExceptionWorldConflict exceptionworldconflict) {
|
||||
PlayerChunkMap.LOGGER.error("Couldn't save chunk; already in use by another instance of Minecraft?", exceptionworldconflict);
|
||||
@ -132,7 +132,7 @@ index d49f456f73..a79e4cef4a 100644
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -755,6 +756,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -756,6 +757,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
return true;
|
||||
} catch (Exception exception) {
|
||||
PlayerChunkMap.LOGGER.error("Failed to save chunk {},{}", chunkcoordintpair.x, chunkcoordintpair.z, exception);
|
||||
@ -306,5 +306,5 @@ index db433ed370..d05a9ae0fb 100644
|
||||
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1e4ea523df36a1139d0fd88aefe3e9848c908748 Mon Sep 17 00:00:00 2001
|
||||
From f986e8a7704f1cd279cfac3c7abad36b88d111ce Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 3 Mar 2016 02:07:55 -0600
|
||||
Subject: [PATCH] Optimize isValidLocation, getType and getBlockData for inling
|
||||
@ -31,10 +31,10 @@ index a3b5793e48..71089442c1 100644
|
||||
public BaseBlockPosition(int i, int j, int k) {
|
||||
this.a = i;
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 39e77f8248..7ddf6592f7 100644
|
||||
index 8f3eee5ea8..4b162a768e 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -290,12 +290,24 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -304,12 +304,24 @@ public class Chunk implements IChunkAccess {
|
||||
return this.sections;
|
||||
}
|
||||
|
||||
@ -95,5 +95,5 @@ index e7337fc368..6b1ff8f64f 100644
|
||||
|
||||
public static boolean b(int i) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 8329fdefafcca151133f8a8aa87fc35172878fa3 Mon Sep 17 00:00:00 2001
|
||||
From 80a2bc8af10d734cb39781889e1caa58099ea2c7 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 28 Mar 2016 20:32:58 -0400
|
||||
Subject: [PATCH] Entity AddTo/RemoveFrom World Events
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 9d0edf5382..fd42f34004 100644
|
||||
index 3769f0533d..f8d1cb0231 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1148,7 +1148,7 @@ public class WorldServer extends World {
|
||||
@@ -1146,7 +1146,7 @@ public class WorldServer extends World {
|
||||
if (entity instanceof EntityInsentient) {
|
||||
this.navigators.remove(((EntityInsentient) entity).getNavigation());
|
||||
}
|
||||
@ -17,7 +17,7 @@ index 9d0edf5382..fd42f34004 100644
|
||||
entity.valid = false; // CraftBukkit
|
||||
}
|
||||
|
||||
@@ -1186,6 +1186,7 @@ public class WorldServer extends World {
|
||||
@@ -1184,6 +1184,7 @@ public class WorldServer extends World {
|
||||
entity.origin = entity.getBukkitEntity().getLocation();
|
||||
}
|
||||
// Paper end
|
||||
@ -26,5 +26,5 @@ index 9d0edf5382..fd42f34004 100644
|
||||
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b106a1543eb979b48adef29d0218e74cd85d9e61 Mon Sep 17 00:00:00 2001
|
||||
From c2263eb09808a1b09eb8c356ddb3779a397ad21a Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 28 Mar 2016 20:46:14 -0400
|
||||
Subject: [PATCH] Configurable Chunk Inhabited Time
|
||||
@ -30,10 +30,10 @@ index 6ef0e1399e..5872e6b171 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 7ddf6592f7..d1761ff3c4 100644
|
||||
index 4b162a768e..6694d0e36c 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -956,7 +956,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -970,7 +970,7 @@ public class Chunk implements IChunkAccess {
|
||||
|
||||
@Override
|
||||
public long getInhabitedTime() {
|
||||
@ -43,5 +43,5 @@ index 7ddf6592f7..d1761ff3c4 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a97b7b1b9b1c5929aaffda2925dcc329b4526c18 Mon Sep 17 00:00:00 2001
|
||||
From a4f8c250978dfb502b0fb75ef5b15bf9481f0e9a Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 13 Apr 2016 00:25:28 -0400
|
||||
Subject: [PATCH] Remove unused World Tile Entity List
|
||||
@ -67,10 +67,10 @@ index aaedbaf4d7..0e8d31babd 100644
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index fd42f34004..6f66c38650 100644
|
||||
index f8d1cb0231..f46da0e8a0 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1633,7 +1633,7 @@ public class WorldServer extends World {
|
||||
@@ -1631,7 +1631,7 @@ public class WorldServer extends World {
|
||||
}
|
||||
|
||||
bufferedwriter.write(String.format("entities: %d\n", this.entitiesById.size()));
|
||||
@ -79,7 +79,7 @@ index fd42f34004..6f66c38650 100644
|
||||
bufferedwriter.write(String.format("block_ticks: %d\n", this.getBlockTickList().a()));
|
||||
bufferedwriter.write(String.format("fluid_ticks: %d\n", this.getFluidTickList().a()));
|
||||
bufferedwriter.write("distance_manager: " + playerchunkmap.e().c() + "\n");
|
||||
@@ -1796,7 +1796,7 @@ public class WorldServer extends World {
|
||||
@@ -1794,7 +1794,7 @@ public class WorldServer extends World {
|
||||
|
||||
private void a(Writer writer) throws IOException {
|
||||
CSVWriter csvwriter = CSVWriter.a().a("x").a("y").a("z").a("type").a(writer);
|
||||
@ -89,5 +89,5 @@ index fd42f34004..6f66c38650 100644
|
||||
while (iterator.hasNext()) {
|
||||
TileEntity tileentity = (TileEntity) iterator.next();
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 8fc2a9f39c35e1b30d5cee04f39002520ba81186 Mon Sep 17 00:00:00 2001
|
||||
From 2915b6164a366517b15f6ba175b76e949c3c19b1 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Fri, 29 Apr 2016 20:02:00 -0400
|
||||
Subject: [PATCH] Improve Maps (in item frames) performance and bug fixes
|
||||
@ -102,10 +102,10 @@ index a56ac3da80..2f1be1995d 100644
|
||||
for ( org.bukkit.map.MapCursor cursor : render.cursors) {
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 6f66c38650..40c9cba760 100644
|
||||
index f46da0e8a0..6271fb2092 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1109,6 +1109,7 @@ public class WorldServer extends World {
|
||||
@@ -1108,6 +1108,7 @@ public class WorldServer extends World {
|
||||
{
|
||||
if ( iter.next().trackee == entity )
|
||||
{
|
||||
@ -127,5 +127,5 @@ index 256a131781..5768cd512e 100644
|
||||
|
||||
public RenderData() {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 0b2ec2fe2555ad78369bf25ddb552d6a3f03edbc Mon Sep 17 00:00:00 2001
|
||||
From c645776c533b1d5a34749e7882d577dfbe87d117 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Tue, 21 Jun 2016 22:54:34 -0400
|
||||
Subject: [PATCH] Fix Double World Add issues
|
||||
@ -8,10 +8,10 @@ Vanilla will double add Spider Jockeys to the world, so ignore already added.
|
||||
Also add debug if something else tries to, and abort before world gets bad state
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 40c9cba760..3004270455 100644
|
||||
index 6271fb2092..3508fd7084 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -998,6 +998,7 @@ public class WorldServer extends World {
|
||||
@@ -997,6 +997,7 @@ public class WorldServer extends World {
|
||||
// CraftBukkit start
|
||||
private boolean addEntity0(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
|
||||
@ -20,5 +20,5 @@ index 40c9cba760..3004270455 100644
|
||||
// WorldServer.LOGGER.warn("Tried to add entity {} but it was marked as removed already", EntityTypes.getName(entity.getEntityType())); // CraftBukkit
|
||||
return false;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 6f764fa39b2b86ce5152769b4cab6a32dca28a6d Mon Sep 17 00:00:00 2001
|
||||
From cd4ec6fc6a45b34dc15ad63f669bd12e8bc91be5 Mon Sep 17 00:00:00 2001
|
||||
From: Zach Brown <zach.brown@destroystokyo.com>
|
||||
Date: Wed, 5 Oct 2016 16:27:36 -0500
|
||||
Subject: [PATCH] Option to remove corrupt tile entities
|
||||
@ -19,10 +19,10 @@ index 8cf3076f4e..721eceeffc 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index d1761ff3c4..e66bbb7ee3 100644
|
||||
index 6694d0e36c..87d68a3e21 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -616,6 +616,12 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -630,6 +630,12 @@ public class Chunk implements IChunkAccess {
|
||||
"Chunk coordinates: " + (this.loc.x * 16) + "," + (this.loc.z * 16));
|
||||
e.printStackTrace();
|
||||
ServerInternalException.reportInternalException(e);
|
||||
@ -36,5 +36,5 @@ index d1761ff3c4..e66bbb7ee3 100644
|
||||
// CraftBukkit end
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 2e0c912fa929d7d6fffe7cc9da9c1027eff4ac03 Mon Sep 17 00:00:00 2001
|
||||
From a87b8cf80a36016fbd3dcd7bec2fd18a97dfb30d Mon Sep 17 00:00:00 2001
|
||||
From: Brokkonaut <hannos17@gmx.de>
|
||||
Date: Tue, 7 Feb 2017 16:55:35 -0600
|
||||
Subject: [PATCH] Make targetSize more aggressive in the chunk unload queue
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index a79e4cef4a..a851997e5f 100644
|
||||
index 6374bf8785..0edba59675 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -139,7 +139,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -132,7 +132,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
this.u = new AtomicInteger();
|
||||
this.playerMap = new PlayerMap();
|
||||
this.trackedEntities = new Int2ObjectOpenHashMap();
|
||||
@ -17,7 +17,7 @@ index a79e4cef4a..a851997e5f 100644
|
||||
this.definedStructureManager = definedstructuremanager;
|
||||
this.w = worldserver.getWorldProvider().getDimensionManager().a(file);
|
||||
this.world = worldserver;
|
||||
@@ -389,7 +389,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -390,7 +390,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
// Spigot start
|
||||
org.spigotmc.SlackActivityAccountant activityAccountant = this.world.getMinecraftServer().slackActivityAccountant;
|
||||
activityAccountant.startActivity(0.5);
|
||||
@ -26,7 +26,7 @@ index a79e4cef4a..a851997e5f 100644
|
||||
// Spigot end
|
||||
while (longiterator.hasNext()) { // Spigot
|
||||
long j = longiterator.nextLong();
|
||||
@@ -411,7 +411,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -412,7 +412,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
Runnable runnable;
|
||||
|
||||
@ -37,5 +37,5 @@ index a79e4cef4a..a851997e5f 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 7c4c7ea9a0240c869dbae6cc55f56a13cfd58cf9 Mon Sep 17 00:00:00 2001
|
||||
From ca9958e43d57e7f1c3d78791a939fe61a3e1ac71 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 14 Jan 2018 17:36:02 -0500
|
||||
Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent
|
||||
@ -48,10 +48,10 @@ index bf32997c42..88692d9eae 100644
|
||||
public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<EntityPlayer> cachedSingleHashSet; // Paper
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index a851997e5f..175734b50c 100644
|
||||
index 0edba59675..7804cc0f6a 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -881,12 +881,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -882,12 +882,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
chunkRange = (chunkRange > world.spigotConfig.viewDistance) ? (byte) world.spigotConfig.viewDistance : chunkRange;
|
||||
chunkRange = (chunkRange > 8) ? 8 : chunkRange;
|
||||
|
||||
@ -78,5 +78,5 @@ index a851997e5f..175734b50c 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b01cce47551a1f739f0db7b9b033b19f653bd07e Mon Sep 17 00:00:00 2001
|
||||
From 5135255c143e00b805f7c143b41f08faa889f1b8 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Tue, 15 Aug 2017 22:29:12 -0400
|
||||
Subject: [PATCH] Expand World.spawnParticle API and add Builder
|
||||
@ -10,7 +10,7 @@ Adds an option to control the force mode of the particle.
|
||||
This adds a new Builder API which is much friendlier to use.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index eb99f3a967..da391e945c 100644
|
||||
index 7417725363..60f936f2e5 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -56,7 +56,7 @@ public class WorldServer extends World {
|
||||
@ -22,7 +22,7 @@ index eb99f3a967..da391e945c 100644
|
||||
boolean tickingEntities;
|
||||
private final MinecraftServer server;
|
||||
private final WorldNBTStorage dataManager;
|
||||
@@ -1406,12 +1406,17 @@ public class WorldServer extends World {
|
||||
@@ -1404,12 +1404,17 @@ public class WorldServer extends World {
|
||||
}
|
||||
|
||||
public <T extends ParticleParam> int sendParticles(EntityPlayer sender, T t0, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6, boolean force) {
|
||||
@ -66,5 +66,5 @@ index 265af7ac7f..d6e101ca9f 100644
|
||||
x, y, z, // Position
|
||||
count, // Count
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From dbee3dc8c2471fbf5ea6d138d1a0b213e9dc6d0c Mon Sep 17 00:00:00 2001
|
||||
From 7129c46b81098d87e81839acba7e950d4df11b1c Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Tue, 3 Jul 2018 21:56:23 -0400
|
||||
Subject: [PATCH] InventoryCloseEvent Reason API
|
||||
@ -114,10 +114,10 @@ index a61815c794..5ae0927c14 100644
|
||||
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game");
|
||||
cserver.getPluginManager().callEvent(playerQuitEvent);
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index da391e945c..c5b4218b44 100644
|
||||
index 60f936f2e5..7c1a748c9b 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1051,7 +1051,7 @@ public class WorldServer extends World {
|
||||
@@ -1050,7 +1050,7 @@ public class WorldServer extends World {
|
||||
{
|
||||
if ( h instanceof org.bukkit.craftbukkit.entity.CraftHumanEntity )
|
||||
{
|
||||
@ -126,7 +126,7 @@ index da391e945c..c5b4218b44 100644
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1074,7 +1074,7 @@ public class WorldServer extends World {
|
||||
@@ -1073,7 +1073,7 @@ public class WorldServer extends World {
|
||||
{
|
||||
if ( h instanceof org.bukkit.craftbukkit.entity.CraftHumanEntity )
|
||||
{
|
||||
@ -193,5 +193,5 @@ index 7593159fd6..fc3d9efd84 100644
|
||||
human.activeContainer.transferTo(human.defaultContainer, human.getBukkitEntity());
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 8c896a05ac40b3c7b64c3f40f28564fca68978c0 Mon Sep 17 00:00:00 2001
|
||||
From dc900155f5ba16d321383bb5a0471fdcace51771 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 19 Jul 2018 01:08:05 -0400
|
||||
Subject: [PATCH] Re-add vanilla entity warnings for duplicates
|
||||
@ -8,10 +8,10 @@ These are a critical sign that somethin went wrong, and you've lost some data...
|
||||
We should kind of know about these things you know.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index c5b4218b44..4cbf390ce0 100644
|
||||
index 7c1a748c9b..25e2a6580a 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1036,7 +1036,8 @@ public class WorldServer extends World {
|
||||
@@ -1035,7 +1035,8 @@ public class WorldServer extends World {
|
||||
if (entity1 == null) {
|
||||
return false;
|
||||
} else {
|
||||
@ -22,5 +22,5 @@ index c5b4218b44..4cbf390ce0 100644
|
||||
}
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From caee0bbdf5a85c3e27b138db956bd79b9e6cc1ce Mon Sep 17 00:00:00 2001
|
||||
From 6233a75f58064fdd417c5a90bc98a4d4f3f156ef Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 21 Jul 2018 08:25:40 -0400
|
||||
Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
|
||||
@ -19,10 +19,10 @@ index 2ac396dd17..3043b87cf7 100644
|
||||
if (bukkitEntity == null) {
|
||||
bukkitEntity = CraftEntity.getEntity(world.getServer(), this);
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 175734b50c..2c7e611663 100644
|
||||
index 7804cc0f6a..4ee26ff08f 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -1061,6 +1061,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1064,6 +1064,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
} else {
|
||||
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker = new PlayerChunkMap.EntityTracker(entity, i, j, entitytypes.isDeltaTracking());
|
||||
|
||||
@ -30,7 +30,7 @@ index 175734b50c..2c7e611663 100644
|
||||
this.trackedEntities.put(entity.getId(), playerchunkmap_entitytracker);
|
||||
playerchunkmap_entitytracker.track(this.world.getPlayers());
|
||||
if (entity instanceof EntityPlayer) {
|
||||
@@ -1103,7 +1104,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1106,7 +1107,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
if (playerchunkmap_entitytracker1 != null) {
|
||||
playerchunkmap_entitytracker1.a();
|
||||
}
|
||||
@ -52,7 +52,7 @@ index 2f57c7bc76..a1c33c525c 100644
|
||||
public boolean captureBlockStates = false;
|
||||
public boolean captureTreeGeneration = false;
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 4cbf390ce0..6ce7f77a5e 100644
|
||||
index 25e2a6580a..02d9c754b1 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -76,6 +76,9 @@ public class WorldServer extends World {
|
||||
@ -65,7 +65,7 @@ index 4cbf390ce0..6ce7f77a5e 100644
|
||||
|
||||
// Add env and gen to constructor
|
||||
public WorldServer(MinecraftServer minecraftserver, Executor executor, WorldNBTStorage worldnbtstorage, WorldData worlddata, DimensionManager dimensionmanager, GameProfilerFiller gameprofilerfiller, WorldLoadListener worldloadlistener, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) {
|
||||
@@ -998,8 +1001,28 @@ public class WorldServer extends World {
|
||||
@@ -997,8 +1000,28 @@ public class WorldServer extends World {
|
||||
// CraftBukkit start
|
||||
private boolean addEntity0(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
|
||||
@ -95,7 +95,7 @@ index 4cbf390ce0..6ce7f77a5e 100644
|
||||
// WorldServer.LOGGER.warn("Tried to add entity {} but it was marked as removed already", EntityTypes.getName(entity.getEntityType())); // CraftBukkit
|
||||
return false;
|
||||
} else if (this.isUUIDTaken(entity)) {
|
||||
@@ -1172,7 +1195,24 @@ public class WorldServer extends World {
|
||||
@@ -1170,7 +1193,24 @@ public class WorldServer extends World {
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,5 +122,5 @@ index 4cbf390ce0..6ce7f77a5e 100644
|
||||
// CraftBukkit start - SPIGOT-5278
|
||||
if (entity instanceof EntityDrowned) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 9efee604d673435c8097e6cf3d4f6df62b2f06b5 Mon Sep 17 00:00:00 2001
|
||||
From 861f8567f99a27430b0a35965cc0d5a7bc0fc382 Mon Sep 17 00:00:00 2001
|
||||
From: Techcable <Techcable@outlook.com>
|
||||
Date: Wed, 30 Nov 2016 20:56:58 -0600
|
||||
Subject: [PATCH] Speedup BlockPos by fixing inlining
|
||||
@ -110,10 +110,10 @@ index 71089442c1..c439a8d019 100644
|
||||
return (int) (f + f1 + f2);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
index 5dbd3e60fe..e9ea232a78 100644
|
||||
index f8ac39e1b0..0ab2b23440 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
@@ -342,11 +342,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -343,11 +343,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
}
|
||||
|
||||
public static class MutableBlockPosition extends BlockPosition {
|
||||
@ -129,7 +129,7 @@ index 5dbd3e60fe..e9ea232a78 100644
|
||||
public MutableBlockPosition() {
|
||||
this(0, 0, 0);
|
||||
}
|
||||
@@ -356,10 +358,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -357,10 +359,13 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
}
|
||||
|
||||
public MutableBlockPosition(int i, int j, int k) {
|
||||
@ -145,7 +145,7 @@ index 5dbd3e60fe..e9ea232a78 100644
|
||||
}
|
||||
|
||||
public MutableBlockPosition(double d0, double d1, double d2) {
|
||||
@@ -390,6 +395,9 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -391,6 +396,9 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
return super.a(enumblockrotation).immutableCopy();
|
||||
}
|
||||
|
||||
@ -155,7 +155,7 @@ index 5dbd3e60fe..e9ea232a78 100644
|
||||
@Override
|
||||
public int getX() {
|
||||
return this.b;
|
||||
@@ -403,13 +411,16 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -404,13 +412,16 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@Override
|
||||
public int getZ() {
|
||||
return this.d;
|
||||
@ -176,7 +176,7 @@ index 5dbd3e60fe..e9ea232a78 100644
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -439,26 +450,26 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -440,26 +451,26 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
}
|
||||
|
||||
public BlockPosition.MutableBlockPosition c(EnumDirection enumdirection, int i) {
|
||||
@ -209,5 +209,5 @@ index 5dbd3e60fe..e9ea232a78 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 3af39fc278241d8b09966f6443402ebbe999a09c Mon Sep 17 00:00:00 2001
|
||||
From a82657f16a14fa3516aa95a47b42f9457e7b77e4 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 23 Jul 2018 22:18:31 -0400
|
||||
Subject: [PATCH] Mark chunk dirty anytime entities change to guarantee it
|
||||
@ -6,10 +6,10 @@ Subject: [PATCH] Mark chunk dirty anytime entities change to guarantee it
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index e66bbb7ee3..803afed60d 100644
|
||||
index 87d68a3e21..6a40dddf46 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -498,6 +498,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -512,6 +512,7 @@ public class Chunk implements IChunkAccess {
|
||||
entity.chunkZ = this.loc.z;
|
||||
this.entities.add(entity); // Paper - per chunk entity list
|
||||
this.entitySlices[k].add(entity);
|
||||
@ -17,7 +17,7 @@ index e66bbb7ee3..803afed60d 100644
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -525,6 +526,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -539,6 +540,7 @@ public class Chunk implements IChunkAccess {
|
||||
return;
|
||||
}
|
||||
entityCounts.decrement(entity.getMinecraftKeyString());
|
||||
@ -26,5 +26,5 @@ index e66bbb7ee3..803afed60d 100644
|
||||
this.entities.remove(entity); // Paper
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f93a941f330b4f7cfeab3b724caf43790160a2b5 Mon Sep 17 00:00:00 2001
|
||||
From 2acf2cef0762f0d88ae7e8c5ef1b17617bec440f Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 23 Jul 2018 22:44:23 -0400
|
||||
Subject: [PATCH] Add some Debug to Chunk Entity slices
|
||||
@ -9,10 +9,10 @@ This should hopefully avoid duplicate entities ever being created
|
||||
if the entity was to end up in 2 different chunk slices
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 803afed60d..80b5013d95 100644
|
||||
index 6a40dddf46..0afa8a7ebd 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -489,6 +489,25 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -503,6 +503,25 @@ public class Chunk implements IChunkAccess {
|
||||
if (k >= this.entitySlices.length) {
|
||||
k = this.entitySlices.length - 1;
|
||||
}
|
||||
@ -38,7 +38,7 @@ index 803afed60d..80b5013d95 100644
|
||||
|
||||
if (!entity.inChunk || entity.getCurrentChunk() != this) entityCounts.increment(entity.getMinecraftKeyString()); // Paper
|
||||
entity.inChunk = true;
|
||||
@@ -498,6 +517,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -512,6 +531,7 @@ public class Chunk implements IChunkAccess {
|
||||
entity.chunkZ = this.loc.z;
|
||||
this.entities.add(entity); // Paper - per chunk entity list
|
||||
this.entitySlices[k].add(entity);
|
||||
@ -46,7 +46,7 @@ index 803afed60d..80b5013d95 100644
|
||||
this.markDirty(); // Paper
|
||||
}
|
||||
|
||||
@@ -522,6 +542,10 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -536,6 +556,10 @@ public class Chunk implements IChunkAccess {
|
||||
|
||||
// Paper start
|
||||
if (entity.currentChunk != null && entity.currentChunk.get() == this) entity.setCurrentChunk(null);
|
||||
@ -70,5 +70,5 @@ index a0379c6a77..838aa7da69 100644
|
||||
|
||||
public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData; // Paper
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From eb17a9e3291d12df5f3a007c85644bcdbdaca564 Mon Sep 17 00:00:00 2001
|
||||
From 996595a695e7097c24e2bd7a4b1f9594ecf1b2bf Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 26 Jul 2018 00:11:12 -0400
|
||||
Subject: [PATCH] Prevent Saving Bad entities to chunks
|
||||
@ -80,10 +80,10 @@ index 13d99de2cd..f54572773c 100644
|
||||
public static ChunkStatus.Type a(@Nullable NBTTagCompound nbttagcompound) {
|
||||
if (nbttagcompound != null) {
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 6ce7f77a5e..87762b1725 100644
|
||||
index 02d9c754b1..d1424325d5 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1085,6 +1085,7 @@ public class WorldServer extends World {
|
||||
@@ -1084,6 +1084,7 @@ public class WorldServer extends World {
|
||||
List[] aentityslice = chunk.getEntitySlices(); // Spigot
|
||||
int i = aentityslice.length;
|
||||
|
||||
@ -91,7 +91,7 @@ index 6ce7f77a5e..87762b1725 100644
|
||||
for (int j = 0; j < i; ++j) {
|
||||
List<Entity> entityslice = aentityslice[j]; // Spigot
|
||||
Iterator iterator = entityslice.iterator();
|
||||
@@ -1109,11 +1110,25 @@ public class WorldServer extends World {
|
||||
@@ -1108,11 +1109,25 @@ public class WorldServer extends World {
|
||||
throw (IllegalStateException) SystemUtils.c(new IllegalStateException("Removing entity while ticking!"));
|
||||
}
|
||||
|
||||
@ -118,5 +118,5 @@ index 6ce7f77a5e..87762b1725 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a584b96dd649886f03c6e96b89433c236a277c6e Mon Sep 17 00:00:00 2001
|
||||
From 8a2267af66d0af048717527cfeaf8af8f031e25c Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 28 Jul 2018 12:18:27 -0400
|
||||
Subject: [PATCH] Ignore Dead Entities in entityList iteration
|
||||
@ -23,10 +23,10 @@ index b839769cea..5acad8e44f 100644
|
||||
MutablePair<Integer, Map<ChunkCoordIntPair, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
|
||||
ChunkCoordIntPair chunk = new ChunkCoordIntPair(e.getChunkX(), e.getChunkZ());
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 80b5013d95..f47ed1947e 100644
|
||||
index 0afa8a7ebd..8e9ddca049 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -796,6 +796,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -810,6 +810,7 @@ public class Chunk implements IChunkAccess {
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity1 = (Entity) iterator.next();
|
||||
@ -34,7 +34,7 @@ index 80b5013d95..f47ed1947e 100644
|
||||
|
||||
if (entity1.getBoundingBox().c(axisalignedbb) && entity1 != entity) {
|
||||
if (predicate == null || predicate.test(entity1)) {
|
||||
@@ -833,6 +834,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -847,6 +848,7 @@ public class Chunk implements IChunkAccess {
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
T entity = (T) iterator.next(); // CraftBukkit - decompile error
|
||||
@ -42,7 +42,7 @@ index 80b5013d95..f47ed1947e 100644
|
||||
|
||||
if ((entitytypes == null || entity.getEntityType() == entitytypes) && entity.getBoundingBox().c(axisalignedbb) && predicate.test(entity)) {
|
||||
list.add(entity);
|
||||
@@ -854,6 +856,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -868,6 +870,7 @@ public class Chunk implements IChunkAccess {
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
T t0 = (T) iterator.next(); // CraftBukkit - decompile error
|
||||
@ -63,7 +63,7 @@ index 838aa7da69..35d22ec027 100644
|
||||
public float getBukkitYaw() {
|
||||
return this.yaw;
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 87762b1725..8d292604c3 100644
|
||||
index d1424325d5..f071b61195 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -908,7 +908,7 @@ public class WorldServer extends World {
|
||||
@ -75,7 +75,7 @@ index 87762b1725..8d292604c3 100644
|
||||
if (entity instanceof EntityInsentient) {
|
||||
EntityInsentient entityinsentient = (EntityInsentient) entity;
|
||||
|
||||
@@ -1244,6 +1244,7 @@ public class WorldServer extends World {
|
||||
@@ -1242,6 +1242,7 @@ public class WorldServer extends World {
|
||||
entity.origin = entity.getBukkitEntity().getLocation();
|
||||
}
|
||||
// Paper end
|
||||
@ -83,7 +83,7 @@ index 87762b1725..8d292604c3 100644
|
||||
new com.destroystokyo.paper.event.entity.EntityAddToWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
|
||||
}
|
||||
|
||||
@@ -1256,6 +1257,7 @@ public class WorldServer extends World {
|
||||
@@ -1254,6 +1255,7 @@ public class WorldServer extends World {
|
||||
this.removeEntityFromChunk(entity);
|
||||
this.entitiesById.remove(entity.getId());
|
||||
this.unregisterEntity(entity);
|
||||
@ -128,5 +128,5 @@ index cde999c97f..960e29cb16 100644
|
||||
|
||||
if (bukkitEntity == null) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 2e6731ef91c1c7aedbd85382dc6dca59fe98f21b Mon Sep 17 00:00:00 2001
|
||||
From 71d382d6807a653136966f31db2c34266278e24f Mon Sep 17 00:00:00 2001
|
||||
From: Mystiflow <mystiflow@gmail.com>
|
||||
Date: Fri, 6 Jul 2018 13:21:30 +0100
|
||||
Subject: [PATCH] Send nearby packets from world player list not server list
|
||||
@ -46,10 +46,10 @@ index 5ae0927c14..6b67201852 100644
|
||||
double d5 = d1 - entityplayer.locY();
|
||||
double d6 = d2 - entityplayer.locZ();
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 8d292604c3..09176e6040 100644
|
||||
index f071b61195..ad779650ed 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1290,7 +1290,7 @@ public class WorldServer extends World {
|
||||
@@ -1288,7 +1288,7 @@ public class WorldServer extends World {
|
||||
}
|
||||
// CraftBukkit end
|
||||
this.globalEntityList.add(entitylightning);
|
||||
@ -58,7 +58,7 @@ index 8d292604c3..09176e6040 100644
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1422,7 +1422,7 @@ public class WorldServer extends World {
|
||||
@@ -1420,7 +1420,7 @@ public class WorldServer extends World {
|
||||
BlockActionData blockactiondata = (BlockActionData) this.I.removeFirst();
|
||||
|
||||
if (this.a(blockactiondata)) {
|
||||
@ -81,5 +81,5 @@ index 960e29cb16..c7c75a3bfd 100644
|
||||
|
||||
private static Map<String, GameRules.GameRuleKey<?>> gamerules;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 264d561286c4bbb3bbff2fb8aba17192c2655275 Mon Sep 17 00:00:00 2001
|
||||
From 375dc89e8d706626d0409772f1dd7f6de2c63752 Mon Sep 17 00:00:00 2001
|
||||
From: Trigary <trigary0@gmail.com>
|
||||
Date: Fri, 14 Sep 2018 17:42:08 +0200
|
||||
Subject: [PATCH] Limit lightning strike effect distance
|
||||
@ -69,10 +69,10 @@ index 7c518983a9..bdb534deb4 100644
|
||||
|
||||
--this.lifeTicks;
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 09176e6040..43565dd92c 100644
|
||||
index ad779650ed..a75034079b 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1290,7 +1290,7 @@ public class WorldServer extends World {
|
||||
@@ -1288,7 +1288,7 @@ public class WorldServer extends World {
|
||||
}
|
||||
// CraftBukkit end
|
||||
this.globalEntityList.add(entitylightning);
|
||||
@ -82,5 +82,5 @@ index 09176e6040..43565dd92c 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 2b99d6a27557385cf4700c9c1b906fa284f86250 Mon Sep 17 00:00:00 2001
|
||||
From 2a916333230f6ec329d7edc1c0e3fa63d874739a Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 24 Mar 2019 00:24:52 -0400
|
||||
Subject: [PATCH] Entity#getEntitySpawnReason
|
||||
@ -72,10 +72,10 @@ index e9908cd01f..7745e70d2d 100644
|
||||
});
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 43565dd92c..f7a1fad9c1 100644
|
||||
index a75034079b..955003d5f8 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1001,6 +1001,7 @@ public class WorldServer extends World {
|
||||
@@ -1000,6 +1000,7 @@ public class WorldServer extends World {
|
||||
// CraftBukkit start
|
||||
private boolean addEntity0(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
|
||||
@ -99,5 +99,5 @@ index bc2df82a5f..ff60568ce4 100644
|
||||
// Paper end
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f3ac9a0a878d1b35fd7bcbd8f6d5beb5748ffb92 Mon Sep 17 00:00:00 2001
|
||||
From c5faeb8cde3cbd30f2ce61fb48120094d890a6b3 Mon Sep 17 00:00:00 2001
|
||||
From: Zach Brown <zach@zachbr.io>
|
||||
Date: Mon, 6 May 2019 01:29:25 -0400
|
||||
Subject: [PATCH] Per-Player View Distance API placeholders
|
||||
@ -7,7 +7,7 @@ I hope to look at this more in-depth soon. It appears doable.
|
||||
However this should not block the update.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
|
||||
index 6a4ccaeb0f..af10fc36e0 100644
|
||||
index 6a4ccaeb0f..5bf99e0028 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
|
||||
@@ -579,9 +579,9 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
|
||||
@ -15,7 +15,7 @@ index 6a4ccaeb0f..af10fc36e0 100644
|
||||
// this.world.b(1028, new BlockPosition(this), 0);
|
||||
// Paper start
|
||||
- //int viewDistance = ((WorldServer) this.world).spigotConfig.viewDistance * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API
|
||||
+ int viewDistance = ((WorldServer) this.world).spigotConfig.viewDistance * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API
|
||||
+ int viewDistance = this.world.getWorld().getViewDistance() * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API
|
||||
for (EntityPlayer player : ((WorldServer)world).getPlayers()) {
|
||||
- final int viewDistance = player.getViewDistance(); // TODO apply view distance api patch
|
||||
+ //final int viewDistance = player.getViewDistance(); // TODO apply view distance api patch
|
||||
@ -23,7 +23,7 @@ index 6a4ccaeb0f..af10fc36e0 100644
|
||||
double deltaX = this.locX() - player.locX();
|
||||
double deltaZ = this.locZ() - player.locZ();
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java
|
||||
index 2e95069c19..8977c3516b 100644
|
||||
index 2e95069c19..2f466af4d5 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityWither.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityWither.java
|
||||
@@ -208,9 +208,9 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
|
||||
@ -31,7 +31,7 @@ index 2e95069c19..8977c3516b 100644
|
||||
// this.world.b(1023, new BlockPosition(this), 0);
|
||||
// Paper start
|
||||
- //int viewDistance = ((WorldServer) this.world).spigotConfig.viewDistance * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API
|
||||
+ int viewDistance = ((WorldServer) this.world).spigotConfig.viewDistance * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API
|
||||
+ int viewDistance = this.world.getWorld().getViewDistance() * 16; // Paper - updated to use worlds actual view distance incase we have to uncomment this due to removal of player view distance API
|
||||
for (EntityPlayer player : ((WorldServer)world).getPlayers()) {
|
||||
- final int viewDistance = player.getViewDistance(); // TODO apply view distance api patch
|
||||
+ //final int viewDistance = player.getViewDistance(); // TODO apply view distance api patch
|
||||
@ -39,7 +39,7 @@ index 2e95069c19..8977c3516b 100644
|
||||
double deltaX = this.locX() - player.locX();
|
||||
double deltaZ = this.locZ() - player.locZ();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 6e3bcfe2cd..e76f2b9c7f 100644
|
||||
index 6e3bcfe2cd..6672feaf51 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -1959,6 +1959,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@ -49,16 +49,16 @@ index 6e3bcfe2cd..e76f2b9c7f 100644
|
||||
+
|
||||
+ @Override
|
||||
+ public int getViewDistance() {
|
||||
+ throw new NotImplementedException("Per-Player View Distance APIs need further understanding to properly implement"); // TODO
|
||||
+ throw new NotImplementedException("Per-Player View Distance APIs need further understanding to properly implement (There are per world view distances though!)"); // TODO
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setViewDistance(int viewDistance) {
|
||||
+ throw new NotImplementedException("Per-Player View Distance APIs need further understanding to properly implement"); // TODO
|
||||
+ throw new NotImplementedException("Per-Player View Distance APIs need further understanding to properly implement (There are per world view distances though!)"); // TODO
|
||||
+ }
|
||||
// Paper end
|
||||
|
||||
// Spigot start
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b8287f99f5ee5e93683367ffa43fdd4fe1e48f1f Mon Sep 17 00:00:00 2001
|
||||
From 95e5aec7a2016027b8d2e8bbd4c4e3f0bf34ecfa Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Fri, 28 Sep 2018 21:49:53 -0400
|
||||
Subject: [PATCH] Fix issues with entity loss due to unloaded chunks
|
||||
@ -19,7 +19,7 @@ This change ensures the chunks are always loaded when entities are
|
||||
added to the world, or a valid entity moves between chunks.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index f7a1fad9c1..e34ea3d098 100644
|
||||
index 955003d5f8..6da2392915 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -707,7 +707,7 @@ public class WorldServer extends World {
|
||||
@ -31,7 +31,7 @@ index f7a1fad9c1..e34ea3d098 100644
|
||||
entity.inChunk = false;
|
||||
} else {
|
||||
this.getChunkAt(i, k).a(entity);
|
||||
@@ -1033,7 +1033,7 @@ public class WorldServer extends World {
|
||||
@@ -1032,7 +1032,7 @@ public class WorldServer extends World {
|
||||
return false;
|
||||
}
|
||||
// CraftBukkit end
|
||||
@ -41,5 +41,5 @@ index f7a1fad9c1..e34ea3d098 100644
|
||||
if (!(ichunkaccess instanceof Chunk)) {
|
||||
return false;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From abb8e6809baf86c7be7154fe356b11a663413686 Mon Sep 17 00:00:00 2001
|
||||
From 97b023aeeb726ea74a5d6b68d2caf5ec322c3867 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 21 Jul 2018 14:27:34 -0400
|
||||
Subject: [PATCH] Duplicate UUID Resolve Option
|
||||
@ -81,10 +81,10 @@ index 4ba72275b9..572679e4d1 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index f47ed1947e..7bcdbe713d 100644
|
||||
index 8e9ddca049..165cb994e8 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -478,6 +478,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -492,6 +492,7 @@ public class Chunk implements IChunkAccess {
|
||||
if (i != this.loc.x || j != this.loc.z) {
|
||||
Chunk.LOGGER.warn("Wrong location! ({}, {}) should be ({}, {}), {}", i, j, this.loc.x, this.loc.z, entity);
|
||||
entity.dead = true;
|
||||
@ -105,7 +105,7 @@ index 030c9992eb..fd6dad8437 100644
|
||||
this.uniqueID = uuid;
|
||||
this.am = this.uniqueID.toString();
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 2c7e611663..3c237b259e 100644
|
||||
index 4ee26ff08f..1d255ce383 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -1,6 +1,7 @@
|
||||
@ -134,7 +134,7 @@ index 2c7e611663..3c237b259e 100644
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CompletionException;
|
||||
import java.util.concurrent.Executor;
|
||||
@@ -638,12 +642,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -639,12 +643,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
// CraftBukkit start - these are spawned serialized (DefinedStructure) and we don't call an add event below at the moment due to ordering complexities
|
||||
boolean needsRemoval = false;
|
||||
if (chunk.needsDecoration && !this.world.getServer().getServer().getSpawnNPCs() && entity instanceof NPC) {
|
||||
@ -151,7 +151,7 @@ index 2c7e611663..3c237b259e 100644
|
||||
if (list == null) {
|
||||
list = Lists.newArrayList(new Entity[]{entity});
|
||||
} else {
|
||||
@@ -670,6 +674,44 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -671,6 +675,44 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
});
|
||||
}
|
||||
|
||||
@ -197,7 +197,7 @@ index 2c7e611663..3c237b259e 100644
|
||||
ChunkCoordIntPair chunkcoordintpair = playerchunk.i();
|
||||
CompletableFuture<Either<List<IChunkAccess>, PlayerChunk.Failure>> completablefuture = this.a(chunkcoordintpair, 1, (i) -> {
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index e34ea3d098..f9ee9afe3a 100644
|
||||
index 6da2392915..081df240f3 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -3,6 +3,8 @@ package net.minecraft.server;
|
||||
@ -209,7 +209,7 @@ index e34ea3d098..f9ee9afe3a 100644
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Queues;
|
||||
@@ -1060,8 +1062,24 @@ public class WorldServer extends World {
|
||||
@@ -1059,8 +1061,24 @@ public class WorldServer extends World {
|
||||
if (entity1 == null) {
|
||||
return false;
|
||||
} else {
|
||||
@ -236,5 +236,5 @@ index e34ea3d098..f9ee9afe3a 100644
|
||||
}
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f71662abfa6f631026e2a31a6fe81da159411d4a Mon Sep 17 00:00:00 2001
|
||||
From cc2a6afe5cb4a37d3a57b7afaa5754485474a05d Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 13 Sep 2014 23:14:43 -0400
|
||||
Subject: [PATCH] Configurable Keep Spawn Loaded range per world
|
||||
@ -102,10 +102,10 @@ index 3868572aed..ae77805f71 100644
|
||||
@Override
|
||||
public void a(ChunkCoordIntPair chunkcoordintpair) {
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index f9ee9afe3a..389c9d03a1 100644
|
||||
index 081df240f3..ce506e0e12 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1598,13 +1598,89 @@ public class WorldServer extends World {
|
||||
@@ -1596,13 +1596,89 @@ public class WorldServer extends World {
|
||||
return ((PersistentIdCounts) this.getMinecraftServer().getWorldServer(DimensionManager.OVERWORLD).getWorldPersistentData().a(PersistentIdCounts::new, "idcounts")).a();
|
||||
}
|
||||
|
||||
@ -229,5 +229,5 @@ index 5ea7b0b25a..8f8c18c5a4 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From c339c9dc305959ce1fd7ff3c76aa5ad621103747 Mon Sep 17 00:00:00 2001
|
||||
From 66128649d1111260a8bac1509459a62a354d645f Mon Sep 17 00:00:00 2001
|
||||
From: Shane Freeder <theboyetronic@gmail.com>
|
||||
Date: Sun, 9 Jun 2019 03:53:22 +0100
|
||||
Subject: [PATCH] incremental chunk saving
|
||||
@ -29,7 +29,7 @@ index 071e5e7f72..4867615215 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 7bcdbe713d..4b77934c39 100644
|
||||
index 165cb994e8..af0d6aff4d 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -42,7 +42,7 @@ public class Chunk implements IChunkAccess {
|
||||
@ -175,10 +175,10 @@ index a640cb3845..3d255b1964 100644
|
||||
public void a(ProtoChunkExtension protochunkextension) {
|
||||
for (int i = 0; i < this.statusFutures.length(); ++i) {
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 6122d19ccf..4682dca9de 100644
|
||||
index 34f470779f..4f5b516144 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -331,6 +331,64 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -332,6 +332,64 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
}
|
||||
|
||||
@ -243,7 +243,7 @@ index 6122d19ccf..4682dca9de 100644
|
||||
protected void save(boolean flag) {
|
||||
if (flag) {
|
||||
List<PlayerChunk> list = (List) this.visibleChunks.values().stream().filter(PlayerChunk::hasBeenLoaded).peek(PlayerChunk::m).collect(Collectors.toList());
|
||||
@@ -441,6 +499,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -442,6 +500,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
this.world.unloadChunk(chunk);
|
||||
}
|
||||
@ -251,7 +251,7 @@ index 6122d19ccf..4682dca9de 100644
|
||||
|
||||
this.lightEngine.a(ichunkaccess.getPos());
|
||||
this.lightEngine.queueUpdate();
|
||||
@@ -622,6 +681,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -623,6 +682,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
playerchunk.a(new ProtoChunkExtension(chunk));
|
||||
}
|
||||
|
||||
@ -261,7 +261,7 @@ index 6122d19ccf..4682dca9de 100644
|
||||
return PlayerChunk.getChunkState(playerchunk.getTicketLevel());
|
||||
});
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 389c9d03a1..62c2275098 100644
|
||||
index ce506e0e12..ad5e538b24 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -814,11 +814,44 @@ public class WorldServer extends World {
|
||||
@ -319,5 +319,5 @@ index 389c9d03a1..62c2275098 100644
|
||||
this.checkSession();
|
||||
this.worldProvider.i();
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From df1fb149e4665163023f0f4dc676d443e521e296 Mon Sep 17 00:00:00 2001
|
||||
From 75b996c4fd3a28b61da26277680b89205538715d Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Sat, 15 Jun 2019 08:54:33 -0700
|
||||
Subject: [PATCH] Fix World#isChunkGenerated calls
|
||||
@ -132,10 +132,10 @@ index 3d255b1964..040d4b41ea 100644
|
||||
|
||||
public CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> getStatusFutureUnchecked(ChunkStatus chunkstatus) {
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 4682dca9de..405f57874e 100644
|
||||
index 4f5b516144..1d517fd1ae 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -968,12 +968,62 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -969,12 +969,62 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -376,5 +376,5 @@ index 8f8c18c5a4..50467656df 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e53e308d6a701526060a32bbf18768a917f308f8 Mon Sep 17 00:00:00 2001
|
||||
From 49a348381d91ac93ec0d3b43bfdf5751ba9e0f31 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Sat, 22 Jun 2019 04:20:47 -0700
|
||||
Subject: [PATCH] Use ChunkStatus cache when saving protochunks
|
||||
@ -7,10 +7,10 @@ The cache should contain the chunk status when saving. If not it
|
||||
will load it.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 405f57874e..c9c25cdb8e 100644
|
||||
index 1d517fd1ae..9171785ad5 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -844,8 +844,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -845,8 +845,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
NBTTagCompound nbttagcompound;
|
||||
|
||||
if (chunkstatus.getType() != ChunkStatus.Type.LEVELCHUNK) {
|
||||
@ -24,5 +24,5 @@ index 405f57874e..c9c25cdb8e 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 811e3b68dac83939ebea390ad4c6073380fa6753 Mon Sep 17 00:00:00 2001
|
||||
From deb49130a0248ad17fd28a1963c89e984fcdb72a Mon Sep 17 00:00:00 2001
|
||||
From: stonar96 <minecraft.stonar96@gmail.com>
|
||||
Date: Mon, 20 Aug 2018 03:03:58 +0200
|
||||
Subject: [PATCH] Anti-Xray
|
||||
@ -1181,10 +1181,10 @@ index 0000000000..37093419cf
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 4b77934c39..9ce9542b80 100644
|
||||
index af0d6aff4d..472d3a4c03 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -402,7 +402,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -416,7 +416,7 @@ public class Chunk implements IChunkAccess {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -1550,10 +1550,10 @@ index 040d4b41ea..f1620ba80e 100644
|
||||
this.a(new PacketPlayOutMultiBlockChange(this.dirtyCount, this.dirtyBlocks, chunk), false);
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index c9c25cdb8e..9c627bf3b4 100644
|
||||
index 9171785ad5..eb29d0e956 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -603,7 +603,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -604,7 +604,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
PlayerChunkMap.LOGGER.error("Couldn't load chunk {}", chunkcoordintpair, exception);
|
||||
}
|
||||
|
||||
@ -1562,7 +1562,7 @@ index c9c25cdb8e..9c627bf3b4 100644
|
||||
}, this.executor);
|
||||
}
|
||||
|
||||
@@ -1322,7 +1322,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1325,7 +1325,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
private void a(EntityPlayer entityplayer, Packet<?>[] apacket, Chunk chunk) {
|
||||
if (apacket[0] == null) {
|
||||
@ -1702,5 +1702,5 @@ index 8191e7c348..969d548de2 100644
|
||||
return section;
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 59f09c7598e4673d09acea5493d2e8b1b8231d54 Mon Sep 17 00:00:00 2001
|
||||
From 48c7ea33b09e22bfd136ef2e492543d543b71d7e Mon Sep 17 00:00:00 2001
|
||||
From: Shane Freeder <theboyetronic@gmail.com>
|
||||
Date: Sun, 28 Jul 2019 00:51:11 +0100
|
||||
Subject: [PATCH] Mark entities as being ticked when notifying navigation
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 6654b91998..e3913952d9 100644
|
||||
index 5d1fa08f69..8561f96b9a 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1412,6 +1412,7 @@ public class WorldServer extends World {
|
||||
@@ -1410,6 +1410,7 @@ public class WorldServer extends World {
|
||||
VoxelShape voxelshape1 = iblockdata1.getCollisionShape(this, blockposition);
|
||||
|
||||
if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
|
||||
@ -16,7 +16,7 @@ index 6654b91998..e3913952d9 100644
|
||||
Iterator iterator = this.navigators.iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
@@ -1422,6 +1423,7 @@ public class WorldServer extends World {
|
||||
@@ -1420,6 +1421,7 @@ public class WorldServer extends World {
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,5 +25,5 @@ index 6654b91998..e3913952d9 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 386dbf3369631411cc400ec7852ae290d9bcd655 Mon Sep 17 00:00:00 2001
|
||||
From e60938cf3ba63d6a51554c36f6116512c7c53863 Mon Sep 17 00:00:00 2001
|
||||
From: CullanP <cullanpage@gmail.com>
|
||||
Date: Thu, 3 Mar 2016 02:13:38 -0600
|
||||
Subject: [PATCH] Avoid hopper searches if there are no items
|
||||
@ -14,7 +14,7 @@ And since minecart hoppers are used _very_ rarely near we can avoid alot of sear
|
||||
Combined, this adds up a lot.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 9ce9542b80..a23dfeb63d 100644
|
||||
index 472d3a4c03..42eede6781 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -84,6 +84,10 @@ public class Chunk implements IChunkAccess {
|
||||
@ -28,7 +28,7 @@ index 9ce9542b80..a23dfeb63d 100644
|
||||
// Paper end
|
||||
|
||||
public Chunk(World world, ChunkCoordIntPair chunkcoordintpair, BiomeStorage biomestorage, ChunkConverter chunkconverter, TickList<Block> ticklist, TickList<FluidType> ticklist1, long i, @Nullable ChunkSection[] achunksection, @Nullable Consumer<Chunk> consumer) {
|
||||
@@ -518,6 +522,13 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -532,6 +536,13 @@ public class Chunk implements IChunkAccess {
|
||||
entity.chunkZ = this.loc.z;
|
||||
this.entities.add(entity); // Paper - per chunk entity list
|
||||
this.entitySlices[k].add(entity);
|
||||
@ -42,7 +42,7 @@ index 9ce9542b80..a23dfeb63d 100644
|
||||
entity.entitySlice = this.entitySlices[k]; // Paper
|
||||
this.markDirty(); // Paper
|
||||
}
|
||||
@@ -550,6 +561,11 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -564,6 +575,11 @@ public class Chunk implements IChunkAccess {
|
||||
if (!this.entitySlices[i].remove(entity)) {
|
||||
return;
|
||||
}
|
||||
@ -54,7 +54,7 @@ index 9ce9542b80..a23dfeb63d 100644
|
||||
entityCounts.decrement(entity.getMinecraftKeyString());
|
||||
this.markDirty(); // Paper
|
||||
// Paper end
|
||||
@@ -833,6 +849,14 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -847,6 +863,14 @@ public class Chunk implements IChunkAccess {
|
||||
for (int k = i; k <= j; ++k) {
|
||||
Iterator iterator = this.entitySlices[k].iterator(); // Spigot
|
||||
|
||||
@ -69,7 +69,7 @@ index 9ce9542b80..a23dfeb63d 100644
|
||||
while (iterator.hasNext()) {
|
||||
T entity = (T) iterator.next(); // CraftBukkit - decompile error
|
||||
if (entity.shouldBeRemoved) continue; // Paper
|
||||
@@ -852,9 +876,29 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -866,9 +890,29 @@ public class Chunk implements IChunkAccess {
|
||||
i = MathHelper.clamp(i, 0, this.entitySlices.length - 1);
|
||||
j = MathHelper.clamp(j, 0, this.entitySlices.length - 1);
|
||||
|
||||
@ -112,5 +112,5 @@ index 498f381099..a2d1ef3602 100644
|
||||
return entity instanceof IInventory && entity.isAlive();
|
||||
};
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 748db0d90c3cc343b0dadb663f4f6ccad2b6161a Mon Sep 17 00:00:00 2001
|
||||
From b7931612f141bfce24d6020ff0432b868b3e9852 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Sat, 13 Jul 2019 09:23:10 -0700
|
||||
Subject: [PATCH] Asynchronous chunk IO and loading
|
||||
@ -3099,7 +3099,7 @@ index f1620ba80e..74e6b8b973 100644
|
||||
completablefuture = (CompletableFuture) this.statusFutures.get(i);
|
||||
if (completablefuture != null) {
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 9c627bf3b4..19603343b2 100644
|
||||
index eb29d0e956..43abdb47fd 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -63,7 +63,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@ -3120,7 +3120,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
private final File w;
|
||||
private final PlayerMap playerMap;
|
||||
public final Int2ObjectMap<PlayerChunkMap.EntityTracker> trackedEntities;
|
||||
@@ -163,7 +163,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -156,7 +156,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
this.lightEngine = new LightEngineThreaded(ilightaccess, this, this.world.getWorldProvider().f(), threadedmailbox1, this.p.a(threadedmailbox1, false));
|
||||
this.chunkDistanceManager = new PlayerChunkMap.a(executor, iasynctaskhandler);
|
||||
this.l = supplier;
|
||||
@ -3129,7 +3129,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
this.setViewDistance(i);
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -203,7 +203,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -3138,7 +3138,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
return (PlayerChunk) this.visibleChunks.get(i);
|
||||
}
|
||||
|
||||
@@ -324,6 +324,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -325,6 +325,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
public void close() throws IOException {
|
||||
try {
|
||||
this.p.close();
|
||||
@ -3146,7 +3146,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
this.m.close();
|
||||
} finally {
|
||||
super.close();
|
||||
@@ -415,7 +416,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -416,7 +417,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
this.b(() -> {
|
||||
return true;
|
||||
});
|
||||
@ -3156,7 +3156,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
PlayerChunkMap.LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", this.w.getName());
|
||||
} else {
|
||||
this.visibleChunks.values().stream().filter(PlayerChunk::hasBeenLoaded).forEach((playerchunk) -> {
|
||||
@@ -436,11 +438,15 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -437,11 +439,15 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
protected void unloadChunks(BooleanSupplier booleansupplier) {
|
||||
GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler();
|
||||
|
||||
@ -3172,7 +3172,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
}
|
||||
|
||||
gameprofilerfiller.exit();
|
||||
@@ -480,6 +486,60 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -481,6 +487,60 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
}
|
||||
|
||||
@ -3233,7 +3233,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
private void a(long i, PlayerChunk playerchunk) {
|
||||
CompletableFuture<IChunkAccess> completablefuture = playerchunk.getChunkSave();
|
||||
Consumer<IChunkAccess> consumer = (ichunkaccess) -> { // CraftBukkit - decompile error
|
||||
@@ -493,7 +553,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -494,7 +554,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
((Chunk) ichunkaccess).setLoaded(false);
|
||||
}
|
||||
|
||||
@ -3242,7 +3242,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
if (this.loadedChunks.remove(i) && ichunkaccess instanceof Chunk) {
|
||||
Chunk chunk = (Chunk) ichunkaccess;
|
||||
|
||||
@@ -501,6 +561,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -502,6 +562,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
this.autoSaveQueue.remove(playerchunk); // Paper
|
||||
|
||||
@ -3256,7 +3256,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
this.lightEngine.a(ichunkaccess.getPos());
|
||||
this.lightEngine.queueUpdate();
|
||||
this.worldLoadListener.a(ichunkaccess.getPos(), (ChunkStatus) null);
|
||||
@@ -570,27 +637,32 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -571,27 +638,32 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
}
|
||||
|
||||
@ -3305,7 +3305,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
} catch (ReportedException reportedexception) {
|
||||
Throwable throwable = reportedexception.getCause();
|
||||
|
||||
@@ -604,7 +676,32 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -605,7 +677,32 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
return Either.left(new ProtoChunk(chunkcoordintpair, ChunkConverter.a, this.world)); // Paper - Anti-Xray
|
||||
@ -3339,7 +3339,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
}
|
||||
|
||||
private CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> b(PlayerChunk playerchunk, ChunkStatus chunkstatus) {
|
||||
@@ -822,18 +919,43 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -823,18 +920,43 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
return this.u.get();
|
||||
}
|
||||
|
||||
@ -3391,7 +3391,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
|
||||
ichunkaccess.setLastSaved(this.world.getTime());
|
||||
ichunkaccess.setNeedsSaving(false);
|
||||
@@ -844,28 +966,35 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -845,28 +967,35 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
NBTTagCompound nbttagcompound;
|
||||
|
||||
if (chunkstatus.getType() != ChunkStatus.Type.LEVELCHUNK) {
|
||||
@ -3429,7 +3429,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
}
|
||||
|
||||
protected void setViewDistance(int i) {
|
||||
@@ -969,6 +1098,42 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -970,6 +1099,42 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
}
|
||||
|
||||
@ -3472,7 +3472,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
@Nullable
|
||||
public NBTTagCompound readChunkData(ChunkCoordIntPair chunkcoordintpair) throws IOException { // Paper - private -> public
|
||||
NBTTagCompound nbttagcompound = this.read(chunkcoordintpair);
|
||||
@@ -991,33 +1156,55 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -992,33 +1157,55 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
// Paper start - chunk status cache "api"
|
||||
public ChunkStatus getChunkStatusOnDiskIfCached(ChunkCoordIntPair chunkPos) {
|
||||
@ -3539,7 +3539,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
}
|
||||
|
||||
public IChunkAccess getUnloadingChunk(int chunkX, int chunkZ) {
|
||||
@@ -1026,6 +1213,39 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1027,6 +1214,39 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
// Paper end
|
||||
|
||||
@ -3579,7 +3579,7 @@ index 9c627bf3b4..19603343b2 100644
|
||||
boolean isOutsideOfRange(ChunkCoordIntPair chunkcoordintpair) {
|
||||
// Spigot start
|
||||
return isOutsideOfRange(chunkcoordintpair, false);
|
||||
@@ -1371,6 +1591,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1374,6 +1594,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
}
|
||||
|
||||
@ -3983,7 +3983,7 @@ index c999f8c9bf..b59ef1a633 100644
|
||||
|
||||
HAS_SPACE(VillagePlaceRecord::d), IS_OCCUPIED(VillagePlaceRecord::e), ANY((villageplacerecord) -> {
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index e3913952d9..3db0ad0a46 100644
|
||||
index 8561f96b9a..c0476f69e4 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -82,6 +82,79 @@ public class WorldServer extends World {
|
||||
@ -4075,7 +4075,7 @@ index e3913952d9..3db0ad0a46 100644
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
@@ -1675,7 +1750,11 @@ public class WorldServer extends World {
|
||||
@@ -1673,7 +1748,11 @@ public class WorldServer extends World {
|
||||
}
|
||||
|
||||
MCUtil.getSpiralOutChunks(spawn, radiusInBlocks >> 4).forEach(pair -> {
|
||||
@ -4170,5 +4170,5 @@ index 07936eeba2..5bdcdcf9e8 100644
|
||||
log.log( Level.SEVERE, "------------------------------" );
|
||||
//
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 286402aba0b28823b89468bffb9e650c76311313 Mon Sep 17 00:00:00 2001
|
||||
From 8dae2149d4060a1a6797d7d6ce4971f97fa25612 Mon Sep 17 00:00:00 2001
|
||||
From: kickash32 <kickash32@gmail.com>
|
||||
Date: Mon, 19 Aug 2019 01:27:58 +0500
|
||||
Subject: [PATCH] implement optional per player mob spawns
|
||||
@ -643,7 +643,7 @@ index 8427ee2ee8..0f04bcc8b7 100644
|
||||
return this.bb;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 19603343b2..a7b981f299 100644
|
||||
index 43abdb47fd..0fd1d6b3e6 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -78,7 +78,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@ -656,7 +656,7 @@ index 19603343b2..a7b981f299 100644
|
||||
|
||||
// CraftBukkit start - recursion-safe executor for Chunk loadCallback() and unloadCallback()
|
||||
public final CallbackExecutor callbackExecutor = new CallbackExecutor();
|
||||
@@ -165,6 +166,24 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -158,6 +159,24 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
this.l = supplier;
|
||||
this.m = new VillagePlace(new File(this.w, "poi"), datafixer, this.world); // Paper
|
||||
this.setViewDistance(i);
|
||||
@ -755,7 +755,7 @@ index fdac5bb3a2..58bbf2f9d2 100644
|
||||
|
||||
@Nullable
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index f9aed78188..fd8ca2a510 100644
|
||||
index 731f6a8320..38c5b721bf 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1028,7 +1028,20 @@ public class WorldServer extends World {
|
||||
@ -800,5 +800,5 @@ index f9aed78188..fd8ca2a510 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 053029c773639ce909274257536171299e07e9bc Mon Sep 17 00:00:00 2001
|
||||
From af85458ed4090ab13771f6e762dea488fe58e236 Mon Sep 17 00:00:00 2001
|
||||
From: kickash32 <kickash32@gmail.com>
|
||||
Date: Sat, 21 Dec 2019 15:22:09 -0500
|
||||
Subject: [PATCH] Tracking Range Improvements
|
||||
@ -8,10 +8,10 @@ Sets tracking range of watermobs to animals instead of misc and simplifies code
|
||||
Also ignores Enderdragon, defaulting it to Mojang's setting
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index a7b981f299..043ba702d7 100644
|
||||
index 0fd1d6b3e6..73bfebb837 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -1734,6 +1734,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1737,6 +1737,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity = (Entity) iterator.next();
|
||||
int j = entity.getEntityType().getChunkRange() * 16;
|
||||
@ -74,5 +74,5 @@ index 6f8e6c1d07..765bdaf9b5 100644
|
||||
}
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 18fb4717649f3e45bf2e92c2498acef2b185cff2 Mon Sep 17 00:00:00 2001
|
||||
From caeded93e5038666588e0e7d377325a086b5ec11 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Mon, 27 Jan 2020 21:28:00 -0800
|
||||
Subject: [PATCH] Optimise random block ticking
|
||||
@ -99,10 +99,10 @@ index 6d351f0979..a44f65f40d 100644
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
index e76528f199..e650a2e48d 100644
|
||||
index db7ba12fd4..9010359fbd 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
|
||||
@@ -450,6 +450,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
@@ -451,6 +451,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
|
||||
return this.d(MathHelper.floor(d0), MathHelper.floor(d1), MathHelper.floor(d2));
|
||||
}
|
||||
|
||||
@ -111,10 +111,10 @@ index e76528f199..e650a2e48d 100644
|
||||
return this.d(baseblockposition.getX(), baseblockposition.getY(), baseblockposition.getZ());
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index a23dfeb63d..2e3db1a755 100644
|
||||
index 42eede6781..65882f4632 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -572,8 +572,8 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -586,8 +586,8 @@ public class Chunk implements IChunkAccess {
|
||||
this.entities.remove(entity); // Paper
|
||||
}
|
||||
|
||||
@ -376,7 +376,7 @@ index 0c23fc89d7..de9f49b884 100644
|
||||
|
||||
public boolean isSavingDisabled() {
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 62fabb7ad5..9a2b4fa7a2 100644
|
||||
index c348e3e500..fcbc9f2913 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -531,7 +531,12 @@ public class WorldServer extends World {
|
||||
@ -520,5 +520,5 @@ index 62fabb7ad5..9a2b4fa7a2 100644
|
||||
|
||||
protected BlockPosition a(BlockPosition blockposition) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f0bf987e53c7aa744047a0cd70b3b506897a7998 Mon Sep 17 00:00:00 2001
|
||||
From 34b65530d5c531d836075966000e6c9dfafb2877 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Tue, 14 Jan 2020 14:59:08 -0800
|
||||
Subject: [PATCH] Optimise Chunk#getFluid
|
||||
@ -8,10 +8,10 @@ faster on its own, however removing the try catch makes it
|
||||
easier to inline due to code size
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 2e3db1a755..d802acef71 100644
|
||||
index 65882f4632..696634ebf5 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -365,17 +365,20 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -379,17 +379,20 @@ public class Chunk implements IChunkAccess {
|
||||
}
|
||||
|
||||
public Fluid a(int i, int j, int k) {
|
||||
@ -39,7 +39,7 @@ index 2e3db1a755..d802acef71 100644
|
||||
CrashReport crashreport = CrashReport.a(throwable, "Getting fluid state");
|
||||
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Block being got");
|
||||
|
||||
@@ -384,6 +387,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -398,6 +401,7 @@ public class Chunk implements IChunkAccess {
|
||||
});
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
@ -61,5 +61,5 @@ index 3eaf893cdf..cda718bba0 100644
|
||||
|
||||
public void a() {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From af50e068e7f0dfcf365d1ce5f047c4945ef86ea0 Mon Sep 17 00:00:00 2001
|
||||
From bdec2cdf5fdacc359764dd666f6e45ffe8056fd3 Mon Sep 17 00:00:00 2001
|
||||
From: Phoenix616 <mail@moep.tv>
|
||||
Date: Sat, 1 Feb 2020 16:50:39 +0100
|
||||
Subject: [PATCH] Pillager patrol spawn settings and per player options
|
||||
@ -10,7 +10,7 @@ When not per player it will use the Vanilla mechanic of one delay per
|
||||
world and the world age for the start day.
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index e93176d8f2..659a011e97 100644
|
||||
index 7ca67a4aa5..803be76772 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -641,10 +641,21 @@ public class PaperWorldConfig {
|
||||
@ -36,7 +36,7 @@ index e93176d8f2..659a011e97 100644
|
||||
private void entitiesTargetWithFollowRange() {
|
||||
entitiesTargetWithFollowRange = getBoolean("entities-target-with-follow-range", entitiesTargetWithFollowRange);
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index 9da6ed85fa..c6474aa0f8 100644
|
||||
index cf837bdb3b..900631ebe0 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -77,6 +77,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@ -140,5 +140,5 @@ index 3b6034038a..9c95c0ccfc 100644
|
||||
return this.a(t0, Counter.DEFAULT);
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,213 +0,0 @@
|
||||
From 8a760283129e8313839f6fa60e7275446201e46a Mon Sep 17 00:00:00 2001
|
||||
From: froobynooby <froobynooby@froobworld.com>
|
||||
Date: Thu, 20 Feb 2020 15:50:49 +0930
|
||||
Subject: [PATCH] Reduce entity tracker updates on move
|
||||
|
||||
With this patch, for each player we keep track of a set of
|
||||
entities that the player is tracking. This is used to split
|
||||
the entity tracker update logic in the movePlayer method in
|
||||
PlayerChunkMap in to two parts:
|
||||
* Full update: Run through all entity trackers and update them
|
||||
* Partial update: Run through all entity trackers for entities
|
||||
the player is already tracking and update them
|
||||
|
||||
Partial updates will always take less time than full updates,
|
||||
usually by a considerable amount if players and entities are
|
||||
spread out over the map. Assuming they are evenly spread,
|
||||
and given there are x many players, it would be expected to
|
||||
take 1/x the time of a full update.
|
||||
|
||||
Full updates are only run if the following conditions are met:
|
||||
* It has been 20 ticks since the last full update
|
||||
* The player has moved over set distance since the last full
|
||||
update (distance is configurable)
|
||||
|
||||
The motivation for the first condition is that the client
|
||||
sends the server its position once a second, which calls
|
||||
movePlayer, so at a minimum we want to be sending the player
|
||||
an updated set of entities it can see every second.
|
||||
|
||||
The motivation for the second condition is that looping
|
||||
through every entity in world to check if it is now within
|
||||
the tracking range after the player has moved 0.1 blocks is
|
||||
largely unnecessary. Checking only after the player has moved
|
||||
1 or 2 blocks is far better for performance, and very unlikely
|
||||
to give any noticeable side effects.
|
||||
|
||||
In testing, this has reduced the time taken for movement
|
||||
packet processing by up to 4x. Packet processing for movement
|
||||
packets often show up as a major contributor to TPS loss in
|
||||
servers with large player counts
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index 7ca67a4aa5..e93176d8f2 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -668,4 +668,9 @@ public class PaperWorldConfig {
|
||||
private void zombieVillagerInfectionChance() {
|
||||
zombieVillagerInfectionChance = getDouble("zombie-villager-infection-chance", zombieVillagerInfectionChance);
|
||||
}
|
||||
+
|
||||
+ public double trackerUpdateDistance = 1;
|
||||
+ private void trackerUpdateDistance() {
|
||||
+ trackerUpdateDistance = getDouble("tracker-update-distance", trackerUpdateDistance);
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index cf837bdb3b..9da6ed85fa 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -86,6 +86,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
public final int[] mobCounts = new int[ENUMCREATURETYPE_TOTAL_ENUMS]; // Paper
|
||||
public final com.destroystokyo.paper.util.PooledHashSets.PooledObjectLinkedOpenHashSet<EntityPlayer> cachedSingleMobDistanceMap;
|
||||
// Paper end
|
||||
+ // Paper start - Reduce entity tracker updates on move
|
||||
+ public Vec3D lastTrackedPosition = new Vec3D(0, 0, 0);
|
||||
+ public long lastTrackedTick;
|
||||
+ // Paper end
|
||||
|
||||
// CraftBukkit start
|
||||
public String displayName;
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 043ba702d7..8f477767b9 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -133,6 +133,39 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
|
||||
+ // Paper end
|
||||
+
|
||||
+ // Paper start - Reduce entity tracker updates on move
|
||||
+ private double trackerUpdateDistanceSquared;
|
||||
+ private final Int2ObjectMap<Int2ObjectMap<PlayerChunkMap.EntityTracker>> playerTrackedEntities = new Int2ObjectOpenHashMap<>();
|
||||
+ private final Int2ObjectMap<Queue<Integer>> playerTrackedEntitiesRemoveQueue = new Int2ObjectOpenHashMap<>();
|
||||
+
|
||||
+ void flushRemoveQueue(EntityPlayer entityplayer) {
|
||||
+ Queue<Integer> removeQueue = getPlayerTrackedEntityMapRemoveQueue(entityplayer.getId());
|
||||
+ Int2ObjectMap<PlayerChunkMap.EntityTracker> entityMap = getPlayerTrackedEntityMap(entityplayer.getId());
|
||||
+ for (Integer id = removeQueue.poll(); id != null; id = removeQueue.poll()) {
|
||||
+ entityMap.remove(id);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ void flushRemoveQueues() {
|
||||
+ for (Int2ObjectMap.Entry<Queue<Integer>> entry : playerTrackedEntitiesRemoveQueue.int2ObjectEntrySet()) {
|
||||
+ Int2ObjectMap<EntityTracker> entityMap = getPlayerTrackedEntityMap(entry.getKey());
|
||||
+ Queue<Integer> removeQueue = entry.getValue();
|
||||
+ for (Integer id = removeQueue.poll(); id != null; id = removeQueue.poll()) {
|
||||
+ entityMap.remove(id);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ Int2ObjectMap<EntityTracker> getPlayerTrackedEntityMap(int id) {
|
||||
+ return playerTrackedEntities.computeIfAbsent(id, i -> new Int2ObjectOpenHashMap<>());
|
||||
+ }
|
||||
+
|
||||
+ Queue<Integer> getPlayerTrackedEntityMapRemoveQueue(int id) {
|
||||
+ return playerTrackedEntitiesRemoveQueue.computeIfAbsent(id, i -> new java.util.ArrayDeque<>());
|
||||
+ }
|
||||
+
|
||||
// Paper end
|
||||
|
||||
public PlayerChunkMap(WorldServer worldserver, File file, DataFixer datafixer, DefinedStructureManager definedstructuremanager, Executor executor, IAsyncTaskHandler<Runnable> iasynctaskhandler, ILightAccess ilightaccess, ChunkGenerator<?> chunkgenerator, WorldLoadListener worldloadlistener, Supplier<WorldPersistentData> supplier, int i) {
|
||||
@@ -167,6 +200,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
this.m = new VillagePlace(new File(this.w, "poi"), datafixer, this.world); // Paper
|
||||
this.setViewDistance(i);
|
||||
this.playerMobDistanceMap = this.world.paperConfig.perPlayerMobSpawns ? new com.destroystokyo.paper.util.PlayerMobDistanceMap() : null; // Paper
|
||||
+ this.trackerUpdateDistanceSquared = Math.pow(this.world.paperConfig.trackerUpdateDistance, 2); // Paper
|
||||
}
|
||||
|
||||
public void updatePlayerMobTypeMap(Entity entity) {
|
||||
@@ -1339,8 +1373,19 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
public void movePlayer(EntityPlayer entityplayer) {
|
||||
- ObjectIterator objectiterator = this.trackedEntities.values().iterator();
|
||||
+ // Paper start
|
||||
+ // ObjectIterator objectiterator = this.trackedEntities.values().iterator();
|
||||
+ ObjectIterator objectiterator;
|
||||
|
||||
+ if (MinecraftServer.currentTick - entityplayer.lastTrackedTick >= 20
|
||||
+ || entityplayer.lastTrackedPosition.distanceSquared(entityplayer.getPositionVector()) >= trackerUpdateDistanceSquared) {
|
||||
+ entityplayer.lastTrackedPosition = entityplayer.getPositionVector();
|
||||
+ entityplayer.lastTrackedTick = MinecraftServer.currentTick;
|
||||
+ objectiterator = this.trackedEntities.values().iterator(); // Update all entity trackers
|
||||
+ } else {
|
||||
+ objectiterator = getPlayerTrackedEntityMap(entityplayer.getId()).values().iterator(); // Only update entity trackers for already tracked entities
|
||||
+ }
|
||||
+ // Paper end
|
||||
while (objectiterator.hasNext()) {
|
||||
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next();
|
||||
|
||||
@@ -1350,6 +1395,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
playerchunkmap_entitytracker.updatePlayer(entityplayer);
|
||||
}
|
||||
}
|
||||
+ flushRemoveQueues(); // Paper
|
||||
|
||||
int i = MathHelper.floor(entityplayer.locX()) >> 4;
|
||||
int j = MathHelper.floor(entityplayer.locZ()) >> 4;
|
||||
@@ -1491,12 +1537,21 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
playerchunkmap_entitytracker.clear(entityplayer);
|
||||
}
|
||||
+ // Paper start
|
||||
+ playerTrackedEntities.remove(entityplayer.getId());
|
||||
+ playerTrackedEntitiesRemoveQueue.remove(entityplayer.getId());
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker1 = (PlayerChunkMap.EntityTracker) this.trackedEntities.remove(entity.getId());
|
||||
|
||||
if (playerchunkmap_entitytracker1 != null) {
|
||||
playerchunkmap_entitytracker1.a();
|
||||
+ // Paper start
|
||||
+ for (EntityPlayer player : playerchunkmap_entitytracker1.trackedPlayers) {
|
||||
+ getPlayerTrackedEntityMap(player.getId()).remove(playerchunkmap_entitytracker1.tracker.getId());
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
entity.tracker = null; // Paper - We're no longer tracked
|
||||
}
|
||||
@@ -1537,7 +1592,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
world.timings.tracker2.stopTiming(); // Paper
|
||||
}
|
||||
-
|
||||
+ flushRemoveQueues(); // Paper
|
||||
|
||||
}
|
||||
|
||||
@@ -1586,6 +1641,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
}
|
||||
}
|
||||
+ flushRemoveQueue(entityplayer); // Paper
|
||||
|
||||
Iterator iterator;
|
||||
Entity entity1;
|
||||
@@ -1682,6 +1738,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
org.spigotmc.AsyncCatcher.catchOp("player tracker clear"); // Spigot
|
||||
if (this.trackedPlayers.remove(entityplayer)) {
|
||||
this.trackerEntry.a(entityplayer);
|
||||
+ getPlayerTrackedEntityMap(entityplayer.getId()).remove(this.tracker.getId()); // Paper
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1718,9 +1775,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
if (flag1 && this.trackedPlayerMap.putIfAbsent(entityplayer, true) == null) { // Paper
|
||||
this.trackerEntry.b(entityplayer);
|
||||
+ getPlayerTrackedEntityMap(entityplayer.getId()).put(this.tracker.getId(), this); // Paper
|
||||
}
|
||||
} else if (this.trackedPlayers.remove(entityplayer)) {
|
||||
this.trackerEntry.a(entityplayer);
|
||||
+ getPlayerTrackedEntityMapRemoveQueue(entityplayer.getId()).add(this.tracker.getId()); // Paper
|
||||
}
|
||||
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,4 +1,4 @@
|
||||
From ff553a44163ebec14ee14149ece19c35bcbe6bca Mon Sep 17 00:00:00 2001
|
||||
From 5e261d2773e625fa5bffbd4b7ae848b40e6b8972 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 29 Mar 2020 18:26:14 -0400
|
||||
Subject: [PATCH] Ensure Entity is never double registered
|
||||
@ -23,7 +23,7 @@ index 00df89d650..0dbe2dce11 100644
|
||||
private boolean locked = false;
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 9b9e242432..f80c80957a 100644
|
||||
index 5173731dc5..3fc25183ca 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -532,6 +532,7 @@ public class WorldServer extends World {
|
||||
@ -34,7 +34,7 @@ index 9b9e242432..f80c80957a 100644
|
||||
this.registerEntity(entity);
|
||||
}
|
||||
} // Paper - timings
|
||||
@@ -1354,6 +1355,19 @@ public class WorldServer extends World {
|
||||
@@ -1353,6 +1354,19 @@ public class WorldServer extends World {
|
||||
|
||||
public void unregisterEntity(Entity entity) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
|
||||
@ -54,7 +54,7 @@ index 9b9e242432..f80c80957a 100644
|
||||
// Spigot start
|
||||
if ( entity instanceof EntityHuman )
|
||||
{
|
||||
@@ -1415,9 +1429,21 @@ public class WorldServer extends World {
|
||||
@@ -1413,9 +1427,21 @@ public class WorldServer extends World {
|
||||
|
||||
private void registerEntity(Entity entity) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot
|
||||
@ -78,5 +78,5 @@ index 9b9e242432..f80c80957a 100644
|
||||
if (entity instanceof EntityEnderDragon) {
|
||||
EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eo();
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 233dec6facb9b9c1c11989bf62e504303c9a4d56 Mon Sep 17 00:00:00 2001
|
||||
From 80f240c7853f1795c5e7959e3daec3e1af7faee3 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Tue, 31 Mar 2020 03:01:45 -0400
|
||||
Subject: [PATCH] Fix unregistering entities from unloading chunks
|
||||
@ -15,10 +15,10 @@ Combine that with a buggy detail of the previous implementation of
|
||||
the Dupe UUID patch, then this was the likely source of the "Ghost entities"
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index f80c80957a..3f8f40018d 100644
|
||||
index 3fc25183ca..9fbe8fa1b2 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1508,9 +1508,9 @@ public class WorldServer extends World {
|
||||
@@ -1506,9 +1506,9 @@ public class WorldServer extends World {
|
||||
}
|
||||
|
||||
private void removeEntityFromChunk(Entity entity) {
|
||||
@ -31,5 +31,5 @@ index f80c80957a..3f8f40018d 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 23ff45ad57869e36aa344f11b7c7f5ad6b028289 Mon Sep 17 00:00:00 2001
|
||||
From 38e70a8701f6abb26dcc1681a4b6523576503d4a Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Tue, 31 Mar 2020 03:50:42 -0400
|
||||
Subject: [PATCH] Remote Connections shouldn't hold up shutdown
|
||||
@ -24,5 +24,5 @@ index 349a0ea213..1ef7890da5 100644
|
||||
|
||||
System.exit(0); // CraftBukkit
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 69d5b79f2d4fb9d153dba0484afc7f4325688594 Mon Sep 17 00:00:00 2001
|
||||
From 5ed395f3dacf7c33486ae39e1580132e4b1284c0 Mon Sep 17 00:00:00 2001
|
||||
From: chickeneer <emcchickeneer@gmail.com>
|
||||
Date: Tue, 17 Mar 2020 14:18:50 -0500
|
||||
Subject: [PATCH] Do not allow bees to load chunks for beehives
|
||||
@ -41,5 +41,5 @@ index c7d79efdf6..dd1d246aeb 100644
|
||||
|
||||
if (tileentity instanceof TileEntityBeehive) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 97238d4fbd5f5e6a5da9f051e50751ff70c76dcb Mon Sep 17 00:00:00 2001
|
||||
From a04b7ed17e96d5d02e9d14e3d96a5638a148fcd4 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 2 Apr 2020 01:42:39 -0400
|
||||
Subject: [PATCH] Prevent Double PlayerChunkMap adds crashing server
|
||||
@ -7,10 +7,10 @@ Suspected case would be around the technique used in .stopRiding
|
||||
Stack will identify any causer of this and warn instead of crashing.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 8f477767b9..7647b804fa 100644
|
||||
index 73bfebb837..e22ef19534 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -1489,6 +1489,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1446,6 +1446,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
protected void addEntity(Entity entity) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity track"); // Spigot
|
||||
@ -26,10 +26,10 @@ index 8f477767b9..7647b804fa 100644
|
||||
if (!(entity instanceof EntityLightning)) {
|
||||
EntityTypes<?> entitytypes = entity.getEntityType();
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 3f8f40018d..532aba2a5d 100644
|
||||
index 9fbe8fa1b2..2a7a47c670 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1474,7 +1474,7 @@ public class WorldServer extends World {
|
||||
@@ -1472,7 +1472,7 @@ public class WorldServer extends World {
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ index 3f8f40018d..532aba2a5d 100644
|
||||
// CraftBukkit start - SPIGOT-5278
|
||||
if (entity instanceof EntityDrowned) {
|
||||
this.navigators.add(((EntityDrowned) entity).navigationWater);
|
||||
@@ -1485,6 +1485,7 @@ public class WorldServer extends World {
|
||||
@@ -1483,6 +1483,7 @@ public class WorldServer extends World {
|
||||
this.navigators.add(((EntityInsentient) entity).getNavigation());
|
||||
}
|
||||
entity.valid = true; // CraftBukkit
|
||||
@ -47,5 +47,5 @@ index 3f8f40018d..532aba2a5d 100644
|
||||
if (entity.origin == null) {
|
||||
entity.origin = entity.getBukkitEntity().getLocation();
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From ef055b2d308e7f386a101f0aabd78afbb34cdaed Mon Sep 17 00:00:00 2001
|
||||
From 102b09f710cfa66c9284bf278763fb30b66cf3a4 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 2 Apr 2020 02:37:57 -0400
|
||||
Subject: [PATCH] Optimize Collision Chunk lookup and avoid loading far chunks
|
||||
@ -38,5 +38,5 @@ index f851ed11df..d154487294 100644
|
||||
if (iblockaccess != null) {
|
||||
blockposition_mutableblockposition.d(k1, l1, i2);
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 30e0809c5100d315a28125aa652910f42ef76fbf Mon Sep 17 00:00:00 2001
|
||||
From c0c34e10d92aefb26116f3c7865b54debcd31ba7 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 2 Apr 2020 17:16:48 -0400
|
||||
Subject: [PATCH] Don't tick dead players
|
||||
@ -7,10 +7,10 @@ Causes sync chunk loads and who knows what all else.
|
||||
This is safe because Spectators are skipped in unloaded chunks too in vanilla.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index c6474aa0f8..a16a8c10a2 100644
|
||||
index 900631ebe0..aa9c903aa8 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -433,7 +433,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -429,7 +429,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
public void playerTick() {
|
||||
try {
|
||||
@ -20,5 +20,5 @@ index c6474aa0f8..a16a8c10a2 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 5c0011d7d238914c4a29da2f28095f31c7aad451 Mon Sep 17 00:00:00 2001
|
||||
From 09137b1fb59822c382267f14ad337c59403bc733 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 2 Apr 2020 19:31:16 -0400
|
||||
Subject: [PATCH] Dead Player's shouldn't be able to move
|
||||
@ -20,5 +20,5 @@ index 61c9e030a1..c4d4334305 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a6fbb1690cd064660bca6797edd6afcaec9e1b19 Mon Sep 17 00:00:00 2001
|
||||
From c02c51d21e1c92abe3c71d9f8718bb457b545c93 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 8 Apr 2020 03:06:30 -0400
|
||||
Subject: [PATCH] Optimize PlayerChunkMap memory use for visibleChunks
|
||||
@ -76,7 +76,7 @@ index d9941b38ca..71ab65e00f 100644
|
||||
List<PlayerChunk> allChunks = new ArrayList<>(visibleChunks.values());
|
||||
List<EntityPlayer> players = world.players;
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 7647b804fa..fb7bbe8744 100644
|
||||
index e22ef19534..db5a35598d 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -55,8 +55,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@ -92,7 +92,7 @@ index 7647b804fa..fb7bbe8744 100644
|
||||
private final Long2ObjectLinkedOpenHashMap<PlayerChunk> pendingUnload;
|
||||
final LongSet loadedChunks; // Paper - private -> package
|
||||
public final WorldServer world;
|
||||
@@ -170,7 +172,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -130,7 +132,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
public PlayerChunkMap(WorldServer worldserver, File file, DataFixer datafixer, DefinedStructureManager definedstructuremanager, Executor executor, IAsyncTaskHandler<Runnable> iasynctaskhandler, ILightAccess ilightaccess, ChunkGenerator<?> chunkgenerator, WorldLoadListener worldloadlistener, Supplier<WorldPersistentData> supplier, int i) {
|
||||
super(new File(worldserver.getWorldProvider().getDimensionManager().a(file), "region"), datafixer);
|
||||
@ -101,7 +101,7 @@ index 7647b804fa..fb7bbe8744 100644
|
||||
this.pendingUnload = new Long2ObjectLinkedOpenHashMap();
|
||||
this.loadedChunks = new LongOpenHashSet();
|
||||
this.unloadQueue = new LongOpenHashSet();
|
||||
@@ -262,9 +264,52 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -221,9 +223,52 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
return (PlayerChunk) this.updatingChunks.get(i);
|
||||
}
|
||||
|
||||
@ -155,7 +155,7 @@ index 7647b804fa..fb7bbe8744 100644
|
||||
}
|
||||
|
||||
protected IntSupplier c(long i) {
|
||||
@@ -444,8 +489,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -411,8 +456,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
// Paper end
|
||||
|
||||
protected void save(boolean flag) {
|
||||
@ -166,7 +166,7 @@ index 7647b804fa..fb7bbe8744 100644
|
||||
MutableBoolean mutableboolean = new MutableBoolean();
|
||||
|
||||
do {
|
||||
@@ -473,7 +519,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -440,7 +486,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
// this.i(); // Paper - nuke IOWorker
|
||||
PlayerChunkMap.LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", this.w.getName());
|
||||
} else {
|
||||
@ -175,7 +175,7 @@ index 7647b804fa..fb7bbe8744 100644
|
||||
IChunkAccess ichunkaccess = (IChunkAccess) playerchunk.getChunkSave().getNow(null); // CraftBukkit - decompile error
|
||||
|
||||
if (ichunkaccess instanceof ProtoChunkExtension || ichunkaccess instanceof Chunk) {
|
||||
@@ -643,7 +689,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -610,7 +656,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
if (!this.updatingChunksModified) {
|
||||
return false;
|
||||
} else {
|
||||
@ -197,7 +197,7 @@ index 7647b804fa..fb7bbe8744 100644
|
||||
this.updatingChunksModified = false;
|
||||
return true;
|
||||
}
|
||||
@@ -1109,12 +1168,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1076,12 +1135,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
protected Iterable<PlayerChunk> f() {
|
||||
@ -271,5 +271,5 @@ index 07ebd78acc..b70c0fd977 100644
|
||||
return chunks.values().stream().map(PlayerChunk::getFullChunk).filter(Objects::nonNull).map(net.minecraft.server.Chunk::getBukkitChunk).toArray(Chunk[]::new);
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 033758c1aa7ac67619a80cbfb50e858146141638 Mon Sep 17 00:00:00 2001
|
||||
From 215f58b96ad22596b69d824ef9252ed9290c7d89 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 8 Apr 2020 21:07:08 -0400
|
||||
Subject: [PATCH] Don't load chunks when attempting to unload a chunk
|
||||
@ -28,5 +28,5 @@ index b70c0fd977..eb7b48422e 100644
|
||||
return true;
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b739b47db7bd4f5083b98e6168f265f53c272411 Mon Sep 17 00:00:00 2001
|
||||
From 996bb55a72ebbe9ee6543b1e56a721208fa7f7cf Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 8 Apr 2020 21:24:05 -0400
|
||||
Subject: [PATCH] Increase Light Queue Size
|
||||
@ -14,12 +14,12 @@ light engine on shutdown...
|
||||
The queue size only puts a cap on max loss, doesn't solve that problem.
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index 659a011e97..88a45e517c 100644
|
||||
index 803be76772..3c0468bc44 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -684,4 +684,9 @@ public class PaperWorldConfig {
|
||||
private void trackerUpdateDistance() {
|
||||
trackerUpdateDistance = getDouble("tracker-update-distance", trackerUpdateDistance);
|
||||
@@ -679,4 +679,9 @@ public class PaperWorldConfig {
|
||||
private void zombieVillagerInfectionChance() {
|
||||
zombieVillagerInfectionChance = getDouble("zombie-villager-infection-chance", zombieVillagerInfectionChance);
|
||||
}
|
||||
+
|
||||
+ public int lightQueueSize = 20;
|
||||
@ -41,5 +41,5 @@ index d1f82eff21..77adc64e30 100644
|
||||
// CraftBukkit start
|
||||
this.forceTicks = false;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 6b84b25e8e23e57646ef302c918c41028cbb92c1 Mon Sep 17 00:00:00 2001
|
||||
From 203692f5bd79a69c2a0306ecf4dc963d58f176ea Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 9 Apr 2020 00:09:26 -0400
|
||||
Subject: [PATCH] Mid Tick Chunk Tasks - Speed up processing of chunk loads and
|
||||
@ -226,7 +226,7 @@ index 77adc64e30..3c25436f15 100644
|
||||
// Spigot Start
|
||||
CrashReport crashreport;
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 532aba2a5d..dc01fb494d 100644
|
||||
index 2a7a47c670..9b5f24c262 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -432,6 +432,7 @@ public class WorldServer extends World {
|
||||
@ -262,5 +262,5 @@ index 532aba2a5d..dc01fb494d 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 3761e0c1541d0ec88c01ac318204538ee4c43315 Mon Sep 17 00:00:00 2001
|
||||
From 71d1b3f0878eee64b6a71f95471d4b2fdebf0a9d Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 9 Apr 2020 21:20:33 -0400
|
||||
Subject: [PATCH] Don't move existing players to world spawn
|
||||
@ -10,10 +10,10 @@ larger than the keep loaded range.
|
||||
By skipping this, we avoid potential for a large spike on server start.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index a16a8c10a2..50886c1374 100644
|
||||
index aa9c903aa8..d51af68a92 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -118,7 +118,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -114,7 +114,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
this.serverStatisticManager = minecraftserver.getPlayerList().getStatisticManager(this);
|
||||
this.advancementDataPlayer = minecraftserver.getPlayerList().f(this);
|
||||
this.H = 1.0F;
|
||||
@ -22,7 +22,7 @@ index a16a8c10a2..50886c1374 100644
|
||||
|
||||
this.cachedSingleHashSet = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<>(this); // Paper
|
||||
|
||||
@@ -166,6 +166,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -162,6 +162,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@ -30,7 +30,7 @@ index a16a8c10a2..50886c1374 100644
|
||||
private void a(WorldServer worldserver) {
|
||||
BlockPosition blockposition = worldserver.getSpawn();
|
||||
|
||||
@@ -306,7 +307,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -302,7 +303,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
position = new Vec3D(world.getSpawn());
|
||||
}
|
||||
this.world = world;
|
||||
@ -52,5 +52,5 @@ index 01345a62b7..dfe6251576 100644
|
||||
|
||||
entityplayer.spawnIn(worldserver);
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e4d890492f643d70c8e2d0dad49d78d609e6accc Mon Sep 17 00:00:00 2001
|
||||
From b65aaf9114f0e17ab726ae3af1481f519b82790f Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sun, 5 Apr 2020 22:23:14 -0500
|
||||
Subject: [PATCH] Add tick times API and /mspt command
|
||||
@ -168,5 +168,5 @@ index e8d3528d51..4a41003203 100644
|
||||
|
||||
private final Spigot spigot = new Spigot()
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 5e7de5d0f599813f82721752e666d40a95e9a096 Mon Sep 17 00:00:00 2001
|
||||
From 3d40e8ed1f266d37d4e3e069fad413bbc7567262 Mon Sep 17 00:00:00 2001
|
||||
From: JRoy <joshroy126@gmail.com>
|
||||
Date: Fri, 10 Apr 2020 21:24:12 -0400
|
||||
Subject: [PATCH] Expose MinecraftServer#isRunning
|
||||
@ -21,5 +21,5 @@ index 4a41003203..b627180729 100644
|
||||
// Paper end
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f311f269de4a50bb27e9d23f7f034d1ba5bd67a8 Mon Sep 17 00:00:00 2001
|
||||
From 29c2fec0e51219fb6b6cf9ef100c18f6f4ca3d4b Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 11 Apr 2020 03:56:07 -0400
|
||||
Subject: [PATCH] Implement Chunk Priority / Urgency System for World Gen
|
||||
@ -197,10 +197,10 @@ index 04b97cec29..568fbbd5f2 100644
|
||||
|
||||
private void d(int i) {
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index fb7bbe8744..6fa70eb08d 100644
|
||||
index db5a35598d..22550f74df 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -324,6 +324,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -291,6 +291,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
List<CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>>> list = Lists.newArrayList();
|
||||
int j = chunkcoordintpair.x;
|
||||
int k = chunkcoordintpair.z;
|
||||
@ -208,7 +208,7 @@ index fb7bbe8744..6fa70eb08d 100644
|
||||
|
||||
for (int l = -i; l <= i; ++l) {
|
||||
for (int i1 = -i; i1 <= i; ++i1) {
|
||||
@@ -341,6 +342,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -308,6 +309,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}
|
||||
|
||||
ChunkStatus chunkstatus = (ChunkStatus) intfunction.apply(j1);
|
||||
@ -216,7 +216,7 @@ index fb7bbe8744..6fa70eb08d 100644
|
||||
CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> completablefuture = playerchunk.a(chunkstatus, this);
|
||||
|
||||
list.add(completablefuture);
|
||||
@@ -804,23 +806,28 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -771,23 +773,28 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
};
|
||||
|
||||
CompletableFuture<NBTTagCompound> chunkSaveFuture = this.world.asyncChunkTaskManager.getChunkSaveFuture(chunkcoordintpair.x, chunkcoordintpair.z);
|
||||
@ -250,7 +250,7 @@ index fb7bbe8744..6fa70eb08d 100644
|
||||
|
||||
this.world.getMethodProfiler().c(() -> {
|
||||
return "chunkGenerate " + chunkstatus.d();
|
||||
@@ -848,6 +855,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -815,6 +822,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
return CompletableFuture.completedFuture(Either.right(playerchunk_failure));
|
||||
});
|
||||
}, (runnable) -> {
|
||||
@ -258,7 +258,7 @@ index fb7bbe8744..6fa70eb08d 100644
|
||||
this.mailboxWorldGen.a(ChunkTaskQueueSorter.a(playerchunk, runnable)); // CraftBukkit - decompile error
|
||||
});
|
||||
}
|
||||
@@ -860,6 +868,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -827,6 +835,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
}));
|
||||
}
|
||||
|
||||
@ -266,7 +266,7 @@ index fb7bbe8744..6fa70eb08d 100644
|
||||
private ChunkStatus a(ChunkStatus chunkstatus, int i) {
|
||||
ChunkStatus chunkstatus1;
|
||||
|
||||
@@ -984,9 +993,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -951,9 +960,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
||||
public CompletableFuture<Either<Chunk, PlayerChunk.Failure>> a(PlayerChunk playerchunk) {
|
||||
ChunkCoordIntPair chunkcoordintpair = playerchunk.i();
|
||||
@ -280,5 +280,5 @@ index fb7bbe8744..6fa70eb08d 100644
|
||||
return either.flatMap((list) -> {
|
||||
Chunk chunk = (Chunk) list.get(list.size() / 2);
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 7739f39ca832f6942b113739172d2bf9c948134b Mon Sep 17 00:00:00 2001
|
||||
From 06c4a96e4c945a0d731ea66f43b78262e7082482 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
||||
Date: Mon, 6 Apr 2020 17:53:29 -0700
|
||||
Subject: [PATCH] Remove streams from Mob AI System
|
||||
@ -250,5 +250,5 @@ index 29657fed75..1b800c558f 100644
|
||||
|
||||
public boolean isRunning() { return this.g(); } // Paper - OBFHELPER
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f6bbc419402487cc17d4788ab2c10812abe20e24 Mon Sep 17 00:00:00 2001
|
||||
From 20b3b4c7387b9ba6883a3865aeeda334bea48c1b Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 11 Apr 2020 21:23:42 -0400
|
||||
Subject: [PATCH] Delay unsafe actions until after entity ticking is done
|
||||
@ -6,7 +6,7 @@ Subject: [PATCH] Delay unsafe actions until after entity ticking is done
|
||||
This will help prevent many cases of unregistering entities during entity ticking
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index dc01fb494d..d13dc8fce9 100644
|
||||
index 9b5f24c262..b3785775ec 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -60,6 +60,16 @@ public class WorldServer extends World {
|
||||
@ -57,5 +57,5 @@ index eb7b48422e..ac257d50de 100644
|
||||
|
||||
return ret;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 889fc731b808cb2bc652eac6fde35ff5d08420a6 Mon Sep 17 00:00:00 2001
|
||||
From 9f7453549fbee5fae923580d3c02c0e4cf4cf57e Mon Sep 17 00:00:00 2001
|
||||
From: Callahan <mr.callahhh@gmail.com>
|
||||
Date: Wed, 8 Apr 2020 02:42:14 -0500
|
||||
Subject: [PATCH] Async command map building
|
||||
@ -39,5 +39,5 @@ index 37b1a7947c..2414b0a552 100644
|
||||
event.getPlayer().getServer().getPluginManager().callEvent(event);
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f96d0a3291633d69748de86bc0f5df2de0a1ba83 Mon Sep 17 00:00:00 2001
|
||||
From b70ba5ecf0012b649a82f6a4d674743ddf9e038c Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 12 Apr 2020 15:50:48 -0400
|
||||
Subject: [PATCH] Forced Watchdog Crash support and Improve Async Shutdown
|
||||
@ -345,5 +345,5 @@ index 5bdcdcf9e8..fe4b8caf28 100644
|
||||
break;
|
||||
} // Paper end
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From d80ac90428fba1fbc926e48af6d01dae922bafb1 Mon Sep 17 00:00:00 2001
|
||||
From feb3426b29a8e9110eb293543f82ff0a53cac9b8 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 3 Mar 2016 02:02:07 -0600
|
||||
Subject: [PATCH] Optimize Pathfinding
|
||||
@ -52,5 +52,5 @@ index f06764973f..dc32107ec3 100644
|
||||
|
||||
public boolean setDestination(@Nullable PathEntity pathentity, double speed) { return a(pathentity, speed); } // Paper - OBFHELPER
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 555e1d7a914a914d2fab5912684c5bc79b780456 Mon Sep 17 00:00:00 2001
|
||||
From 3d87dd6ae279f1ddb4681e2378b1df05acab9697 Mon Sep 17 00:00:00 2001
|
||||
From: Callahan <mr.callahhh@gmail.com>
|
||||
Date: Wed, 8 Apr 2020 18:00:17 -0500
|
||||
Subject: [PATCH] Port 20w15a Villager AI optimizations - DROP 1.16
|
||||
@ -194,5 +194,5 @@ index 7c6e687707..396b64ea0f 100644
|
||||
|
||||
private boolean a(Object object) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 01b45b03af99ed2ec19a8621acfb28354c6b3cbf Mon Sep 17 00:00:00 2001
|
||||
From 7c0d5dcaea2050d0fc03f8c965ae6835e416d973 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
||||
Date: Mon, 6 Apr 2020 18:35:09 -0700
|
||||
Subject: [PATCH] Reduce Either Optional allocation
|
||||
@ -47,5 +47,5 @@ index a90adac7bd..3f65fe7102 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 9f7926a05f4689b2ec3033679fbe04acf2b73511 Mon Sep 17 00:00:00 2001
|
||||
From d81186e106a802c1faafc42ee24deee0160ac058 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
||||
Date: Mon, 6 Apr 2020 18:10:43 -0700
|
||||
Subject: [PATCH] Remove streams from PairedQueue
|
||||
@ -78,5 +78,5 @@ index 85bb22e4b7..2369afb4f3 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f150261d52391ce180d530eb53af8a018db7b031 Mon Sep 17 00:00:00 2001
|
||||
From 88311757ba33ed1beed93ac2c08123490bc554f7 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
||||
Date: Mon, 6 Apr 2020 18:06:24 -0700
|
||||
Subject: [PATCH] Remove streams from MinecraftKey
|
||||
@ -46,5 +46,5 @@ index 2b271d3e50..b1beebf0ed 100644
|
||||
|
||||
public static class a implements JsonDeserializer<MinecraftKey>, JsonSerializer<MinecraftKey> {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1e736388e18981ea7df68a2ad8bb3e313552c362 Mon Sep 17 00:00:00 2001
|
||||
From 749d192499880dacf26a985d14e172a9c6f25078 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
||||
Date: Mon, 6 Apr 2020 17:39:25 -0700
|
||||
Subject: [PATCH] Reduce memory footprint of NBTTagCompound
|
||||
@ -50,5 +50,5 @@ index 98deaba12c..02a2ed1baa 100644
|
||||
|
||||
public boolean equals(Object object) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 73d2319fff6b15279fa8f9360da05bc794267ddb Mon Sep 17 00:00:00 2001
|
||||
From f0b7dac5f0f6ebce44688f3919eb5f727cc38b34 Mon Sep 17 00:00:00 2001
|
||||
From: Shane Freeder <theboyetronic@gmail.com>
|
||||
Date: Mon, 13 Apr 2020 07:31:44 +0100
|
||||
Subject: [PATCH] Prevent opening inventories when frozen
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index 50886c1374..0c0224d1eb 100644
|
||||
index d51af68a92..f453ccdb02 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -384,7 +384,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -380,7 +380,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
containerUpdateDelay = world.paperConfig.containerUpdateTickRate;
|
||||
}
|
||||
// Paper end
|
||||
@ -17,7 +17,7 @@ index 50886c1374..0c0224d1eb 100644
|
||||
this.closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper
|
||||
this.activeContainer = this.defaultContainer;
|
||||
}
|
||||
@@ -1174,7 +1174,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1170,7 +1170,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
} else {
|
||||
// CraftBukkit start
|
||||
this.activeContainer = container;
|
||||
@ -26,7 +26,7 @@ index 50886c1374..0c0224d1eb 100644
|
||||
// CraftBukkit end
|
||||
container.addSlotListener(this);
|
||||
return OptionalInt.of(this.containerCounter);
|
||||
@@ -1912,7 +1912,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1908,7 +1908,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -58,5 +58,5 @@ index a6d75c0e07..a5e9fc90ff 100644
|
||||
player.activeContainer.addSlotListener(player);
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a4e973bd1058ee0377e451d5993619881c7fb0a1 Mon Sep 17 00:00:00 2001
|
||||
From 97f1acf281aa18312031d809f24aac85bf6c2611 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Wed, 15 Apr 2020 18:23:28 -0700
|
||||
Subject: [PATCH] Optimise ArraySetSorted#removeIf
|
||||
@ -64,5 +64,5 @@ index 85f799a713..7db6b5850b 100644
|
||||
return new ArraySetSorted<>(i, (Comparator)Comparator.naturalOrder()); // Paper - decompile fix
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e357b2e7bad2b540d3cf268978821148fd64fca2 Mon Sep 17 00:00:00 2001
|
||||
From 042be6672a5aa3fb6d55fca93722548bae75da92 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Wed, 15 Apr 2020 17:56:07 -0700
|
||||
Subject: [PATCH] Don't run entity collision code if not needed
|
||||
@ -29,5 +29,5 @@ index 253e35826f..2c81344a65 100644
|
||||
|
||||
if (i > 0 && list.size() > i - 1 && this.random.nextInt(4) == 0) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f3fde9e5f48bd872498c06b3df0d7d5575c7ea51 Mon Sep 17 00:00:00 2001
|
||||
From 4dcc309197466e350b831399ebdba433cfeaef13 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Wed, 15 Apr 2020 18:08:53 -0700
|
||||
Subject: [PATCH] Optimise entity hard collision checking
|
||||
@ -11,7 +11,7 @@ Less crammed entities are likely to show significantly less benefit.
|
||||
Effectively, this patch optimises crammed entity situations.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index d802acef71..09137d8785 100644
|
||||
index 696634ebf5..00dd21205d 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -90,6 +90,54 @@ public class Chunk implements IChunkAccess {
|
||||
@ -69,7 +69,7 @@ index d802acef71..09137d8785 100644
|
||||
public Chunk(World world, ChunkCoordIntPair chunkcoordintpair, BiomeStorage biomestorage, ChunkConverter chunkconverter, TickList<Block> ticklist, TickList<FluidType> ticklist1, long i, @Nullable ChunkSection[] achunksection, @Nullable Consumer<Chunk> consumer) {
|
||||
this.sections = new ChunkSection[16];
|
||||
this.e = Maps.newHashMap();
|
||||
@@ -525,7 +573,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -539,7 +587,7 @@ public class Chunk implements IChunkAccess {
|
||||
entity.chunkY = k;
|
||||
entity.chunkZ = this.loc.z;
|
||||
this.entities.add(entity); // Paper - per chunk entity list
|
||||
@ -78,7 +78,7 @@ index d802acef71..09137d8785 100644
|
||||
// Paper start
|
||||
if (entity instanceof EntityItem) {
|
||||
itemCounts[k]++;
|
||||
@@ -562,7 +610,7 @@ public class Chunk implements IChunkAccess {
|
||||
@@ -576,7 +624,7 @@ public class Chunk implements IChunkAccess {
|
||||
entity.entitySlice = null;
|
||||
entity.inChunk = false;
|
||||
}
|
||||
@ -133,7 +133,7 @@ index 0dbe2dce11..324fd07bce 100644
|
||||
this.id = Entity.entityCount.incrementAndGet();
|
||||
this.passengers = Lists.newArrayList();
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
|
||||
index af10fc36e0..2887cb14e4 100644
|
||||
index 5bf99e0028..aecdaacfc7 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
|
||||
@@ -847,6 +847,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
|
||||
@ -215,5 +215,5 @@ index c8619af2cf..899c535c40 100644
|
||||
public List<Entity> getEntities(@Nullable Entity entity, AxisAlignedBB axisalignedbb, @Nullable Predicate<? super Entity> predicate) {
|
||||
this.getMethodProfiler().c("getEntities");
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 33077c31361140aec39629707334a90a1c1185e5 Mon Sep 17 00:00:00 2001
|
||||
From 253be66625c8d5ead5169a7dd27d192c66ed8993 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Thu, 16 Apr 2020 16:13:59 -0700
|
||||
Subject: [PATCH] Optimize ChunkProviderServer's chunk level checking helper
|
||||
@ -61,5 +61,5 @@ index 746b5b5589..c2e4e4f6f1 100644
|
||||
|
||||
private boolean a(long i, Function<PlayerChunk, CompletableFuture<Either<Chunk, PlayerChunk.Failure>>> function) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 53ed8a3225ce805964d5e8ec31df55935d7ba6f4 Mon Sep 17 00:00:00 2001
|
||||
From a8a2c0877959a563ba354a1d238b9bbea01224ac Mon Sep 17 00:00:00 2001
|
||||
From: Zach Brown <zach@zachbr.io>
|
||||
Date: Thu, 16 Apr 2020 20:07:29 -0500
|
||||
Subject: [PATCH] Restrict vanilla teleport command to valid locations
|
||||
@ -23,5 +23,5 @@ index 3060b4f68b..79016b5870 100644
|
||||
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(new BlockPosition(d0, d1, d2));
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 4f94fb854eedf71d0b7908e765e40163fb7d431b Mon Sep 17 00:00:00 2001
|
||||
From 3cb8049368979b5cc7f3f9c24f323333161a10d3 Mon Sep 17 00:00:00 2001
|
||||
From: MiniDigger <admin@minidigger.me>
|
||||
Date: Mon, 20 Jan 2020 21:38:15 +0100
|
||||
Subject: [PATCH] Implement Player Client Options API
|
||||
@ -98,7 +98,7 @@ index c4d4334305..7df24be46e 100644
|
||||
protected static final DataWatcherObject<NBTTagCompound> bs = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.p);
|
||||
protected static final DataWatcherObject<NBTTagCompound> bt = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.p);
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index 0c0224d1eb..c108a38018 100644
|
||||
index f453ccdb02..bf2ba0548d 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -2,6 +2,7 @@ package net.minecraft.server;
|
||||
@ -118,7 +118,7 @@ index 0c0224d1eb..c108a38018 100644
|
||||
private long cj = SystemUtils.getMonotonicMillis();
|
||||
private Entity spectatedEntity; private void setSpectatorTargetField(Entity e) { this.spectatedEntity = e; } // Paper - OBFHELPER
|
||||
public boolean worldChangeInvuln;
|
||||
@@ -1577,6 +1578,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1573,6 +1574,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
}
|
||||
|
||||
public void a(PacketPlayInSettings packetplayinsettings) {
|
||||
@ -154,7 +154,7 @@ index 8faebf9efe..4da6371381 100644
|
||||
return this.e;
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index e76f2b9c7f..3515b72682 100644
|
||||
index 6672feaf51..dcbda5b35a 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -1,5 +1,8 @@
|
||||
@ -176,7 +176,7 @@ index e76f2b9c7f..3515b72682 100644
|
||||
import net.minecraft.server.EnumChatFormat;
|
||||
@@ -1969,6 +1973,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void setViewDistance(int viewDistance) {
|
||||
throw new NotImplementedException("Per-Player View Distance APIs need further understanding to properly implement"); // TODO
|
||||
throw new NotImplementedException("Per-Player View Distance APIs need further understanding to properly implement (There are per world view distances though!)"); // TODO
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
@ -200,5 +200,5 @@ index e76f2b9c7f..3515b72682 100644
|
||||
|
||||
// Spigot start
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a025fb60fcd97d4a39b9d65319df173c3bc7cbb5 Mon Sep 17 00:00:00 2001
|
||||
From 9ce6c35e1a6618d71f84e3d9cea6cda01bbd4047 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 18 Apr 2020 04:36:11 -0400
|
||||
Subject: [PATCH] Fix Chunk Post Processing deadlock risk
|
||||
@ -37,7 +37,7 @@ index c2e4e4f6f1..78a8a3cc68 100644
|
||||
}
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 6fa70eb08d..0e652625bb 100644
|
||||
index 22550f74df..cc400a9a84 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -108,6 +108,8 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@ -49,7 +49,7 @@ index 6fa70eb08d..0e652625bb 100644
|
||||
// Paper start - distance maps
|
||||
private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets<EntityPlayer> pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>();
|
||||
|
||||
@@ -1007,7 +1009,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -974,7 +976,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
return Either.left(chunk);
|
||||
});
|
||||
}, (runnable) -> {
|
||||
@ -59,5 +59,5 @@ index 6fa70eb08d..0e652625bb 100644
|
||||
|
||||
completablefuture1.thenAcceptAsync((either) -> {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From fcd5f0fd7d20df79af0cccf4623690d8d8ecb9fa Mon Sep 17 00:00:00 2001
|
||||
From 5332bdb3e363c520fd86a1c419d2ef4899661010 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 18 Apr 2020 15:59:41 -0400
|
||||
Subject: [PATCH] Don't crash if player is attempted to be removed from
|
||||
@ -19,5 +19,5 @@ index 0244768f76..279c7a85fb 100644
|
||||
objectset.remove(entityplayer);
|
||||
if (objectset.isEmpty()) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b6e6c288e775adbeab66961a5c9ec0dc48161017 Mon Sep 17 00:00:00 2001
|
||||
From d71b04af8dd05225fb5703e590b000243f968900 Mon Sep 17 00:00:00 2001
|
||||
From: AvrooVulcan <avrovulcan.programming@gmail.com>
|
||||
Date: Fri, 17 Apr 2020 00:15:23 +0100
|
||||
Subject: [PATCH] Broadcast join message to console
|
||||
@ -22,5 +22,5 @@ index 160476fa29..7403be0b25 100644
|
||||
// CraftBukkit end
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From eb15a2a2808a32c82fc667b90b4b639aefab097a Mon Sep 17 00:00:00 2001
|
||||
From 59ffe8f9308d4fbaba074ad07266e65918676505 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 19 Apr 2020 00:05:46 -0400
|
||||
Subject: [PATCH] Fix Longstanding Broken behavior of PlayerJoinEvent
|
||||
@ -28,10 +28,10 @@ receives a deterministic result, and should no longer require 1 tick
|
||||
delays anymore.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index c108a38018..a48e113b53 100644
|
||||
index bf2ba0548d..45df816980 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -104,6 +104,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -100,6 +100,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
public double maxHealthCache;
|
||||
public boolean joining = true;
|
||||
public boolean sentListPacket = false;
|
||||
@ -40,10 +40,10 @@ index c108a38018..a48e113b53 100644
|
||||
// CraftBukkit end
|
||||
public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 0e652625bb..3f4a3205a4 100644
|
||||
index cc400a9a84..a06c0327df 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -1569,6 +1569,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@@ -1526,6 +1526,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
.printStackTrace();
|
||||
return;
|
||||
}
|
||||
@ -101,5 +101,5 @@ index 7403be0b25..ec45c30dd3 100644
|
||||
// Paper start - Add to collideRule team if needed
|
||||
final Scoreboard scoreboard = this.getServer().getWorldServer(DimensionManager.OVERWORLD).getScoreboard();
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 8a70af59fcb23c04a33296165224d604fdbf692e Mon Sep 17 00:00:00 2001
|
||||
From 0cfef8cdd6a79282ce95c46ab2ae67b9df6227a7 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 19 Apr 2020 04:28:29 -0400
|
||||
Subject: [PATCH] Load Chunks for Login Asynchronously
|
||||
@ -18,7 +18,7 @@ index 324fd07bce..01330045c0 100644
|
||||
|
||||
public void setPositionRotation(BlockPosition blockposition, float f, float f1) {
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index a48e113b53..0f9bca8b8b 100644
|
||||
index 45df816980..48bbaec4b6 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -43,6 +43,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@ -29,7 +29,7 @@ index a48e113b53..0f9bca8b8b 100644
|
||||
public final MinecraftServer server;
|
||||
public final PlayerInteractManager playerInteractManager;
|
||||
public final Deque<Integer> removeQueue = new ArrayDeque<>(); // Paper
|
||||
@@ -105,6 +106,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -101,6 +102,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
public boolean joining = true;
|
||||
public boolean sentListPacket = false;
|
||||
public boolean supressTrackerForLogin = false; // Paper
|
||||
@ -250,5 +250,5 @@ index ec45c30dd3..edf9df8c8a 100644
|
||||
Iterator iterator = list.iterator();
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 04f833aace5e4d08766d9cff78d6e83b5e92dfad Mon Sep 17 00:00:00 2001
|
||||
From 9ac930771782d9f29527f7361b0435f5e357d2c6 Mon Sep 17 00:00:00 2001
|
||||
From: 2277 <38501234+2277@users.noreply.github.com>
|
||||
Date: Tue, 31 Mar 2020 10:33:55 +0100
|
||||
Subject: [PATCH] Move player to spawn point if spawn in unloaded world
|
||||
@ -26,5 +26,5 @@ index 01330045c0..9bb5a4bcf1 100644
|
||||
spawnIn(bworld == null ? null : ((CraftWorld) bworld).getHandle());
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b05ea81f6deb2f2d7fcc6fb65e371bd7402e2df1 Mon Sep 17 00:00:00 2001
|
||||
From 73cbe81da65fdec0d5e4042fa4994837e41944a6 Mon Sep 17 00:00:00 2001
|
||||
From: Mariell Hoversholm <proximyst@proximyst.com>
|
||||
Date: Sun, 19 Apr 2020 12:25:20 +0200
|
||||
Subject: [PATCH] Allow sleeping players to float
|
||||
@ -22,5 +22,5 @@ index 8800a8fcf9..38ec22f4c0 100644
|
||||
PlayerConnection.LOGGER.warn("{} was kicked for floating too long!", this.player.getDisplayName().getString());
|
||||
this.disconnect(com.destroystokyo.paper.PaperConfig.flyingKickPlayerMessage); // Paper - use configurable kick message
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 57f07c3d690df1b2b2b613dea2e368984ee4b9fb Mon Sep 17 00:00:00 2001
|
||||
From 152b6fbacb2b2f599adc5815981e17db8fc97515 Mon Sep 17 00:00:00 2001
|
||||
From: nossr50 <nossr50@gmail.com>
|
||||
Date: Thu, 26 Mar 2020 19:44:50 -0700
|
||||
Subject: [PATCH] Add PlayerAttackEntityCooldownResetEvent
|
||||
@ -28,5 +28,5 @@ index 2c81344a65..3fc2360a10 100644
|
||||
if (event.isCancelled()) {
|
||||
return false;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 759d5945b448b510250dc35d4c72d2d90c51cfa4 Mon Sep 17 00:00:00 2001
|
||||
From eb89bb7522116612e4286157a0b9993d0cf9dbba Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Tue, 21 Apr 2020 03:51:53 -0400
|
||||
Subject: [PATCH] Allow multiple callbacks to schedule for Callback Executor
|
||||
@ -14,7 +14,7 @@ Use an ArrayDeque to store this Queue
|
||||
We make sure to also implement a pattern that is recursion safe too.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index 3f4a3205a4..aabb9220db 100644
|
||||
index a06c0327df..e08a3bd96c 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -87,24 +87,32 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
@ -57,5 +57,5 @@ index 3f4a3205a4..aabb9220db 100644
|
||||
// CraftBukkit end
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From d4c9271457c31e20ca2245fcc187e3032eff10d2 Mon Sep 17 00:00:00 2001
|
||||
From 6d05ae8a7ec0b849d7922f0912f1fedb05dbf993 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Thu, 23 Apr 2020 01:36:39 -0400
|
||||
Subject: [PATCH] Don't fire BlockFade on worldgen threads
|
||||
@ -18,5 +18,5 @@ index b41de95a63..9e501514f3 100644
|
||||
CraftBlockState blockState = CraftBlockState.getBlockState(generatoraccess, blockposition);
|
||||
blockState.setData(Blocks.AIR.getBlockData());
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,14 +1,14 @@
|
||||
From be90753baac2d3f3f7548c3d1757dc2ef772506e Mon Sep 17 00:00:00 2001
|
||||
From c123493ddbfdf4ed2cda2ce0d60c7fadd995a7db Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 25 Apr 2020 15:13:41 -0500
|
||||
Subject: [PATCH] Add phantom creative and insomniac controls
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index 88a45e517c..fc189ebc96 100644
|
||||
index 3c0468bc44..bfb52d75c7 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -689,4 +689,11 @@ public class PaperWorldConfig {
|
||||
@@ -684,4 +684,11 @@ public class PaperWorldConfig {
|
||||
private void lightQueueSize() {
|
||||
lightQueueSize = getInt("light-queue-size", lightQueueSize);
|
||||
}
|
||||
@ -58,5 +58,5 @@ index f488c22ed6..0db431cd6a 100644
|
||||
|
||||
if (!worldserver.worldProvider.f() || blockposition.getY() >= worldserver.getSeaLevel() && worldserver.f(blockposition)) {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1ed9ecc32fcec1fa395073143d271c8373b498b9 Mon Sep 17 00:00:00 2001
|
||||
From a3d9cf01c0faa21381f3f2d1ec6b27395be1eec4 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 25 Apr 2020 06:46:35 -0400
|
||||
Subject: [PATCH] Fix numerous item duplication issues and teleport issues
|
||||
@ -93,5 +93,5 @@ index c3f7e46121..73b271f6f3 100644
|
||||
|
||||
return event;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 2b3eacadbea7c13465bc855a2dacd7bbeeaaa33b Mon Sep 17 00:00:00 2001
|
||||
From 235f4bba895f9ea8992b76a696eef67ca3595425 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 19 Apr 2020 18:15:29 -0400
|
||||
Subject: [PATCH] Implement Brigadier Mojang API
|
||||
@ -138,5 +138,5 @@ index 5f33c9e52a..e16ecdea7d 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 6a37d7c6bd64ccfbb2d061af1cabb3c64b0cef8c Mon Sep 17 00:00:00 2001
|
||||
From 85dc598c049c292cae2909d518a0df13778ba64b Mon Sep 17 00:00:00 2001
|
||||
From: zbk <zbk@projectsolaris.net>
|
||||
Date: Sun, 26 Apr 2020 23:49:01 -0400
|
||||
Subject: [PATCH] Villager Restocks API
|
||||
@ -46,5 +46,5 @@ index fe726e7884..a8384081c0 100644
|
||||
public boolean sleep(Location location) {
|
||||
Preconditions.checkArgument(location != null, "Location cannot be null");
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,11 +1,11 @@
|
||||
From dcd786960faeeeea7fa3106571ac2e20aae1cf0a Mon Sep 17 00:00:00 2001
|
||||
From ff054938e2ca3779c9f1aed3717015c120dcdf5c Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 2 May 2020 03:09:46 -0400
|
||||
Subject: [PATCH] Validate PickItem Packet and kick for invalid
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
index 376f7f8f0b..a33289749c 100644
|
||||
index a180df220e..02bda8bee4 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
@@ -691,7 +691,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
||||
@ -25,5 +25,5 @@ index 376f7f8f0b..a33289749c 100644
|
||||
this.player.playerConnection.sendPacket(new PacketPlayOutSetSlot(-2, packetplayinpickitem.b(), this.player.inventory.getItem(packetplayinpickitem.b())));
|
||||
this.player.playerConnection.sendPacket(new PacketPlayOutHeldItemSlot(this.player.inventory.itemInHandIndex));
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From fb892b50f8ea61b6b898cc2d86769fe3bbfa2fb8 Mon Sep 17 00:00:00 2001
|
||||
From 3eb7a15b09cbee5e58e2647927e24392ac898799 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Vainomaa <mikroskeem@mikroskeem.eu>
|
||||
Date: Fri, 1 May 2020 17:39:26 +0300
|
||||
Subject: [PATCH] Expose game version
|
||||
@ -23,5 +23,5 @@ index f49193d9d7..1647c09756 100644
|
||||
public List<CraftPlayer> getOnlinePlayers() {
|
||||
return this.playerView;
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1e7d68cf958496b9e67872eeb5cc01364bd15339 Mon Sep 17 00:00:00 2001
|
||||
From cd9083a28d860b7f0fa2d5b3cc59d88f45d474fc Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 3 May 2020 14:25:55 -0400
|
||||
Subject: [PATCH] Sync position on teleportation
|
||||
@ -33,5 +33,5 @@ index 02bda8bee4..a188d9f3b6 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From fc80e192e73525b7ac69affa6b4c586fa039cef4 Mon Sep 17 00:00:00 2001
|
||||
From 7ca4e13c3ecf2b275f2b4fc7b399a65f26f506a6 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sun, 3 May 2020 22:35:09 -0400
|
||||
Subject: [PATCH] Optimize Voxel Shape Merging
|
||||
@ -126,5 +126,5 @@ index 08c83c62df..bb3a1a97df 100644
|
||||
|
||||
public interface a {
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 8fdbc0b6bb68ba8e6f6ce8035c9936e3922808f0 Mon Sep 17 00:00:00 2001
|
||||
From d435cc4e885c3c821ef1a3f703e56729cd9e436f Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 4 May 2020 00:38:13 -0400
|
||||
Subject: [PATCH] Cleanup Region Files Direct Memory on close
|
||||
@ -83,5 +83,5 @@ index df728e2c0a..20927d55c6 100644
|
||||
private void c() throws IOException {
|
||||
int i = (int) this.dataFile.size();
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 5932b5ecbc0822f05b671372c6e58ac8e14d5bb4 Mon Sep 17 00:00:00 2001
|
||||
From 4f2c03a5f5be32ff4e04312b84d1db70efab691a Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 4 May 2020 01:08:56 -0400
|
||||
Subject: [PATCH] Set cap on JDK per-thread native byte buffer cache
|
||||
@ -29,5 +29,5 @@ index 093dbeae27..93340e9470 100644
|
||||
{
|
||||
acceptsAll(asList("?", "help"), "Show the help");
|
||||
--
|
||||
2.26.2
|
||||
2.26.0
|
||||
|
Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen
In neuem Issue referenzieren
Einen Benutzer sperren