diff --git a/Spigot-API-Patches/0202-Add-Mob-Goal-API.patch b/Spigot-API-Patches/0203-Add-Mob-Goal-API.patch similarity index 99% rename from Spigot-API-Patches/0202-Add-Mob-Goal-API.patch rename to Spigot-API-Patches/0203-Add-Mob-Goal-API.patch index 723391ffdc..991e54f0b6 100644 --- a/Spigot-API-Patches/0202-Add-Mob-Goal-API.patch +++ b/Spigot-API-Patches/0203-Add-Mob-Goal-API.patch @@ -1,4 +1,4 @@ -From 3837658c3b4d01d6c8ef94bc972a644eb77e222f Mon Sep 17 00:00:00 2001 +From b9fa8d98289a044c4bc231ef79435e27d829a5de Mon Sep 17 00:00:00 2001 From: MiniDigger 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 diff --git a/Spigot-Server-Patches/0004-MC-Utils.patch b/Spigot-Server-Patches/0004-MC-Utils.patch index 1c007766c1..609be25eab 100644 --- a/Spigot-Server-Patches/0004-MC-Utils.patch +++ b/Spigot-Server-Patches/0004-MC-Utils.patch @@ -1,4 +1,4 @@ -From b2436021374f61062a581239cc1a3500edd54bb4 Mon Sep 17 00:00:00 2001 +From e84c20166fcaa037639b0f5205807b1af111257f Mon Sep 17 00:00:00 2001 From: Aikar 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 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 { ++ ++ public static final PooledObjects POOLED_MUTABLE_INTEGERS = new PooledObjects<>(new PooledObjectHandler() { ++ @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 handler; ++ private final int maxPoolSize; ++ private final int expectingThreads; ++ ++ private final IsolatedPool mainPool; ++ // use these under contention ++ private final IsolatedPool[] contendedPools; ++ ++ public PooledObjects(final PooledObjectHandler 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[] 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 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 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 { ++ ++ /** ++ * Must return a non-null object ++ */ ++ E createNew(); ++ ++ void onAcquire(final E value); ++ ++ void onRelease(final E value); ++ } ++ ++ protected static class IsolatedPool { ++ ++ protected final PooledObjectHandler handler; ++ ++ // We use arraydeque as it doesn't create garbage per element... ++ protected final ArrayDeque pool; ++ protected final int maxPoolSize; ++ ++ protected final ReentrantLock lock = new ReentrantLock(); ++ ++ public IsolatedPool(final PooledObjectHandler 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 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 iasynctaskhandler, ILightAccess ilightaccess, ChunkGenerator chunkgenerator, WorldLoadListener worldloadlistener, Supplier 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, PlayerChunk.Failure>> a(ChunkCoordIntPair chunkcoordintpair, int i, IntFunction intfunction) { + List>> 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 diff --git a/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch b/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch index fc8a2a5d0d..cedd956482 100644 --- a/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch +++ b/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch @@ -1,4 +1,4 @@ -From 501904519947a10ca310e0db3b92828950e3a027 Mon Sep 17 00:00:00 2001 +From e969742b4a74d232455d49d51ce3ac8c0c915e05 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch b/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch index b4e27052ba..7919e14924 100644 --- a/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch +++ b/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch @@ -1,4 +1,4 @@ -From ecf43fc4577369da779f08aa2b5c9a3ba2a248cb Mon Sep 17 00:00:00 2001 +From 8c353e9c2c1388d62b4b73c47d18c629f4a5682b Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0009-Timings-v2.patch b/Spigot-Server-Patches/0009-Timings-v2.patch index b81d1267c7..41f7d09f0b 100644 --- a/Spigot-Server-Patches/0009-Timings-v2.patch +++ b/Spigot-Server-Patches/0009-Timings-v2.patch @@ -1,4 +1,4 @@ -From f0fe55e3dd96e50f2eb4a56ca5a601d8e0c89a6a Mon Sep 17 00:00:00 2001 +From 3ebd9a34ff56a4ff3f3ff262e9f6ca4059e9363e Mon Sep 17 00:00:00 2001 From: Aikar 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> 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> 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 diff --git a/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch b/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch index 65b021d852..5196fc95e3 100644 --- a/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch +++ b/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch @@ -1,14 +1,14 @@ -From 7d9ffa2cd54f434e0c356777203796fb62c3a137 Mon Sep 17 00:00:00 2001 +From f2cfab87a7d62010dd7e2d7c9e23d72e302d1bf6 Mon Sep 17 00:00:00 2001 From: Byteflux 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 diff --git a/Spigot-Server-Patches/0025-Entity-Origin-API.patch b/Spigot-Server-Patches/0025-Entity-Origin-API.patch index a23c854d61..84f8841512 100644 --- a/Spigot-Server-Patches/0025-Entity-Origin-API.patch +++ b/Spigot-Server-Patches/0025-Entity-Origin-API.patch @@ -1,4 +1,4 @@ -From d02bc60a955773b5851092ecfc25439317cc4fdb Mon Sep 17 00:00:00 2001 +From 9294ce1bcbd8799c239b4016a04637ef70470340 Mon Sep 17 00:00:00 2001 From: Byteflux 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 diff --git a/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch b/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch index d8c5f259cb..bf37e9f5c6 100644 --- a/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch +++ b/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch index 3413fb8df8..c9ef8ff3e1 100644 --- a/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0072-Optimize-isValidLocation-getType-and-getBlockData-fo.patch b/Spigot-Server-Patches/0072-Optimize-isValidLocation-getType-and-getBlockData-fo.patch index ad285e3437..c3558ce59b 100644 --- a/Spigot-Server-Patches/0072-Optimize-isValidLocation-getType-and-getBlockData-fo.patch +++ b/Spigot-Server-Patches/0072-Optimize-isValidLocation-getType-and-getBlockData-fo.patch @@ -1,4 +1,4 @@ -From 1e4ea523df36a1139d0fd88aefe3e9848c908748 Mon Sep 17 00:00:00 2001 +From f986e8a7704f1cd279cfac3c7abad36b88d111ce Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0075-Entity-AddTo-RemoveFrom-World-Events.patch b/Spigot-Server-Patches/0075-Entity-AddTo-RemoveFrom-World-Events.patch index 68d7dac476..b4e33c6bdf 100644 --- a/Spigot-Server-Patches/0075-Entity-AddTo-RemoveFrom-World-Events.patch +++ b/Spigot-Server-Patches/0075-Entity-AddTo-RemoveFrom-World-Events.patch @@ -1,14 +1,14 @@ -From 8329fdefafcca151133f8a8aa87fc35172878fa3 Mon Sep 17 00:00:00 2001 +From 80a2bc8af10d734cb39781889e1caa58099ea2c7 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch b/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch index 70b8795bd2..b634c685cb 100644 --- a/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch +++ b/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch @@ -1,4 +1,4 @@ -From b106a1543eb979b48adef29d0218e74cd85d9e61 Mon Sep 17 00:00:00 2001 +From c2263eb09808a1b09eb8c356ddb3779a397ad21a Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0087-Remove-unused-World-Tile-Entity-List.patch b/Spigot-Server-Patches/0087-Remove-unused-World-Tile-Entity-List.patch index 3b0bd6dfd3..6d2d39eb2b 100644 --- a/Spigot-Server-Patches/0087-Remove-unused-World-Tile-Entity-List.patch +++ b/Spigot-Server-Patches/0087-Remove-unused-World-Tile-Entity-List.patch @@ -1,4 +1,4 @@ -From a97b7b1b9b1c5929aaffda2925dcc329b4526c18 Mon Sep 17 00:00:00 2001 +From a4f8c250978dfb502b0fb75ef5b15bf9481f0e9a Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0097-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch b/Spigot-Server-Patches/0097-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch index f4e00a8fab..cfc12e9265 100644 --- a/Spigot-Server-Patches/0097-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch +++ b/Spigot-Server-Patches/0097-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch @@ -1,4 +1,4 @@ -From 8fc2a9f39c35e1b30d5cee04f39002520ba81186 Mon Sep 17 00:00:00 2001 +From 2915b6164a366517b15f6ba175b76e949c3c19b1 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0107-Fix-Double-World-Add-issues.patch b/Spigot-Server-Patches/0107-Fix-Double-World-Add-issues.patch index 1ee083c527..cd14a64cf2 100644 --- a/Spigot-Server-Patches/0107-Fix-Double-World-Add-issues.patch +++ b/Spigot-Server-Patches/0107-Fix-Double-World-Add-issues.patch @@ -1,4 +1,4 @@ -From 0b2ec2fe2555ad78369bf25ddb552d6a3f03edbc Mon Sep 17 00:00:00 2001 +From c645776c533b1d5a34749e7882d577dfbe87d117 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0118-Option-to-remove-corrupt-tile-entities.patch b/Spigot-Server-Patches/0118-Option-to-remove-corrupt-tile-entities.patch index c4de023269..45eb0f5831 100644 --- a/Spigot-Server-Patches/0118-Option-to-remove-corrupt-tile-entities.patch +++ b/Spigot-Server-Patches/0118-Option-to-remove-corrupt-tile-entities.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0143-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch b/Spigot-Server-Patches/0143-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch index 49fce774e5..768ca1399a 100644 --- a/Spigot-Server-Patches/0143-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch +++ b/Spigot-Server-Patches/0143-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch @@ -1,14 +1,14 @@ -From 2e0c912fa929d7d6fffe7cc9da9c1027eff4ac03 Mon Sep 17 00:00:00 2001 +From a87b8cf80a36016fbd3dcd7bec2fd18a97dfb30d Mon Sep 17 00:00:00 2001 From: Brokkonaut 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 diff --git a/Spigot-Server-Patches/0191-PlayerNaturallySpawnCreaturesEvent.patch b/Spigot-Server-Patches/0191-PlayerNaturallySpawnCreaturesEvent.patch index 1415af27c4..0ef5cfa913 100644 --- a/Spigot-Server-Patches/0191-PlayerNaturallySpawnCreaturesEvent.patch +++ b/Spigot-Server-Patches/0191-PlayerNaturallySpawnCreaturesEvent.patch @@ -1,4 +1,4 @@ -From 7c4c7ea9a0240c869dbae6cc55f56a13cfd58cf9 Mon Sep 17 00:00:00 2001 +From ca9958e43d57e7f1c3d78791a939fe61a3e1ac71 Mon Sep 17 00:00:00 2001 From: Aikar 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 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 diff --git a/Spigot-Server-Patches/0218-Expand-World.spawnParticle-API-and-add-Builder.patch b/Spigot-Server-Patches/0218-Expand-World.spawnParticle-API-and-add-Builder.patch index 4a0f4dcb53..834ff9a43e 100644 --- a/Spigot-Server-Patches/0218-Expand-World.spawnParticle-API-and-add-Builder.patch +++ b/Spigot-Server-Patches/0218-Expand-World.spawnParticle-API-and-add-Builder.patch @@ -1,4 +1,4 @@ -From b01cce47551a1f739f0db7b9b033b19f653bd07e Mon Sep 17 00:00:00 2001 +From 5135255c143e00b805f7c143b41f08faa889f1b8 Mon Sep 17 00:00:00 2001 From: Aikar 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 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 diff --git a/Spigot-Server-Patches/0240-InventoryCloseEvent-Reason-API.patch b/Spigot-Server-Patches/0240-InventoryCloseEvent-Reason-API.patch index a25368f23c..75cdf5021a 100644 --- a/Spigot-Server-Patches/0240-InventoryCloseEvent-Reason-API.patch +++ b/Spigot-Server-Patches/0240-InventoryCloseEvent-Reason-API.patch @@ -1,4 +1,4 @@ -From dbee3dc8c2471fbf5ea6d138d1a0b213e9dc6d0c Mon Sep 17 00:00:00 2001 +From 7129c46b81098d87e81839acba7e950d4df11b1c Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0245-Re-add-vanilla-entity-warnings-for-duplicates.patch b/Spigot-Server-Patches/0245-Re-add-vanilla-entity-warnings-for-duplicates.patch index 11bf149f5d..16ba7f9fea 100644 --- a/Spigot-Server-Patches/0245-Re-add-vanilla-entity-warnings-for-duplicates.patch +++ b/Spigot-Server-Patches/0245-Re-add-vanilla-entity-warnings-for-duplicates.patch @@ -1,4 +1,4 @@ -From 8c896a05ac40b3c7b64c3f40f28564fca68978c0 Mon Sep 17 00:00:00 2001 +From dc900155f5ba16d321383bb5a0471fdcace51771 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0249-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch b/Spigot-Server-Patches/0249-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch index 4fd41a165b..d8c664ad8b 100644 --- a/Spigot-Server-Patches/0249-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch +++ b/Spigot-Server-Patches/0249-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch @@ -1,4 +1,4 @@ -From caee0bbdf5a85c3e27b138db956bd79b9e6cc1ce Mon Sep 17 00:00:00 2001 +From 6233a75f58064fdd417c5a90bc98a4d4f3f156ef Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0252-Speedup-BlockPos-by-fixing-inlining.patch b/Spigot-Server-Patches/0252-Speedup-BlockPos-by-fixing-inlining.patch index 63aa6d325d..d3b77c0271 100644 --- a/Spigot-Server-Patches/0252-Speedup-BlockPos-by-fixing-inlining.patch +++ b/Spigot-Server-Patches/0252-Speedup-BlockPos-by-fixing-inlining.patch @@ -1,4 +1,4 @@ -From 9efee604d673435c8097e6cf3d4f6df62b2f06b5 Mon Sep 17 00:00:00 2001 +From 861f8567f99a27430b0a35965cc0d5a7bc0fc382 Mon Sep 17 00:00:00 2001 From: Techcable 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 diff --git a/Spigot-Server-Patches/0256-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch b/Spigot-Server-Patches/0256-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch index 2b243abf23..942673d896 100644 --- a/Spigot-Server-Patches/0256-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch +++ b/Spigot-Server-Patches/0256-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch @@ -1,4 +1,4 @@ -From 3af39fc278241d8b09966f6443402ebbe999a09c Mon Sep 17 00:00:00 2001 +From a82657f16a14fa3516aa95a47b42f9457e7b77e4 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0257-Add-some-Debug-to-Chunk-Entity-slices.patch b/Spigot-Server-Patches/0257-Add-some-Debug-to-Chunk-Entity-slices.patch index aaad8f47cd..20a9856f12 100644 --- a/Spigot-Server-Patches/0257-Add-some-Debug-to-Chunk-Entity-slices.patch +++ b/Spigot-Server-Patches/0257-Add-some-Debug-to-Chunk-Entity-slices.patch @@ -1,4 +1,4 @@ -From f93a941f330b4f7cfeab3b724caf43790160a2b5 Mon Sep 17 00:00:00 2001 +From 2acf2cef0762f0d88ae7e8c5ef1b17617bec440f Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0260-Prevent-Saving-Bad-entities-to-chunks.patch b/Spigot-Server-Patches/0260-Prevent-Saving-Bad-entities-to-chunks.patch index 5c216ba302..326522e9f0 100644 --- a/Spigot-Server-Patches/0260-Prevent-Saving-Bad-entities-to-chunks.patch +++ b/Spigot-Server-Patches/0260-Prevent-Saving-Bad-entities-to-chunks.patch @@ -1,4 +1,4 @@ -From eb17a9e3291d12df5f3a007c85644bcdbdaca564 Mon Sep 17 00:00:00 2001 +From 996595a695e7097c24e2bd7a4b1f9594ecf1b2bf Mon Sep 17 00:00:00 2001 From: Aikar 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 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 diff --git a/Spigot-Server-Patches/0262-Ignore-Dead-Entities-in-entityList-iteration.patch b/Spigot-Server-Patches/0262-Ignore-Dead-Entities-in-entityList-iteration.patch index f12105fd36..383b910b8e 100644 --- a/Spigot-Server-Patches/0262-Ignore-Dead-Entities-in-entityList-iteration.patch +++ b/Spigot-Server-Patches/0262-Ignore-Dead-Entities-in-entityList-iteration.patch @@ -1,4 +1,4 @@ -From a584b96dd649886f03c6e96b89433c236a277c6e Mon Sep 17 00:00:00 2001 +From 8a2267af66d0af048717527cfeaf8af8f031e25c Mon Sep 17 00:00:00 2001 From: Aikar 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> 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 diff --git a/Spigot-Server-Patches/0277-Send-nearby-packets-from-world-player-list-not-serve.patch b/Spigot-Server-Patches/0277-Send-nearby-packets-from-world-player-list-not-serve.patch index 081adcc06c..1865c32952 100644 --- a/Spigot-Server-Patches/0277-Send-nearby-packets-from-world-player-list-not-serve.patch +++ b/Spigot-Server-Patches/0277-Send-nearby-packets-from-world-player-list-not-serve.patch @@ -1,4 +1,4 @@ -From 2e6731ef91c1c7aedbd85382dc6dca59fe98f21b Mon Sep 17 00:00:00 2001 +From 71d382d6807a653136966f31db2c34266278e24f Mon Sep 17 00:00:00 2001 From: Mystiflow 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> gamerules; -- -2.26.2 +2.26.0 diff --git a/Spigot-Server-Patches/0312-Limit-lightning-strike-effect-distance.patch b/Spigot-Server-Patches/0312-Limit-lightning-strike-effect-distance.patch index 08833da572..bf4c3e6bf1 100644 --- a/Spigot-Server-Patches/0312-Limit-lightning-strike-effect-distance.patch +++ b/Spigot-Server-Patches/0312-Limit-lightning-strike-effect-distance.patch @@ -1,4 +1,4 @@ -From 264d561286c4bbb3bbff2fb8aba17192c2655275 Mon Sep 17 00:00:00 2001 +From 375dc89e8d706626d0409772f1dd7f6de2c63752 Mon Sep 17 00:00:00 2001 From: Trigary 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 diff --git a/Spigot-Server-Patches/0354-Entity-getEntitySpawnReason.patch b/Spigot-Server-Patches/0354-Entity-getEntitySpawnReason.patch index 3c31d664b9..3aa105d21d 100644 --- a/Spigot-Server-Patches/0354-Entity-getEntitySpawnReason.patch +++ b/Spigot-Server-Patches/0354-Entity-getEntitySpawnReason.patch @@ -1,4 +1,4 @@ -From 2b99d6a27557385cf4700c9c1b906fa284f86250 Mon Sep 17 00:00:00 2001 +From 2a916333230f6ec329d7edc1c0e3fa63d874739a Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0365-Per-Player-View-Distance-API-placeholders.patch b/Spigot-Server-Patches/0365-Per-Player-View-Distance-API-placeholders.patch index e9b4459c55..431c6aaac9 100644 --- a/Spigot-Server-Patches/0365-Per-Player-View-Distance-API-placeholders.patch +++ b/Spigot-Server-Patches/0365-Per-Player-View-Distance-API-placeholders.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0369-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch b/Spigot-Server-Patches/0369-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch index 28ad196697..e9a48e8b2d 100644 --- a/Spigot-Server-Patches/0369-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch +++ b/Spigot-Server-Patches/0369-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch @@ -1,4 +1,4 @@ -From b8287f99f5ee5e93683367ffa43fdd4fe1e48f1f Mon Sep 17 00:00:00 2001 +From 95e5aec7a2016027b8d2e8bbd4c4e3f0bf34ecfa Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0370-Duplicate-UUID-Resolve-Option.patch b/Spigot-Server-Patches/0370-Duplicate-UUID-Resolve-Option.patch index a578fd2994..515ab86632 100644 --- a/Spigot-Server-Patches/0370-Duplicate-UUID-Resolve-Option.patch +++ b/Spigot-Server-Patches/0370-Duplicate-UUID-Resolve-Option.patch @@ -1,4 +1,4 @@ -From abb8e6809baf86c7be7154fe356b11a663413686 Mon Sep 17 00:00:00 2001 +From 97b023aeeb726ea74a5d6b68d2caf5ec322c3867 Mon Sep 17 00:00:00 2001 From: Aikar 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, 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 diff --git a/Spigot-Server-Patches/0372-Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/0372-Configurable-Keep-Spawn-Loaded-range-per-world.patch index e3698dfe3b..79a7acc26d 100644 --- a/Spigot-Server-Patches/0372-Configurable-Keep-Spawn-Loaded-range-per-world.patch +++ b/Spigot-Server-Patches/0372-Configurable-Keep-Spawn-Loaded-range-per-world.patch @@ -1,4 +1,4 @@ -From f71662abfa6f631026e2a31a6fe81da159411d4a Mon Sep 17 00:00:00 2001 +From cc2a6afe5cb4a37d3a57b7afaa5754485474a05d Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0378-incremental-chunk-saving.patch b/Spigot-Server-Patches/0378-incremental-chunk-saving.patch index 9618cc1a2e..3c5aa168fa 100644 --- a/Spigot-Server-Patches/0378-incremental-chunk-saving.patch +++ b/Spigot-Server-Patches/0378-incremental-chunk-saving.patch @@ -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 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 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 diff --git a/Spigot-Server-Patches/0380-Fix-World-isChunkGenerated-calls.patch b/Spigot-Server-Patches/0380-Fix-World-isChunkGenerated-calls.patch index 9f35c17089..9c5eb3cc6d 100644 --- a/Spigot-Server-Patches/0380-Fix-World-isChunkGenerated-calls.patch +++ b/Spigot-Server-Patches/0380-Fix-World-isChunkGenerated-calls.patch @@ -1,4 +1,4 @@ -From df1fb149e4665163023f0f4dc676d443e521e296 Mon Sep 17 00:00:00 2001 +From 75b996c4fd3a28b61da26277680b89205538715d Mon Sep 17 00:00:00 2001 From: Spottedleaf 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> 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 diff --git a/Spigot-Server-Patches/0383-Use-ChunkStatus-cache-when-saving-protochunks.patch b/Spigot-Server-Patches/0383-Use-ChunkStatus-cache-when-saving-protochunks.patch index e61e84aaad..143ec2d770 100644 --- a/Spigot-Server-Patches/0383-Use-ChunkStatus-cache-when-saving-protochunks.patch +++ b/Spigot-Server-Patches/0383-Use-ChunkStatus-cache-when-saving-protochunks.patch @@ -1,4 +1,4 @@ -From e53e308d6a701526060a32bbf18768a917f308f8 Mon Sep 17 00:00:00 2001 +From 49a348381d91ac93ec0d3b43bfdf5751ba9e0f31 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0384-Anti-Xray.patch b/Spigot-Server-Patches/0384-Anti-Xray.patch index e553b941eb..0c1f4f1d78 100644 --- a/Spigot-Server-Patches/0384-Anti-Xray.patch +++ b/Spigot-Server-Patches/0384-Anti-Xray.patch @@ -1,4 +1,4 @@ -From 811e3b68dac83939ebea390ad4c6073380fa6753 Mon Sep 17 00:00:00 2001 +From deb49130a0248ad17fd28a1963c89e984fcdb72a Mon Sep 17 00:00:00 2001 From: stonar96 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 diff --git a/Spigot-Server-Patches/0387-Mark-entities-as-being-ticked-when-notifying-navigat.patch b/Spigot-Server-Patches/0387-Mark-entities-as-being-ticked-when-notifying-navigat.patch index f83ae54bfa..66ee903c40 100644 --- a/Spigot-Server-Patches/0387-Mark-entities-as-being-ticked-when-notifying-navigat.patch +++ b/Spigot-Server-Patches/0387-Mark-entities-as-being-ticked-when-notifying-navigat.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0389-Avoid-hopper-searches-if-there-are-no-items.patch b/Spigot-Server-Patches/0389-Avoid-hopper-searches-if-there-are-no-items.patch index 268ea398fc..ba1cf8f6bd 100644 --- a/Spigot-Server-Patches/0389-Avoid-hopper-searches-if-there-are-no-items.patch +++ b/Spigot-Server-Patches/0389-Avoid-hopper-searches-if-there-are-no-items.patch @@ -1,4 +1,4 @@ -From 386dbf3369631411cc400ec7852ae290d9bcd655 Mon Sep 17 00:00:00 2001 +From e60938cf3ba63d6a51554c36f6116512c7c53863 Mon Sep 17 00:00:00 2001 From: CullanP 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 ticklist, TickList ticklist1, long i, @Nullable ChunkSection[] achunksection, @Nullable Consumer 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 diff --git a/Spigot-Server-Patches/0390-Asynchronous-chunk-IO-and-loading.patch b/Spigot-Server-Patches/0390-Asynchronous-chunk-IO-and-loading.patch index 28a50a1a63..7a8d7a141f 100644 --- a/Spigot-Server-Patches/0390-Asynchronous-chunk-IO-and-loading.patch +++ b/Spigot-Server-Patches/0390-Asynchronous-chunk-IO-and-loading.patch @@ -1,4 +1,4 @@ -From 748db0d90c3cc343b0dadb663f4f6ccad2b6161a Mon Sep 17 00:00:00 2001 +From b7931612f141bfce24d6020ff0432b868b3e9852 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 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 completablefuture = playerchunk.getChunkSave(); Consumer 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> 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 diff --git a/Spigot-Server-Patches/0396-implement-optional-per-player-mob-spawns.patch b/Spigot-Server-Patches/0396-implement-optional-per-player-mob-spawns.patch index 2c52c1ab2f..498b39840d 100644 --- a/Spigot-Server-Patches/0396-implement-optional-per-player-mob-spawns.patch +++ b/Spigot-Server-Patches/0396-implement-optional-per-player-mob-spawns.patch @@ -1,4 +1,4 @@ -From 286402aba0b28823b89468bffb9e650c76311313 Mon Sep 17 00:00:00 2001 +From 8dae2149d4060a1a6797d7d6ce4971f97fa25612 Mon Sep 17 00:00:00 2001 From: kickash32 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 diff --git a/Spigot-Server-Patches/0426-Tracking-Range-Improvements.patch b/Spigot-Server-Patches/0426-Tracking-Range-Improvements.patch index cfccb86367..a4a7f4d950 100644 --- a/Spigot-Server-Patches/0426-Tracking-Range-Improvements.patch +++ b/Spigot-Server-Patches/0426-Tracking-Range-Improvements.patch @@ -1,4 +1,4 @@ -From 053029c773639ce909274257536171299e07e9bc Mon Sep 17 00:00:00 2001 +From af85458ed4090ab13771f6e762dea488fe58e236 Mon Sep 17 00:00:00 2001 From: kickash32 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 diff --git a/Spigot-Server-Patches/0435-Optimise-random-block-ticking.patch b/Spigot-Server-Patches/0435-Optimise-random-block-ticking.patch index d26b618c2a..5f8484e58c 100644 --- a/Spigot-Server-Patches/0435-Optimise-random-block-ticking.patch +++ b/Spigot-Server-Patches/0435-Optimise-random-block-ticking.patch @@ -1,4 +1,4 @@ -From 18fb4717649f3e45bf2e92c2498acef2b185cff2 Mon Sep 17 00:00:00 2001 +From caeded93e5038666588e0e7d377325a086b5ec11 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0445-Optimise-Chunk-getFluid.patch b/Spigot-Server-Patches/0445-Optimise-Chunk-getFluid.patch index 368ee81720..7841f45a48 100644 --- a/Spigot-Server-Patches/0445-Optimise-Chunk-getFluid.patch +++ b/Spigot-Server-Patches/0445-Optimise-Chunk-getFluid.patch @@ -1,4 +1,4 @@ -From f0bf987e53c7aa744047a0cd70b3b506897a7998 Mon Sep 17 00:00:00 2001 +From 34b65530d5c531d836075966000e6c9dfafb2877 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0448-Pillager-patrol-spawn-settings-and-per-player-option.patch b/Spigot-Server-Patches/0447-Pillager-patrol-spawn-settings-and-per-player-option.patch similarity index 98% rename from Spigot-Server-Patches/0448-Pillager-patrol-spawn-settings-and-per-player-option.patch rename to Spigot-Server-Patches/0447-Pillager-patrol-spawn-settings-and-per-player-option.patch index 20e18acbf0..cc7c6fb537 100644 --- a/Spigot-Server-Patches/0448-Pillager-patrol-spawn-settings-and-per-player-option.patch +++ b/Spigot-Server-Patches/0447-Pillager-patrol-spawn-settings-and-per-player-option.patch @@ -1,4 +1,4 @@ -From af50e068e7f0dfcf365d1ce5f047c4945ef86ea0 Mon Sep 17 00:00:00 2001 +From bdec2cdf5fdacc359764dd666f6e45ffe8056fd3 Mon Sep 17 00:00:00 2001 From: Phoenix616 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 diff --git a/Spigot-Server-Patches/0447-Reduce-entity-tracker-updates-on-move.patch b/Spigot-Server-Patches/0447-Reduce-entity-tracker-updates-on-move.patch deleted file mode 100644 index ff7f3fd4f8..0000000000 --- a/Spigot-Server-Patches/0447-Reduce-entity-tracker-updates-on-move.patch +++ /dev/null @@ -1,213 +0,0 @@ -From 8a760283129e8313839f6fa60e7275446201e46a Mon Sep 17 00:00:00 2001 -From: froobynooby -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 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> playerTrackedEntities = new Int2ObjectOpenHashMap<>(); -+ private final Int2ObjectMap> playerTrackedEntitiesRemoveQueue = new Int2ObjectOpenHashMap<>(); -+ -+ void flushRemoveQueue(EntityPlayer entityplayer) { -+ Queue removeQueue = getPlayerTrackedEntityMapRemoveQueue(entityplayer.getId()); -+ Int2ObjectMap entityMap = getPlayerTrackedEntityMap(entityplayer.getId()); -+ for (Integer id = removeQueue.poll(); id != null; id = removeQueue.poll()) { -+ entityMap.remove(id); -+ } -+ } -+ -+ void flushRemoveQueues() { -+ for (Int2ObjectMap.Entry> entry : playerTrackedEntitiesRemoveQueue.int2ObjectEntrySet()) { -+ Int2ObjectMap entityMap = getPlayerTrackedEntityMap(entry.getKey()); -+ Queue removeQueue = entry.getValue(); -+ for (Integer id = removeQueue.poll(); id != null; id = removeQueue.poll()) { -+ entityMap.remove(id); -+ } -+ } -+ } -+ -+ Int2ObjectMap getPlayerTrackedEntityMap(int id) { -+ return playerTrackedEntities.computeIfAbsent(id, i -> new Int2ObjectOpenHashMap<>()); -+ } -+ -+ Queue 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 iasynctaskhandler, ILightAccess ilightaccess, ChunkGenerator chunkgenerator, WorldLoadListener worldloadlistener, Supplier 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 - diff --git a/Spigot-Server-Patches/0449-Ensure-Entity-is-never-double-registered.patch b/Spigot-Server-Patches/0448-Ensure-Entity-is-never-double-registered.patch similarity index 93% rename from Spigot-Server-Patches/0449-Ensure-Entity-is-never-double-registered.patch rename to Spigot-Server-Patches/0448-Ensure-Entity-is-never-double-registered.patch index b2e57c2909..5d6463d66b 100644 --- a/Spigot-Server-Patches/0449-Ensure-Entity-is-never-double-registered.patch +++ b/Spigot-Server-Patches/0448-Ensure-Entity-is-never-double-registered.patch @@ -1,4 +1,4 @@ -From ff553a44163ebec14ee14149ece19c35bcbe6bca Mon Sep 17 00:00:00 2001 +From 5e261d2773e625fa5bffbd4b7ae848b40e6b8972 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0450-Fix-unregistering-entities-from-unloading-chunks.patch b/Spigot-Server-Patches/0449-Fix-unregistering-entities-from-unloading-chunks.patch similarity index 89% rename from Spigot-Server-Patches/0450-Fix-unregistering-entities-from-unloading-chunks.patch rename to Spigot-Server-Patches/0449-Fix-unregistering-entities-from-unloading-chunks.patch index c220601421..9770a4ee05 100644 --- a/Spigot-Server-Patches/0450-Fix-unregistering-entities-from-unloading-chunks.patch +++ b/Spigot-Server-Patches/0449-Fix-unregistering-entities-from-unloading-chunks.patch @@ -1,4 +1,4 @@ -From 233dec6facb9b9c1c11989bf62e504303c9a4d56 Mon Sep 17 00:00:00 2001 +From 80f240c7853f1795c5e7959e3daec3e1af7faee3 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0451-Remote-Connections-shouldn-t-hold-up-shutdown.patch b/Spigot-Server-Patches/0450-Remote-Connections-shouldn-t-hold-up-shutdown.patch similarity index 93% rename from Spigot-Server-Patches/0451-Remote-Connections-shouldn-t-hold-up-shutdown.patch rename to Spigot-Server-Patches/0450-Remote-Connections-shouldn-t-hold-up-shutdown.patch index 00f4cf8387..d4161e0254 100644 --- a/Spigot-Server-Patches/0451-Remote-Connections-shouldn-t-hold-up-shutdown.patch +++ b/Spigot-Server-Patches/0450-Remote-Connections-shouldn-t-hold-up-shutdown.patch @@ -1,4 +1,4 @@ -From 23ff45ad57869e36aa344f11b7c7f5ad6b028289 Mon Sep 17 00:00:00 2001 +From 38e70a8701f6abb26dcc1681a4b6523576503d4a Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0452-Do-not-allow-bees-to-load-chunks-for-beehives.patch b/Spigot-Server-Patches/0451-Do-not-allow-bees-to-load-chunks-for-beehives.patch similarity index 96% rename from Spigot-Server-Patches/0452-Do-not-allow-bees-to-load-chunks-for-beehives.patch rename to Spigot-Server-Patches/0451-Do-not-allow-bees-to-load-chunks-for-beehives.patch index a443ba4cab..436cb119b0 100644 --- a/Spigot-Server-Patches/0452-Do-not-allow-bees-to-load-chunks-for-beehives.patch +++ b/Spigot-Server-Patches/0451-Do-not-allow-bees-to-load-chunks-for-beehives.patch @@ -1,4 +1,4 @@ -From 69d5b79f2d4fb9d153dba0484afc7f4325688594 Mon Sep 17 00:00:00 2001 +From 5ed395f3dacf7c33486ae39e1580132e4b1284c0 Mon Sep 17 00:00:00 2001 From: chickeneer 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 diff --git a/Spigot-Server-Patches/0453-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch b/Spigot-Server-Patches/0452-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch similarity index 88% rename from Spigot-Server-Patches/0453-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch rename to Spigot-Server-Patches/0452-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch index 4f1cb66de9..f924006b03 100644 --- a/Spigot-Server-Patches/0453-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch +++ b/Spigot-Server-Patches/0452-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch @@ -1,4 +1,4 @@ -From 97238d4fbd5f5e6a5da9f051e50751ff70c76dcb Mon Sep 17 00:00:00 2001 +From a04b7ed17e96d5d02e9d14e3d96a5638a148fcd4 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0454-Optimize-Collision-Chunk-lookup-and-avoid-loading-fa.patch b/Spigot-Server-Patches/0453-Optimize-Collision-Chunk-lookup-and-avoid-loading-fa.patch similarity index 96% rename from Spigot-Server-Patches/0454-Optimize-Collision-Chunk-lookup-and-avoid-loading-fa.patch rename to Spigot-Server-Patches/0453-Optimize-Collision-Chunk-lookup-and-avoid-loading-fa.patch index 022025583d..731e236aeb 100644 --- a/Spigot-Server-Patches/0454-Optimize-Collision-Chunk-lookup-and-avoid-loading-fa.patch +++ b/Spigot-Server-Patches/0453-Optimize-Collision-Chunk-lookup-and-avoid-loading-fa.patch @@ -1,4 +1,4 @@ -From ef055b2d308e7f386a101f0aabd78afbb34cdaed Mon Sep 17 00:00:00 2001 +From 102b09f710cfa66c9284bf278763fb30b66cf3a4 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0455-Don-t-tick-dead-players.patch b/Spigot-Server-Patches/0454-Don-t-tick-dead-players.patch similarity index 83% rename from Spigot-Server-Patches/0455-Don-t-tick-dead-players.patch rename to Spigot-Server-Patches/0454-Don-t-tick-dead-players.patch index 0efa0d5f25..2c34f2973f 100644 --- a/Spigot-Server-Patches/0455-Don-t-tick-dead-players.patch +++ b/Spigot-Server-Patches/0454-Don-t-tick-dead-players.patch @@ -1,4 +1,4 @@ -From 30e0809c5100d315a28125aa652910f42ef76fbf Mon Sep 17 00:00:00 2001 +From c0c34e10d92aefb26116f3c7865b54debcd31ba7 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0456-Dead-Player-s-shouldn-t-be-able-to-move.patch b/Spigot-Server-Patches/0455-Dead-Player-s-shouldn-t-be-able-to-move.patch similarity index 92% rename from Spigot-Server-Patches/0456-Dead-Player-s-shouldn-t-be-able-to-move.patch rename to Spigot-Server-Patches/0455-Dead-Player-s-shouldn-t-be-able-to-move.patch index d8495d1c03..a1645a3874 100644 --- a/Spigot-Server-Patches/0456-Dead-Player-s-shouldn-t-be-able-to-move.patch +++ b/Spigot-Server-Patches/0455-Dead-Player-s-shouldn-t-be-able-to-move.patch @@ -1,4 +1,4 @@ -From 5c0011d7d238914c4a29da2f28095f31c7aad451 Mon Sep 17 00:00:00 2001 +From 09137b1fb59822c382267f14ad337c59403bc733 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0457-Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch b/Spigot-Server-Patches/0456-Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch similarity index 96% rename from Spigot-Server-Patches/0457-Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch rename to Spigot-Server-Patches/0456-Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch index 7d5097870a..8e529d92a6 100644 --- a/Spigot-Server-Patches/0457-Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch +++ b/Spigot-Server-Patches/0456-Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch @@ -1,4 +1,4 @@ -From a6fbb1690cd064660bca6797edd6afcaec9e1b19 Mon Sep 17 00:00:00 2001 +From c02c51d21e1c92abe3c71d9f8718bb457b545c93 Mon Sep 17 00:00:00 2001 From: Aikar 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 allChunks = new ArrayList<>(visibleChunks.values()); List 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 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 iasynctaskhandler, ILightAccess ilightaccess, ChunkGenerator chunkgenerator, WorldLoadListener worldloadlistener, Supplier 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 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 diff --git a/Spigot-Server-Patches/0458-Don-t-load-chunks-when-attempting-to-unload-a-chunk.patch b/Spigot-Server-Patches/0457-Don-t-load-chunks-when-attempting-to-unload-a-chunk.patch similarity index 95% rename from Spigot-Server-Patches/0458-Don-t-load-chunks-when-attempting-to-unload-a-chunk.patch rename to Spigot-Server-Patches/0457-Don-t-load-chunks-when-attempting-to-unload-a-chunk.patch index cc8ad6ba15..d7a08de32c 100644 --- a/Spigot-Server-Patches/0458-Don-t-load-chunks-when-attempting-to-unload-a-chunk.patch +++ b/Spigot-Server-Patches/0457-Don-t-load-chunks-when-attempting-to-unload-a-chunk.patch @@ -1,4 +1,4 @@ -From 033758c1aa7ac67619a80cbfb50e858146141638 Mon Sep 17 00:00:00 2001 +From 215f58b96ad22596b69d824ef9252ed9290c7d89 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0459-Increase-Light-Queue-Size.patch b/Spigot-Server-Patches/0458-Increase-Light-Queue-Size.patch similarity index 83% rename from Spigot-Server-Patches/0459-Increase-Light-Queue-Size.patch rename to Spigot-Server-Patches/0458-Increase-Light-Queue-Size.patch index abdf0fab53..7762de6d84 100644 --- a/Spigot-Server-Patches/0459-Increase-Light-Queue-Size.patch +++ b/Spigot-Server-Patches/0458-Increase-Light-Queue-Size.patch @@ -1,4 +1,4 @@ -From b739b47db7bd4f5083b98e6168f265f53c272411 Mon Sep 17 00:00:00 2001 +From 996bb55a72ebbe9ee6543b1e56a721208fa7f7cf Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0460-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch b/Spigot-Server-Patches/0459-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch similarity index 99% rename from Spigot-Server-Patches/0460-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch rename to Spigot-Server-Patches/0459-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch index 26c800b76c..d9ad2fb9f1 100644 --- a/Spigot-Server-Patches/0460-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch +++ b/Spigot-Server-Patches/0459-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch @@ -1,4 +1,4 @@ -From 6b84b25e8e23e57646ef302c918c41028cbb92c1 Mon Sep 17 00:00:00 2001 +From 203692f5bd79a69c2a0306ecf4dc963d58f176ea Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0461-Don-t-move-existing-players-to-world-spawn.patch b/Spigot-Server-Patches/0460-Don-t-move-existing-players-to-world-spawn.patch similarity index 89% rename from Spigot-Server-Patches/0461-Don-t-move-existing-players-to-world-spawn.patch rename to Spigot-Server-Patches/0460-Don-t-move-existing-players-to-world-spawn.patch index a1390a39a6..ee1e0bf583 100644 --- a/Spigot-Server-Patches/0461-Don-t-move-existing-players-to-world-spawn.patch +++ b/Spigot-Server-Patches/0460-Don-t-move-existing-players-to-world-spawn.patch @@ -1,4 +1,4 @@ -From 3761e0c1541d0ec88c01ac318204538ee4c43315 Mon Sep 17 00:00:00 2001 +From 71d1b3f0878eee64b6a71f95471d4b2fdebf0a9d Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0462-Add-tick-times-API-and-mspt-command.patch b/Spigot-Server-Patches/0461-Add-tick-times-API-and-mspt-command.patch similarity index 98% rename from Spigot-Server-Patches/0462-Add-tick-times-API-and-mspt-command.patch rename to Spigot-Server-Patches/0461-Add-tick-times-API-and-mspt-command.patch index e864318568..3d61c29023 100644 --- a/Spigot-Server-Patches/0462-Add-tick-times-API-and-mspt-command.patch +++ b/Spigot-Server-Patches/0461-Add-tick-times-API-and-mspt-command.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0463-Expose-MinecraftServer-isRunning.patch b/Spigot-Server-Patches/0462-Expose-MinecraftServer-isRunning.patch similarity index 92% rename from Spigot-Server-Patches/0463-Expose-MinecraftServer-isRunning.patch rename to Spigot-Server-Patches/0462-Expose-MinecraftServer-isRunning.patch index 1c17772a39..24b4dfa0e6 100644 --- a/Spigot-Server-Patches/0463-Expose-MinecraftServer-isRunning.patch +++ b/Spigot-Server-Patches/0462-Expose-MinecraftServer-isRunning.patch @@ -1,4 +1,4 @@ -From 5e7de5d0f599813f82721752e666d40a95e9a096 Mon Sep 17 00:00:00 2001 +From 3d40e8ed1f266d37d4e3e069fad413bbc7567262 Mon Sep 17 00:00:00 2001 From: JRoy 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 diff --git a/Spigot-Server-Patches/0464-Implement-Chunk-Priority-Urgency-System-for-World-Ge.patch b/Spigot-Server-Patches/0463-Implement-Chunk-Priority-Urgency-System-for-World-Ge.patch similarity index 96% rename from Spigot-Server-Patches/0464-Implement-Chunk-Priority-Urgency-System-for-World-Ge.patch rename to Spigot-Server-Patches/0463-Implement-Chunk-Priority-Urgency-System-for-World-Ge.patch index 486ac40616..e14315b10c 100644 --- a/Spigot-Server-Patches/0464-Implement-Chunk-Priority-Urgency-System-for-World-Ge.patch +++ b/Spigot-Server-Patches/0463-Implement-Chunk-Priority-Urgency-System-for-World-Ge.patch @@ -1,4 +1,4 @@ -From f311f269de4a50bb27e9d23f7f034d1ba5bd67a8 Mon Sep 17 00:00:00 2001 +From 29c2fec0e51219fb6b6cf9ef100c18f6f4ca3d4b Mon Sep 17 00:00:00 2001 From: Aikar 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>> 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> 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 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> 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 diff --git a/Spigot-Server-Patches/0465-Remove-streams-from-Mob-AI-System.patch b/Spigot-Server-Patches/0464-Remove-streams-from-Mob-AI-System.patch similarity index 99% rename from Spigot-Server-Patches/0465-Remove-streams-from-Mob-AI-System.patch rename to Spigot-Server-Patches/0464-Remove-streams-from-Mob-AI-System.patch index 98ea2d6917..d9c10088d1 100644 --- a/Spigot-Server-Patches/0465-Remove-streams-from-Mob-AI-System.patch +++ b/Spigot-Server-Patches/0464-Remove-streams-from-Mob-AI-System.patch @@ -1,4 +1,4 @@ -From 7739f39ca832f6942b113739172d2bf9c948134b Mon Sep 17 00:00:00 2001 +From 06c4a96e4c945a0d731ea66f43b78262e7082482 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0466-Delay-unsafe-actions-until-after-entity-ticking-is-d.patch b/Spigot-Server-Patches/0465-Delay-unsafe-actions-until-after-entity-ticking-is-d.patch similarity index 96% rename from Spigot-Server-Patches/0466-Delay-unsafe-actions-until-after-entity-ticking-is-d.patch rename to Spigot-Server-Patches/0465-Delay-unsafe-actions-until-after-entity-ticking-is-d.patch index 2fabe65e5a..1a3f036d1e 100644 --- a/Spigot-Server-Patches/0466-Delay-unsafe-actions-until-after-entity-ticking-is-d.patch +++ b/Spigot-Server-Patches/0465-Delay-unsafe-actions-until-after-entity-ticking-is-d.patch @@ -1,4 +1,4 @@ -From f6bbc419402487cc17d4788ab2c10812abe20e24 Mon Sep 17 00:00:00 2001 +From 20b3b4c7387b9ba6883a3865aeeda334bea48c1b Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0467-Async-command-map-building.patch b/Spigot-Server-Patches/0466-Async-command-map-building.patch similarity index 96% rename from Spigot-Server-Patches/0467-Async-command-map-building.patch rename to Spigot-Server-Patches/0466-Async-command-map-building.patch index 7404557e1b..ffedb3e4f3 100644 --- a/Spigot-Server-Patches/0467-Async-command-map-building.patch +++ b/Spigot-Server-Patches/0466-Async-command-map-building.patch @@ -1,4 +1,4 @@ -From 889fc731b808cb2bc652eac6fde35ff5d08420a6 Mon Sep 17 00:00:00 2001 +From 9f7453549fbee5fae923580d3c02c0e4cf4cf57e Mon Sep 17 00:00:00 2001 From: Callahan 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 diff --git a/Spigot-Server-Patches/0468-Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch b/Spigot-Server-Patches/0467-Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch similarity index 99% rename from Spigot-Server-Patches/0468-Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch rename to Spigot-Server-Patches/0467-Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch index 30a3738e17..e898eacb15 100644 --- a/Spigot-Server-Patches/0468-Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch +++ b/Spigot-Server-Patches/0467-Forced-Watchdog-Crash-support-and-Improve-Async-Shut.patch @@ -1,4 +1,4 @@ -From f96d0a3291633d69748de86bc0f5df2de0a1ba83 Mon Sep 17 00:00:00 2001 +From b70ba5ecf0012b649a82f6a4d674743ddf9e038c Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0469-Optimize-Pathfinding.patch b/Spigot-Server-Patches/0468-Optimize-Pathfinding.patch similarity index 96% rename from Spigot-Server-Patches/0469-Optimize-Pathfinding.patch rename to Spigot-Server-Patches/0468-Optimize-Pathfinding.patch index b709b7708c..e0c670f199 100644 --- a/Spigot-Server-Patches/0469-Optimize-Pathfinding.patch +++ b/Spigot-Server-Patches/0468-Optimize-Pathfinding.patch @@ -1,4 +1,4 @@ -From d80ac90428fba1fbc926e48af6d01dae922bafb1 Mon Sep 17 00:00:00 2001 +From feb3426b29a8e9110eb293543f82ff0a53cac9b8 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0470-Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch b/Spigot-Server-Patches/0469-Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch similarity index 99% rename from Spigot-Server-Patches/0470-Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch rename to Spigot-Server-Patches/0469-Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch index 8e1eef0b54..2d44e51eb9 100644 --- a/Spigot-Server-Patches/0470-Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch +++ b/Spigot-Server-Patches/0469-Port-20w15a-Villager-AI-optimizations-DROP-1.16.patch @@ -1,4 +1,4 @@ -From 555e1d7a914a914d2fab5912684c5bc79b780456 Mon Sep 17 00:00:00 2001 +From 3d87dd6ae279f1ddb4681e2378b1df05acab9697 Mon Sep 17 00:00:00 2001 From: Callahan 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 diff --git a/Spigot-Server-Patches/0471-Reduce-Either-Optional-allocation.patch b/Spigot-Server-Patches/0470-Reduce-Either-Optional-allocation.patch similarity index 96% rename from Spigot-Server-Patches/0471-Reduce-Either-Optional-allocation.patch rename to Spigot-Server-Patches/0470-Reduce-Either-Optional-allocation.patch index 206ad736e2..c410c9719b 100644 --- a/Spigot-Server-Patches/0471-Reduce-Either-Optional-allocation.patch +++ b/Spigot-Server-Patches/0470-Reduce-Either-Optional-allocation.patch @@ -1,4 +1,4 @@ -From 01b45b03af99ed2ec19a8621acfb28354c6b3cbf Mon Sep 17 00:00:00 2001 +From 7c0d5dcaea2050d0fc03f8c965ae6835e416d973 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0472-Remove-streams-from-PairedQueue.patch b/Spigot-Server-Patches/0471-Remove-streams-from-PairedQueue.patch similarity index 97% rename from Spigot-Server-Patches/0472-Remove-streams-from-PairedQueue.patch rename to Spigot-Server-Patches/0471-Remove-streams-from-PairedQueue.patch index ca81fefe8c..5a2520ee37 100644 --- a/Spigot-Server-Patches/0472-Remove-streams-from-PairedQueue.patch +++ b/Spigot-Server-Patches/0471-Remove-streams-from-PairedQueue.patch @@ -1,4 +1,4 @@ -From 9f7926a05f4689b2ec3033679fbe04acf2b73511 Mon Sep 17 00:00:00 2001 +From d81186e106a802c1faafc42ee24deee0160ac058 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0473-Remove-streams-from-MinecraftKey.patch b/Spigot-Server-Patches/0472-Remove-streams-from-MinecraftKey.patch similarity index 96% rename from Spigot-Server-Patches/0473-Remove-streams-from-MinecraftKey.patch rename to Spigot-Server-Patches/0472-Remove-streams-from-MinecraftKey.patch index f94a6f685f..86f2a4af93 100644 --- a/Spigot-Server-Patches/0473-Remove-streams-from-MinecraftKey.patch +++ b/Spigot-Server-Patches/0472-Remove-streams-from-MinecraftKey.patch @@ -1,4 +1,4 @@ -From f150261d52391ce180d530eb53af8a018db7b031 Mon Sep 17 00:00:00 2001 +From 88311757ba33ed1beed93ac2c08123490bc554f7 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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, JsonSerializer { -- -2.26.2 +2.26.0 diff --git a/Spigot-Server-Patches/0474-Reduce-memory-footprint-of-NBTTagCompound.patch b/Spigot-Server-Patches/0473-Reduce-memory-footprint-of-NBTTagCompound.patch similarity index 97% rename from Spigot-Server-Patches/0474-Reduce-memory-footprint-of-NBTTagCompound.patch rename to Spigot-Server-Patches/0473-Reduce-memory-footprint-of-NBTTagCompound.patch index 37b4a6e4d1..d16a428f28 100644 --- a/Spigot-Server-Patches/0474-Reduce-memory-footprint-of-NBTTagCompound.patch +++ b/Spigot-Server-Patches/0473-Reduce-memory-footprint-of-NBTTagCompound.patch @@ -1,4 +1,4 @@ -From 1e736388e18981ea7df68a2ad8bb3e313552c362 Mon Sep 17 00:00:00 2001 +From 749d192499880dacf26a985d14e172a9c6f25078 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0475-Prevent-opening-inventories-when-frozen.patch b/Spigot-Server-Patches/0474-Prevent-opening-inventories-when-frozen.patch similarity index 92% rename from Spigot-Server-Patches/0475-Prevent-opening-inventories-when-frozen.patch rename to Spigot-Server-Patches/0474-Prevent-opening-inventories-when-frozen.patch index 92c9c2a02b..55180b0163 100644 --- a/Spigot-Server-Patches/0475-Prevent-opening-inventories-when-frozen.patch +++ b/Spigot-Server-Patches/0474-Prevent-opening-inventories-when-frozen.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0476-Optimise-ArraySetSorted-removeIf.patch b/Spigot-Server-Patches/0475-Optimise-ArraySetSorted-removeIf.patch similarity index 97% rename from Spigot-Server-Patches/0476-Optimise-ArraySetSorted-removeIf.patch rename to Spigot-Server-Patches/0475-Optimise-ArraySetSorted-removeIf.patch index 171dc3d4e7..62080ce564 100644 --- a/Spigot-Server-Patches/0476-Optimise-ArraySetSorted-removeIf.patch +++ b/Spigot-Server-Patches/0475-Optimise-ArraySetSorted-removeIf.patch @@ -1,4 +1,4 @@ -From a4e973bd1058ee0377e451d5993619881c7fb0a1 Mon Sep 17 00:00:00 2001 +From 97f1acf281aa18312031d809f24aac85bf6c2611 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0477-Don-t-run-entity-collision-code-if-not-needed.patch b/Spigot-Server-Patches/0476-Don-t-run-entity-collision-code-if-not-needed.patch similarity index 95% rename from Spigot-Server-Patches/0477-Don-t-run-entity-collision-code-if-not-needed.patch rename to Spigot-Server-Patches/0476-Don-t-run-entity-collision-code-if-not-needed.patch index 2a0f9d445e..73d68323cc 100644 --- a/Spigot-Server-Patches/0477-Don-t-run-entity-collision-code-if-not-needed.patch +++ b/Spigot-Server-Patches/0476-Don-t-run-entity-collision-code-if-not-needed.patch @@ -1,4 +1,4 @@ -From e357b2e7bad2b540d3cf268978821148fd64fca2 Mon Sep 17 00:00:00 2001 +From 042be6672a5aa3fb6d55fca93722548bae75da92 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 diff --git a/Spigot-Server-Patches/0478-Optimise-entity-hard-collision-checking.patch b/Spigot-Server-Patches/0477-Optimise-entity-hard-collision-checking.patch similarity index 97% rename from Spigot-Server-Patches/0478-Optimise-entity-hard-collision-checking.patch rename to Spigot-Server-Patches/0477-Optimise-entity-hard-collision-checking.patch index 7ea1590f41..4594bc156d 100644 --- a/Spigot-Server-Patches/0478-Optimise-entity-hard-collision-checking.patch +++ b/Spigot-Server-Patches/0477-Optimise-entity-hard-collision-checking.patch @@ -1,4 +1,4 @@ -From f3fde9e5f48bd872498c06b3df0d7d5575c7ea51 Mon Sep 17 00:00:00 2001 +From 4dcc309197466e350b831399ebdba433cfeaef13 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 ticklist, TickList ticklist1, long i, @Nullable ChunkSection[] achunksection, @Nullable Consumer 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 getEntities(@Nullable Entity entity, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { this.getMethodProfiler().c("getEntities"); -- -2.26.2 +2.26.0 diff --git a/Spigot-Server-Patches/0479-Optimize-ChunkProviderServer-s-chunk-level-checking-.patch b/Spigot-Server-Patches/0478-Optimize-ChunkProviderServer-s-chunk-level-checking-.patch similarity index 97% rename from Spigot-Server-Patches/0479-Optimize-ChunkProviderServer-s-chunk-level-checking-.patch rename to Spigot-Server-Patches/0478-Optimize-ChunkProviderServer-s-chunk-level-checking-.patch index 74f81aa166..8bafde4627 100644 --- a/Spigot-Server-Patches/0479-Optimize-ChunkProviderServer-s-chunk-level-checking-.patch +++ b/Spigot-Server-Patches/0478-Optimize-ChunkProviderServer-s-chunk-level-checking-.patch @@ -1,4 +1,4 @@ -From 33077c31361140aec39629707334a90a1c1185e5 Mon Sep 17 00:00:00 2001 +From 253be66625c8d5ead5169a7dd27d192c66ed8993 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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>> function) { -- -2.26.2 +2.26.0 diff --git a/Spigot-Server-Patches/0480-Restrict-vanilla-teleport-command-to-valid-locations.patch b/Spigot-Server-Patches/0479-Restrict-vanilla-teleport-command-to-valid-locations.patch similarity index 94% rename from Spigot-Server-Patches/0480-Restrict-vanilla-teleport-command-to-valid-locations.patch rename to Spigot-Server-Patches/0479-Restrict-vanilla-teleport-command-to-valid-locations.patch index 5d340f13aa..2673ca3a58 100644 --- a/Spigot-Server-Patches/0480-Restrict-vanilla-teleport-command-to-valid-locations.patch +++ b/Spigot-Server-Patches/0479-Restrict-vanilla-teleport-command-to-valid-locations.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0481-Implement-Player-Client-Options-API.patch b/Spigot-Server-Patches/0480-Implement-Player-Client-Options-API.patch similarity index 96% rename from Spigot-Server-Patches/0481-Implement-Player-Client-Options-API.patch rename to Spigot-Server-Patches/0480-Implement-Player-Client-Options-API.patch index 4f507478c6..0767080e03 100644 --- a/Spigot-Server-Patches/0481-Implement-Player-Client-Options-API.patch +++ b/Spigot-Server-Patches/0480-Implement-Player-Client-Options-API.patch @@ -1,4 +1,4 @@ -From 4f94fb854eedf71d0b7908e765e40163fb7d431b Mon Sep 17 00:00:00 2001 +From 3cb8049368979b5cc7f3f9c24f323333161a10d3 Mon Sep 17 00:00:00 2001 From: MiniDigger 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 bs = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.p); protected static final DataWatcherObject 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 diff --git a/Spigot-Server-Patches/0482-Fix-Chunk-Post-Processing-deadlock-risk.patch b/Spigot-Server-Patches/0481-Fix-Chunk-Post-Processing-deadlock-risk.patch similarity index 93% rename from Spigot-Server-Patches/0482-Fix-Chunk-Post-Processing-deadlock-risk.patch rename to Spigot-Server-Patches/0481-Fix-Chunk-Post-Processing-deadlock-risk.patch index 9a0d241deb..73cb1b67f3 100644 --- a/Spigot-Server-Patches/0482-Fix-Chunk-Post-Processing-deadlock-risk.patch +++ b/Spigot-Server-Patches/0481-Fix-Chunk-Post-Processing-deadlock-risk.patch @@ -1,4 +1,4 @@ -From a025fb60fcd97d4a39b9d65319df173c3bc7cbb5 Mon Sep 17 00:00:00 2001 +From 9ce6c35e1a6618d71f84e3d9cea6cda01bbd4047 Mon Sep 17 00:00:00 2001 From: Aikar 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 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 diff --git a/Spigot-Server-Patches/0483-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch b/Spigot-Server-Patches/0482-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch similarity index 93% rename from Spigot-Server-Patches/0483-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch rename to Spigot-Server-Patches/0482-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch index 957d625e68..703266240a 100644 --- a/Spigot-Server-Patches/0483-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch +++ b/Spigot-Server-Patches/0482-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch @@ -1,4 +1,4 @@ -From fcd5f0fd7d20df79af0cccf4623690d8d8ecb9fa Mon Sep 17 00:00:00 2001 +From 5332bdb3e363c520fd86a1c419d2ef4899661010 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0484-Broadcast-join-message-to-console.patch b/Spigot-Server-Patches/0483-Broadcast-join-message-to-console.patch similarity index 93% rename from Spigot-Server-Patches/0484-Broadcast-join-message-to-console.patch rename to Spigot-Server-Patches/0483-Broadcast-join-message-to-console.patch index 49fda7f761..ed88e83522 100644 --- a/Spigot-Server-Patches/0484-Broadcast-join-message-to-console.patch +++ b/Spigot-Server-Patches/0483-Broadcast-join-message-to-console.patch @@ -1,4 +1,4 @@ -From b6e6c288e775adbeab66961a5c9ec0dc48161017 Mon Sep 17 00:00:00 2001 +From d71b04af8dd05225fb5703e590b000243f968900 Mon Sep 17 00:00:00 2001 From: AvrooVulcan 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 diff --git a/Spigot-Server-Patches/0485-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch b/Spigot-Server-Patches/0484-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch similarity index 95% rename from Spigot-Server-Patches/0485-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch rename to Spigot-Server-Patches/0484-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch index 996ef81651..9e043471a4 100644 --- a/Spigot-Server-Patches/0485-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch +++ b/Spigot-Server-Patches/0484-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch @@ -1,4 +1,4 @@ -From eb15a2a2808a32c82fc667b90b4b639aefab097a Mon Sep 17 00:00:00 2001 +From 59ffe8f9308d4fbaba074ad07266e65918676505 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0486-Load-Chunks-for-Login-Asynchronously.patch b/Spigot-Server-Patches/0485-Load-Chunks-for-Login-Asynchronously.patch similarity index 98% rename from Spigot-Server-Patches/0486-Load-Chunks-for-Login-Asynchronously.patch rename to Spigot-Server-Patches/0485-Load-Chunks-for-Login-Asynchronously.patch index 575aba7ba7..d6fabc4f6c 100644 --- a/Spigot-Server-Patches/0486-Load-Chunks-for-Login-Asynchronously.patch +++ b/Spigot-Server-Patches/0485-Load-Chunks-for-Login-Asynchronously.patch @@ -1,4 +1,4 @@ -From 8a70af59fcb23c04a33296165224d604fdbf692e Mon Sep 17 00:00:00 2001 +From 0cfef8cdd6a79282ce95c46ab2ae67b9df6227a7 Mon Sep 17 00:00:00 2001 From: Aikar 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 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 diff --git a/Spigot-Server-Patches/0487-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch b/Spigot-Server-Patches/0486-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch similarity index 94% rename from Spigot-Server-Patches/0487-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch rename to Spigot-Server-Patches/0486-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch index 9d84ac4332..c31661cc4b 100644 --- a/Spigot-Server-Patches/0487-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch +++ b/Spigot-Server-Patches/0486-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch @@ -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 diff --git a/Spigot-Server-Patches/0488-Allow-sleeping-players-to-float.patch b/Spigot-Server-Patches/0487-Allow-sleeping-players-to-float.patch similarity index 95% rename from Spigot-Server-Patches/0488-Allow-sleeping-players-to-float.patch rename to Spigot-Server-Patches/0487-Allow-sleeping-players-to-float.patch index c882d99ef3..8d99b14435 100644 --- a/Spigot-Server-Patches/0488-Allow-sleeping-players-to-float.patch +++ b/Spigot-Server-Patches/0487-Allow-sleeping-players-to-float.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0489-Add-PlayerAttackEntityCooldownResetEvent.patch b/Spigot-Server-Patches/0488-Add-PlayerAttackEntityCooldownResetEvent.patch similarity index 96% rename from Spigot-Server-Patches/0489-Add-PlayerAttackEntityCooldownResetEvent.patch rename to Spigot-Server-Patches/0488-Add-PlayerAttackEntityCooldownResetEvent.patch index 7de6a467d4..96f0247058 100644 --- a/Spigot-Server-Patches/0489-Add-PlayerAttackEntityCooldownResetEvent.patch +++ b/Spigot-Server-Patches/0488-Add-PlayerAttackEntityCooldownResetEvent.patch @@ -1,4 +1,4 @@ -From 57f07c3d690df1b2b2b613dea2e368984ee4b9fb Mon Sep 17 00:00:00 2001 +From 152b6fbacb2b2f599adc5815981e17db8fc97515 Mon Sep 17 00:00:00 2001 From: nossr50 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 diff --git a/Spigot-Server-Patches/0490-Allow-multiple-callbacks-to-schedule-for-Callback-Ex.patch b/Spigot-Server-Patches/0489-Allow-multiple-callbacks-to-schedule-for-Callback-Ex.patch similarity index 95% rename from Spigot-Server-Patches/0490-Allow-multiple-callbacks-to-schedule-for-Callback-Ex.patch rename to Spigot-Server-Patches/0489-Allow-multiple-callbacks-to-schedule-for-Callback-Ex.patch index 88485dd68f..3da86e08f7 100644 --- a/Spigot-Server-Patches/0490-Allow-multiple-callbacks-to-schedule-for-Callback-Ex.patch +++ b/Spigot-Server-Patches/0489-Allow-multiple-callbacks-to-schedule-for-Callback-Ex.patch @@ -1,4 +1,4 @@ -From 759d5945b448b510250dc35d4c72d2d90c51cfa4 Mon Sep 17 00:00:00 2001 +From eb89bb7522116612e4286157a0b9993d0cf9dbba Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0491-Don-t-fire-BlockFade-on-worldgen-threads.patch b/Spigot-Server-Patches/0490-Don-t-fire-BlockFade-on-worldgen-threads.patch similarity index 94% rename from Spigot-Server-Patches/0491-Don-t-fire-BlockFade-on-worldgen-threads.patch rename to Spigot-Server-Patches/0490-Don-t-fire-BlockFade-on-worldgen-threads.patch index 502fc12765..96b67d93e1 100644 --- a/Spigot-Server-Patches/0491-Don-t-fire-BlockFade-on-worldgen-threads.patch +++ b/Spigot-Server-Patches/0490-Don-t-fire-BlockFade-on-worldgen-threads.patch @@ -1,4 +1,4 @@ -From d4c9271457c31e20ca2245fcc187e3032eff10d2 Mon Sep 17 00:00:00 2001 +From 6d05ae8a7ec0b849d7922f0912f1fedb05dbf993 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0492-Add-phantom-creative-and-insomniac-controls.patch b/Spigot-Server-Patches/0491-Add-phantom-creative-and-insomniac-controls.patch similarity index 95% rename from Spigot-Server-Patches/0492-Add-phantom-creative-and-insomniac-controls.patch rename to Spigot-Server-Patches/0491-Add-phantom-creative-and-insomniac-controls.patch index 786133fd1f..2c3c79f880 100644 --- a/Spigot-Server-Patches/0492-Add-phantom-creative-and-insomniac-controls.patch +++ b/Spigot-Server-Patches/0491-Add-phantom-creative-and-insomniac-controls.patch @@ -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 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 diff --git a/Spigot-Server-Patches/0493-Fix-numerous-item-duplication-issues-and-teleport-is.patch b/Spigot-Server-Patches/0492-Fix-numerous-item-duplication-issues-and-teleport-is.patch similarity index 98% rename from Spigot-Server-Patches/0493-Fix-numerous-item-duplication-issues-and-teleport-is.patch rename to Spigot-Server-Patches/0492-Fix-numerous-item-duplication-issues-and-teleport-is.patch index e04f50f05a..1379dd5c72 100644 --- a/Spigot-Server-Patches/0493-Fix-numerous-item-duplication-issues-and-teleport-is.patch +++ b/Spigot-Server-Patches/0492-Fix-numerous-item-duplication-issues-and-teleport-is.patch @@ -1,4 +1,4 @@ -From 1ed9ecc32fcec1fa395073143d271c8373b498b9 Mon Sep 17 00:00:00 2001 +From a3d9cf01c0faa21381f3f2d1ec6b27395be1eec4 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0494-Implement-Brigadier-Mojang-API.patch b/Spigot-Server-Patches/0493-Implement-Brigadier-Mojang-API.patch similarity index 99% rename from Spigot-Server-Patches/0494-Implement-Brigadier-Mojang-API.patch rename to Spigot-Server-Patches/0493-Implement-Brigadier-Mojang-API.patch index 9cf0d2ea87..d0edbe2b53 100644 --- a/Spigot-Server-Patches/0494-Implement-Brigadier-Mojang-API.patch +++ b/Spigot-Server-Patches/0493-Implement-Brigadier-Mojang-API.patch @@ -1,4 +1,4 @@ -From 2b3eacadbea7c13465bc855a2dacd7bbeeaaa33b Mon Sep 17 00:00:00 2001 +From 235f4bba895f9ea8992b76a696eef67ca3595425 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0495-Villager-Restocks-API.patch b/Spigot-Server-Patches/0494-Villager-Restocks-API.patch similarity index 96% rename from Spigot-Server-Patches/0495-Villager-Restocks-API.patch rename to Spigot-Server-Patches/0494-Villager-Restocks-API.patch index a86cce5d8b..368e744503 100644 --- a/Spigot-Server-Patches/0495-Villager-Restocks-API.patch +++ b/Spigot-Server-Patches/0494-Villager-Restocks-API.patch @@ -1,4 +1,4 @@ -From 6a37d7c6bd64ccfbb2d061af1cabb3c64b0cef8c Mon Sep 17 00:00:00 2001 +From 85dc598c049c292cae2909d518a0df13778ba64b Mon Sep 17 00:00:00 2001 From: zbk 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 diff --git a/Spigot-Server-Patches/0496-Validate-PickItem-Packet-and-kick-for-invalid.patch b/Spigot-Server-Patches/0495-Validate-PickItem-Packet-and-kick-for-invalid.patch similarity index 94% rename from Spigot-Server-Patches/0496-Validate-PickItem-Packet-and-kick-for-invalid.patch rename to Spigot-Server-Patches/0495-Validate-PickItem-Packet-and-kick-for-invalid.patch index c84222573c..06ad006ee7 100644 --- a/Spigot-Server-Patches/0496-Validate-PickItem-Packet-and-kick-for-invalid.patch +++ b/Spigot-Server-Patches/0495-Validate-PickItem-Packet-and-kick-for-invalid.patch @@ -1,11 +1,11 @@ -From dcd786960faeeeea7fa3106571ac2e20aae1cf0a Mon Sep 17 00:00:00 2001 +From ff054938e2ca3779c9f1aed3717015c120dcdf5c Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0497-Expose-game-version.patch b/Spigot-Server-Patches/0496-Expose-game-version.patch similarity index 91% rename from Spigot-Server-Patches/0497-Expose-game-version.patch rename to Spigot-Server-Patches/0496-Expose-game-version.patch index cf868b1759..9f62ff8569 100644 --- a/Spigot-Server-Patches/0497-Expose-game-version.patch +++ b/Spigot-Server-Patches/0496-Expose-game-version.patch @@ -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 Date: Fri, 1 May 2020 17:39:26 +0300 Subject: [PATCH] Expose game version @@ -23,5 +23,5 @@ index f49193d9d7..1647c09756 100644 public List getOnlinePlayers() { return this.playerView; -- -2.26.2 +2.26.0 diff --git a/Spigot-Server-Patches/0498-Sync-position-on-teleportation.patch b/Spigot-Server-Patches/0497-Sync-position-on-teleportation.patch similarity index 95% rename from Spigot-Server-Patches/0498-Sync-position-on-teleportation.patch rename to Spigot-Server-Patches/0497-Sync-position-on-teleportation.patch index 6d9eb5b8ae..7d7f6fc37a 100644 --- a/Spigot-Server-Patches/0498-Sync-position-on-teleportation.patch +++ b/Spigot-Server-Patches/0497-Sync-position-on-teleportation.patch @@ -1,4 +1,4 @@ -From 1e7d68cf958496b9e67872eeb5cc01364bd15339 Mon Sep 17 00:00:00 2001 +From cd9083a28d860b7f0fa2d5b3cc59d88f45d474fc Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0499-Optimize-Voxel-Shape-Merging.patch b/Spigot-Server-Patches/0498-Optimize-Voxel-Shape-Merging.patch similarity index 98% rename from Spigot-Server-Patches/0499-Optimize-Voxel-Shape-Merging.patch rename to Spigot-Server-Patches/0498-Optimize-Voxel-Shape-Merging.patch index d9624a5489..d089b76697 100644 --- a/Spigot-Server-Patches/0499-Optimize-Voxel-Shape-Merging.patch +++ b/Spigot-Server-Patches/0498-Optimize-Voxel-Shape-Merging.patch @@ -1,4 +1,4 @@ -From fc80e192e73525b7ac69affa6b4c586fa039cef4 Mon Sep 17 00:00:00 2001 +From 7ca4e13c3ecf2b275f2b4fc7b399a65f26f506a6 Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0500-Cleanup-Region-Files-Direct-Memory-on-close.patch b/Spigot-Server-Patches/0499-Cleanup-Region-Files-Direct-Memory-on-close.patch similarity index 98% rename from Spigot-Server-Patches/0500-Cleanup-Region-Files-Direct-Memory-on-close.patch rename to Spigot-Server-Patches/0499-Cleanup-Region-Files-Direct-Memory-on-close.patch index a3c20fde8e..5020ddb66e 100644 --- a/Spigot-Server-Patches/0500-Cleanup-Region-Files-Direct-Memory-on-close.patch +++ b/Spigot-Server-Patches/0499-Cleanup-Region-Files-Direct-Memory-on-close.patch @@ -1,4 +1,4 @@ -From 8fdbc0b6bb68ba8e6f6ce8035c9936e3922808f0 Mon Sep 17 00:00:00 2001 +From d435cc4e885c3c821ef1a3f703e56729cd9e436f Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0501-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch b/Spigot-Server-Patches/0500-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch similarity index 95% rename from Spigot-Server-Patches/0501-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch rename to Spigot-Server-Patches/0500-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch index e02d7415c0..b6dc79dc96 100644 --- a/Spigot-Server-Patches/0501-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch +++ b/Spigot-Server-Patches/0500-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch @@ -1,4 +1,4 @@ -From 5932b5ecbc0822f05b671372c6e58ac8e14d5bb4 Mon Sep 17 00:00:00 2001 +From 4f2c03a5f5be32ff4e04312b84d1db70efab691a Mon Sep 17 00:00:00 2001 From: Aikar 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 diff --git a/Spigot-Server-Patches/0502-Implement-Mob-Goal-API.patch b/Spigot-Server-Patches/0501-Implement-Mob-Goal-API.patch similarity index 98% rename from Spigot-Server-Patches/0502-Implement-Mob-Goal-API.patch rename to Spigot-Server-Patches/0501-Implement-Mob-Goal-API.patch index e899e14645..b33ff44496 100644 --- a/Spigot-Server-Patches/0502-Implement-Mob-Goal-API.patch +++ b/Spigot-Server-Patches/0501-Implement-Mob-Goal-API.patch @@ -1,11 +1,11 @@ -From 3ab6d7f91bbd00bbaff6cad96d959b7265111ed8 Mon Sep 17 00:00:00 2001 +From accf79a4f2b55be26ffbfa73370aab3a568aba7e Mon Sep 17 00:00:00 2001 From: MiniDigger Date: Fri, 3 Jan 2020 16:26:19 +0100 Subject: [PATCH] Implement Mob Goal API diff --git a/pom.xml b/pom.xml -index bc8438ae1..0c0051f7f 100644 +index bc8438ae1a..0c0051f7f2 100644 --- a/pom.xml +++ b/pom.xml @@ -122,6 +122,13 @@ @@ -24,7 +24,7 @@ index bc8438ae1..0c0051f7f 100644 diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java new file mode 100644 -index 000000000..d6ee94107 +index 0000000000..d6ee941078 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -0,0 +1,329 @@ @@ -359,7 +359,7 @@ index 000000000..d6ee94107 +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java new file mode 100644 -index 000000000..8e4dc2708 +index 0000000000..8e4dc2708d --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java @@ -0,0 +1,52 @@ @@ -417,7 +417,7 @@ index 000000000..8e4dc2708 +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java new file mode 100644 -index 000000000..d9df0236e +index 0000000000..d9df0236e8 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java @@ -0,0 +1,236 @@ @@ -659,7 +659,7 @@ index 000000000..d9df0236e +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java new file mode 100644 -index 000000000..263e8c65b +index 0000000000..263e8c65b9 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java @@ -0,0 +1,63 @@ @@ -727,7 +727,7 @@ index 000000000..263e8c65b + } +} diff --git a/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java b/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java -index 9df0006c1..b3329c6fc 100644 +index 9df0006c1a..b3329c6fcd 100644 --- a/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java +++ b/src/main/java/com/destroystokyo/paper/util/set/OptimizedSmallEnumSet.java @@ -64,4 +64,8 @@ public final class OptimizedSmallEnumSet> { @@ -740,7 +740,7 @@ index 9df0006c1..b3329c6fc 100644 + } } diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java -index 93009d83f..2dfbecf39 100644 +index 93009d83f0..2dfbecf390 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoal.java +++ b/src/main/java/net/minecraft/server/PathfinderGoal.java @@ -10,9 +10,9 @@ public abstract class PathfinderGoal { @@ -776,7 +776,7 @@ index 93009d83f..2dfbecf39 100644 this.goalTypes.clear(); this.goalTypes.addAllUnchecked(enumset); diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -index 84d2abbcb..a68fc11ec 100644 +index 84d2abbcb9..a68fc11ec6 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java @@ -26,7 +26,7 @@ public class PathfinderGoalSelector { @@ -815,7 +815,7 @@ index 84d2abbcb..a68fc11ec 100644 return this.d.stream().filter(PathfinderGoalWrapped::g); } diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java -index 1b800c558..dee4e2bea 100644 +index 1b800c558f..dee4e2beac 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java @@ -5,8 +5,8 @@ import javax.annotation.Nullable; @@ -830,7 +830,7 @@ index 1b800c558..dee4e2bea 100644 public PathfinderGoalWrapped(int i, PathfinderGoal pathfindergoal) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1647c0975..b89f99a66 100644 +index 1647c09756..b89f99a66f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -2230,5 +2230,11 @@ public final class CraftServer implements Server { @@ -847,7 +847,7 @@ index 1647c0975..b89f99a66 100644 } diff --git a/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java new file mode 100644 -index 000000000..83d34761d +index 0000000000..83d34761d9 --- /dev/null +++ b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java @@ -0,0 +1,92 @@ @@ -944,5 +944,5 @@ index 000000000..83d34761d + } +} -- -2.17.1 +2.26.0 diff --git a/Spigot-Server-Patches/0503-Use-distance-map-to-optimise-entity-tracker.patch b/Spigot-Server-Patches/0503-Use-distance-map-to-optimise-entity-tracker.patch new file mode 100644 index 0000000000..ab3707e9db --- /dev/null +++ b/Spigot-Server-Patches/0503-Use-distance-map-to-optimise-entity-tracker.patch @@ -0,0 +1,380 @@ +From 4063516ae6d3b1b4608687075cb114252685c949 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Tue, 5 May 2020 20:18:05 -0700 +Subject: [PATCH] Use distance map to optimise entity tracker + +Use the distance map to find candidate players for tracking. + +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index 14ba037c1d..8820e4b650 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -244,6 +244,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + } + // Paper end + ++ // Paper start - optimise entity tracking ++ final org.spigotmc.TrackingRange.TrackingRangeType trackingRangeType = org.spigotmc.TrackingRange.getTrackingRangeType(this); ++ ++ boolean isLegacyTrackingEntity = false; ++ ++ public final void setLegacyTrackingEntity(final boolean isLegacyTrackingEntity) { ++ this.isLegacyTrackingEntity = isLegacyTrackingEntity; ++ } ++ ++ final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet getPlayersInTrackRange() { ++ return ((WorldServer)this.world).getChunkProvider().playerChunkMap.playerEntityTrackerTrackMaps[this.trackingRangeType.ordinal()] ++ .getObjectsInRange(MCUtil.getCoordinateKey(this)); ++ } ++ // Paper end - optimise entity tracking ++ + public Entity(EntityTypes entitytypes, World world) { + this.id = Entity.entityCount.incrementAndGet(); + this.passengers = Lists.newArrayList(); +diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +index 3a88c9a670..6d3b34ead9 100644 +--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java ++++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +@@ -70,6 +70,7 @@ public class EntityTrackerEntry { + this.r = entity.onGround; + } + ++ public final void tick() { this.a(); } // Paper - OBFHELPER + public void a() { + List list = this.tracker.getPassengers(); + +diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java +index e08a3bd96c..a780cf5b45 100644 +--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java ++++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java +@@ -120,21 +120,51 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + + // Paper start - distance maps + private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>(); ++ // Paper start - use distance map to optimise tracker ++ public static boolean isLegacyTrackingEntity(Entity entity) { ++ return entity.isLegacyTrackingEntity; ++ } ++ ++ // inlined EnumMap, TrackingRange.TrackingRangeType ++ static final org.spigotmc.TrackingRange.TrackingRangeType[] TRACKING_RANGE_TYPES = org.spigotmc.TrackingRange.TrackingRangeType.values(); ++ final com.destroystokyo.paper.util.misc.PlayerAreaMap[] playerEntityTrackerTrackMaps; ++ final int[] entityTrackerTrackRanges; ++ // Paper end - use distance map to optimise tracker + + void addPlayerToDistanceMaps(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 ++ // Paper start - use distance map to optimise entity tracker ++ for (int i = 0, len = TRACKING_RANGE_TYPES.length; i < len; ++i) { ++ com.destroystokyo.paper.util.misc.PlayerAreaMap trackMap = this.playerEntityTrackerTrackMaps[i]; ++ int trackRange = this.entityTrackerTrackRanges[i]; ++ ++ trackMap.add(player, chunkX, chunkZ, Math.min(trackRange, this.getEffectiveViewDistance())); ++ } ++ // Paper end - use distance map to optimise entity tracker + } + + void removePlayerFromDistanceMaps(EntityPlayer player) { +- ++ // Paper start - use distance map to optimise tracker ++ for (int i = 0, len = TRACKING_RANGE_TYPES.length; i < len; ++i) { ++ this.playerEntityTrackerTrackMaps[i].remove(player); ++ } ++ // Paper end - use distance map to optimise tracker + } + + 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 ++ // Paper start - use distance map to optimise entity tracker ++ for (int i = 0, len = TRACKING_RANGE_TYPES.length; i < len; ++i) { ++ com.destroystokyo.paper.util.misc.PlayerAreaMap trackMap = this.playerEntityTrackerTrackMaps[i]; ++ int trackRange = this.entityTrackerTrackRanges[i]; ++ ++ trackMap.update(player, chunkX, chunkZ, Math.min(trackRange, this.getEffectiveViewDistance())); ++ } ++ // Paper end - use distance map to optimise entity tracker + } + + +@@ -172,6 +202,44 @@ 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 ++ // Paper start - use distance map to optimise entity tracker ++ this.playerEntityTrackerTrackMaps = new com.destroystokyo.paper.util.misc.PlayerAreaMap[TRACKING_RANGE_TYPES.length]; ++ this.entityTrackerTrackRanges = new int[TRACKING_RANGE_TYPES.length]; ++ ++ org.spigotmc.SpigotWorldConfig spigotWorldConfig = this.world.spigotConfig; ++ ++ for (int ordinal = 0, len = TRACKING_RANGE_TYPES.length; ordinal < len; ++ordinal) { ++ org.spigotmc.TrackingRange.TrackingRangeType trackingRangeType = TRACKING_RANGE_TYPES[ordinal]; ++ int configuredSpigotValue; ++ switch (trackingRangeType) { ++ case PLAYER: ++ configuredSpigotValue = spigotWorldConfig.playerTrackingRange; ++ break; ++ case ANIMAL: ++ configuredSpigotValue = spigotWorldConfig.animalTrackingRange; ++ break; ++ case MONSTER: ++ configuredSpigotValue = spigotWorldConfig.monsterTrackingRange; ++ break; ++ case MISC: ++ configuredSpigotValue = spigotWorldConfig.miscTrackingRange; ++ break; ++ case OTHER: ++ configuredSpigotValue = spigotWorldConfig.otherTrackingRange; ++ break; ++ case ENDERDRAGON: ++ configuredSpigotValue = 10 * 16; // default is 10 chunk range // TODO check on update ++ break; ++ default: ++ throw new IllegalStateException("Missing case for enum " + trackingRangeType); ++ } ++ ++ int trackRange = (configuredSpigotValue >>> 4) + ((configuredSpigotValue & 15) != 0 ? 1 : 0); ++ this.entityTrackerTrackRanges[ordinal] = trackRange; ++ ++ this.playerEntityTrackerTrackMaps[ordinal] = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets); ++ } ++ // Paper end - use distance map to optimise entity tracker + } + + public void updatePlayerMobTypeMap(Entity entity) { +@@ -1423,17 +1491,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + } + + public void movePlayer(EntityPlayer entityplayer) { +- ObjectIterator objectiterator = this.trackedEntities.values().iterator(); +- +- while (objectiterator.hasNext()) { +- PlayerChunkMap.EntityTracker playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next(); +- +- if (playerchunkmap_entitytracker.tracker == entityplayer) { +- playerchunkmap_entitytracker.track(this.world.getPlayers()); +- } else { +- playerchunkmap_entitytracker.updatePlayer(entityplayer); +- } +- } ++ // Paper - delay this logic for the entity tracker tick, no need to duplicate it + + int i = MathHelper.floor(entityplayer.locX()) >> 4; + int j = MathHelper.floor(entityplayer.locZ()) >> 4; +@@ -1550,7 +1608,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + + entity.tracker = playerchunkmap_entitytracker; // Paper - Fast access to tracker + this.trackedEntities.put(entity.getId(), playerchunkmap_entitytracker); +- playerchunkmap_entitytracker.track(this.world.getPlayers()); ++ playerchunkmap_entitytracker.updatePlayers(entity.getPlayersInTrackRange()); // Paper - don't search all players + if (entity instanceof EntityPlayer) { + EntityPlayer entityplayer = (EntityPlayer) entity; + +@@ -1594,7 +1652,48 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + entity.tracker = null; // Paper - We're no longer tracked + } + ++ // Paper start - optimised tracker ++ private final void processTrackQueue() { ++ this.world.timings.tracker1.startTiming(); ++ try { ++ Entity[] entities = this.world.loadedEntities.getRawData(); ++ for (int i = 0, len = this.world.loadedEntities.size(); i < len; ++i) { ++ Entity tracked = entities[i]; ++ // update tracker entry ++ EntityTracker tracker = this.trackedEntities.get(tracked.getId()); ++ if (tracker == null) { ++ continue; ++ } ++ tracker.updatePlayers(tracked.getPlayersInTrackRange()); ++ } ++ } finally { ++ this.world.timings.tracker1.stopTiming(); ++ } ++ ++ ++ this.world.timings.tracker2.startTiming(); ++ try { ++ Entity[] entities = this.world.loadedEntities.getRawData(); ++ for (int i = 0, len = this.world.loadedEntities.size(); i < len; ++i) { ++ Entity tracked = entities[i]; ++ EntityTracker tracker = this.trackedEntities.get(tracked.getId()); ++ if (tracker != null) { ++ tracker.trackerEntry.tick(); ++ } ++ } ++ } finally { ++ this.world.timings.tracker2.stopTiming(); ++ } ++ } ++ // Paper end - optimised tracker ++ + protected void g() { ++ // Paper start - optimized tracker ++ if (true) { ++ this.processTrackQueue(); ++ return; ++ } ++ // Paper end - optimized tracker + List list = Lists.newArrayList(); + List list1 = this.world.getPlayers(); + +@@ -1662,23 +1761,31 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + PacketDebug.a(this.world, chunk.getPos()); + List list = Lists.newArrayList(); + List list1 = Lists.newArrayList(); +- ObjectIterator objectiterator = this.trackedEntities.values().iterator(); ++ // Paper start - optimise entity tracker ++ // use the chunk entity list, not the whole trackedEntities map... ++ Entity[] entities = chunk.entities.getRawData(); ++ for (int i = 0, size = chunk.entities.size(); i < size; ++i) { ++ Entity entity = entities[i]; ++ if (entity == entityplayer) { ++ continue; ++ } ++ PlayerChunkMap.EntityTracker tracker = this.trackedEntities.get(entity.getId()); ++ if (tracker != null) { // dumb plugins... move on... ++ tracker.updatePlayer(entityplayer); ++ } + +- while (objectiterator.hasNext()) { +- PlayerChunkMap.EntityTracker playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next(); +- Entity entity = playerchunkmap_entitytracker.tracker; ++ // keep the vanilla logic here - this is REQUIRED or else passengers and their vehicles disappear! ++ // (and god knows what the leash thing is) + +- if (entity != entityplayer && entity.chunkX == chunk.getPos().x && entity.chunkZ == chunk.getPos().z) { +- playerchunkmap_entitytracker.updatePlayer(entityplayer); +- if (entity instanceof EntityInsentient && ((EntityInsentient) entity).getLeashHolder() != null) { +- list.add(entity); +- } ++ if (entity instanceof EntityInsentient && ((EntityInsentient)entity).getLeashHolder() != null) { ++ list.add(entity); ++ } + +- if (!entity.getPassengers().isEmpty()) { +- list1.add(entity); +- } ++ if (!entity.getPassengers().isEmpty()) { ++ list1.add(entity); + } + } ++ // Paper end - optimise entity tracker + + Iterator iterator; + Entity entity1; +@@ -1716,7 +1823,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + + public class EntityTracker { + +- private final EntityTrackerEntry trackerEntry; ++ final EntityTrackerEntry trackerEntry; // Paper - private -> package private + private final Entity tracker; + private final int trackingDistance; + private SectionPosition e; +@@ -1733,6 +1840,42 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + this.e = SectionPosition.a(entity); + } + ++ // Paper start - use distance map to optimise tracker ++ com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet lastTrackerCandidates; ++ ++ final void updatePlayers(com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet newTrackerCandidates) { ++ com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet oldTrackerCandidates = this.lastTrackerCandidates; ++ this.lastTrackerCandidates = newTrackerCandidates; ++ ++ if (newTrackerCandidates != null) { ++ Object[] rawData = newTrackerCandidates.getBackingSet(); ++ for (int i = 0, len = rawData.length; i < len; ++i) { ++ Object raw = rawData[i]; ++ if (!(raw instanceof EntityPlayer)) { ++ continue; ++ } ++ EntityPlayer player = (EntityPlayer)raw; ++ this.updatePlayer(player); ++ } ++ } ++ ++ if (oldTrackerCandidates == newTrackerCandidates) { ++ // this is likely the case. ++ // means there has been no range changes, so we can just use the above for tracking. ++ return; ++ } ++ ++ // stuff could have been removed, so we need to check the trackedPlayers set ++ // for players that were removed ++ ++ for (EntityPlayer player : this.trackedPlayers.toArray(new EntityPlayer[0])) { // avoid CME ++ if (newTrackerCandidates == null || !newTrackerCandidates.contains(player)) { ++ this.updatePlayer(player); ++ } ++ } ++ } ++ // Paper end - use distance map to optimise tracker ++ + public boolean equals(Object object) { + return object instanceof PlayerChunkMap.EntityTracker ? ((PlayerChunkMap.EntityTracker) object).tracker.getId() == this.tracker.getId() : false; + } +@@ -1829,7 +1972,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + int j = entity.getEntityType().getChunkRange() * 16; + j = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, j); // Paper + +- if (j > i) { ++ if (j < i) { // Paper - we need the lowest range thanks to the fact that our tracker doesn't account for passenger logic + i = j; + } + } +diff --git a/src/main/java/org/spigotmc/TrackingRange.java b/src/main/java/org/spigotmc/TrackingRange.java +index 765bdaf9b5..43b5ed8e39 100644 +--- a/src/main/java/org/spigotmc/TrackingRange.java ++++ b/src/main/java/org/spigotmc/TrackingRange.java +@@ -49,4 +49,43 @@ public class TrackingRange + return config.otherTrackingRange; + } + } ++ ++ // Paper start - optimise entity tracking ++ // copied from above, TODO check on update ++ public static TrackingRangeType getTrackingRangeType(Entity entity) ++ { ++ if ( entity instanceof EntityPlayer ) ++ { ++ return TrackingRangeType.PLAYER; ++ // Paper start - Simplify and set water mobs to animal tracking range ++ } ++ switch (entity.activationType) { ++ case RAIDER: ++ case MONSTER: ++ return TrackingRangeType.MONSTER; ++ case WATER: ++ case ANIMAL: ++ return TrackingRangeType.ANIMAL; ++ case MISC: ++ } ++ if ( entity instanceof EntityItemFrame || entity instanceof EntityPainting || entity instanceof EntityItem || entity instanceof EntityExperienceOrb ) ++ // Paper end ++ { ++ return TrackingRangeType.MISC; ++ } else ++ { ++ if (entity instanceof EntityEnderDragon) return TrackingRangeType.ENDERDRAGON; // Paper - enderdragon is exempt ++ return TrackingRangeType.OTHER; ++ } ++ } ++ ++ public static enum TrackingRangeType { ++ PLAYER, ++ ANIMAL, ++ MONSTER, ++ MISC, ++ OTHER, ++ ENDERDRAGON; ++ } ++ // Paper end - optimise entity tracking + } +-- +2.26.0 +