From 6f26a671b5514bd51fc3341f7d3b96dceb09dad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=84=97=E3=84=A0=CB=8B=20=E3=84=91=E3=84=A7=CB=8A?= Date: Sat, 18 Apr 2020 18:05:03 +0800 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appears to apply and compile correctly Paper Changes: 26fb7cc35 Fix Chunk Post Processing deadlock risk ffecc4e26 Revert "Optimize entity list iteration requiring entities be in" 0a4286cc4 Prevent Fire from loading chunks 07915ea18 Add Player Client Options API (#2883) bc48a3172 Optimize entity list iteration requiring entities be in loaded chunks 88092fef1 Optimize ChunkProviderServer's chunk level checking helper methods 01e8ce8d2 Forced Watchdog Crash support and Improve Async Shutdown fdb8fe780 Be less strict with vanilla teleport command limits 0f06d3806 Restrict vanilla teleport command to within worldborder 24d93aafa Fix Optional null issue - Fixes #3155 eb71c5fa3 Fix incorect timing of mspt 1ca804342 Optimise entity hard collision checking b67a42376 Don't run entity collision code if not needed bd9aa547d Optimise ArraySetSorted#removeIf --- Paper | 2 +- .../server/0003-Akarin-configuration.patch | 6 +- .../server/0004-Akarin-brand-changes.patch | 6 +- patches/server/0006-Disable-the-Snooper.patch | 8 +- ...0011-Remove-vanilla-profiler-callers.patch | 113 ++++++++++-------- .../0013-Optimizations-for-network.patch | 2 +- ...aps-the-predicate-order-of-collision.patch | 4 +- ...mize-door-interact-with-pathfinding.patch} | 0 ...ity-Optimise-ArraySetSorted-removeIf.patch | 64 ---------- ...-entity-collision-code-if-not-needed.patch | 32 ----- ...17-Remove-stream-for-ender-teleport.patch} | 6 +- ...18-Cache-hashcode-for-BlockPosition.patch} | 0 ...nd-simplify-operation-in-pathfinder.patch} | 0 ...h => 0020-Remove-a-few-more-streams.patch} | 0 14 files changed, 77 insertions(+), 166 deletions(-) rename patches/server/{0018-Optimize-door-interact-with-pathfinding.patch => 0016-Optimize-door-interact-with-pathfinding.patch} (100%) delete mode 100644 patches/server/0016-Tuinity-Optimise-ArraySetSorted-removeIf.patch delete mode 100644 patches/server/0017-Don-t-run-entity-collision-code-if-not-needed.patch rename patches/server/{0019-Remove-stream-for-ender-teleport.patch => 0017-Remove-stream-for-ender-teleport.patch} (86%) rename patches/server/{0020-Cache-hashcode-for-BlockPosition.patch => 0018-Cache-hashcode-for-BlockPosition.patch} (100%) rename patches/server/{0021-Remove-stream-and-simplify-operation-in-pathfinder.patch => 0019-Remove-stream-and-simplify-operation-in-pathfinder.patch} (100%) rename patches/server/{0022-Remove-a-few-more-streams.patch => 0020-Remove-a-few-more-streams.patch} (100%) diff --git a/Paper b/Paper index 78871d07d..26fb7cc35 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit 78871d07dc22b56852dd028c85207068e94176f2 +Subproject commit 26fb7cc35aafecd5bf789c8ae4f9c26034527e52 diff --git a/patches/server/0003-Akarin-configuration.patch b/patches/server/0003-Akarin-configuration.patch index b9d19fe8e..acedb72e3 100644 --- a/patches/server/0003-Akarin-configuration.patch +++ b/patches/server/0003-Akarin-configuration.patch @@ -195,7 +195,7 @@ index 0000000000000000000000000000000000000000..2ac8f02a97429f04f3e5c9206ec228ed + +} diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 1ef7890da599d13e784861035e7891efcc4cd504..9d82885dcf5bb9309bbf136180551ed12930f59b 100644 +index e62ca0543f1819259ad8720ad792fed3ef134d6a..e936dee73aa8c4b2212d0f29fa2f9825b36345e0 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -194,6 +194,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -207,7 +207,7 @@ index 1ef7890da599d13e784861035e7891efcc4cd504..9d82885dcf5bb9309bbf136180551ed1 this.setSpawnAnimals(dedicatedserverproperties.spawnAnimals); this.setSpawnNPCs(dedicatedserverproperties.spawnNpcs); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index d554d4cf0f0a13b598c6b14d618ba463c9895f35..839ddb14efe621c0fdd4d43c03084a9d49683997 100644 +index 09b03afffa496b7090454682495ca35147c2f8a9..8d043de794d8ce13ed7efef88cfa93e3bc9b57f8 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -82,6 +82,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -228,7 +228,7 @@ index d554d4cf0f0a13b598c6b14d618ba463c9895f35..839ddb14efe621c0fdd4d43c03084a9d this.world = new CraftWorld((WorldServer) this, gen, env); this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8cc0f66ce52d2c0cedef682b530a852fde38526a..ed684cc0d56d8f8e79f4553f6552921953e1b4b0 100644 +index dcc44be613119f0e2c9d7f7e76bdf641ad1ae7c0..5ce50f5fd831955b74e002c0aebcdb6e25b5af31 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -806,6 +806,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0004-Akarin-brand-changes.patch b/patches/server/0004-Akarin-brand-changes.patch index 95b0f35ec..fd9a79a9e 100644 --- a/patches/server/0004-Akarin-brand-changes.patch +++ b/patches/server/0004-Akarin-brand-changes.patch @@ -19,10 +19,10 @@ index cf00f35a5b7c2d2f6b6989e0855de8b882dcef50..a45e63a02759305e119a41eac55a7f40 throwable = throwable1; throw throwable1; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a9b5337512c5c7d71be68826cafb6c3c5528bd3e..c562c8ce7fd260760d1b855a9feffed904e2978b 100644 +index a386c1ab480806003938e330ca78a8283fab37f1..4680c5b27a82df529ad15218e23ade0c467c52f6 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1511,7 +1511,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 100) { // Spigot this.snooper.a(); } -@@ -1176,6 +1178,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant world.spigotConfig.viewDistance) ? (byte) world.spigotConfig.viewDistance : chunkRange; -@@ -691,18 +695,18 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -701,18 +705,18 @@ public class ChunkProviderServer extends IChunkProvider { if (optional.isPresent()) { Chunk chunk = (Chunk) optional.get(); @@ -168,7 +168,7 @@ index f741a034e8eae0a250aa16b26e56f173c88a9769..04ffecd0615b85e080a828d32db7821c this.world.timings.mobSpawn.startTiming(); // Spigot EnumCreatureType[] aenumcreaturetype1 = aenumcreaturetype; int i1 = aenumcreaturetype.length; -@@ -762,7 +766,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -772,7 +776,7 @@ public class ChunkProviderServer extends IChunkProvider { } this.world.timings.mobSpawn.stopTiming(); // Spigot @@ -177,7 +177,7 @@ index f741a034e8eae0a250aa16b26e56f173c88a9769..04ffecd0615b85e080a828d32db7821c } this.world.timings.chunkTicks.startTiming(); // Spigot // Paper -@@ -772,15 +776,15 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -782,15 +786,15 @@ public class ChunkProviderServer extends IChunkProvider { } } }); @@ -196,7 +196,7 @@ index f741a034e8eae0a250aa16b26e56f173c88a9769..04ffecd0615b85e080a828d32db7821c } this.playerChunkMap.g(); -@@ -906,7 +910,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -916,7 +920,7 @@ public class ChunkProviderServer extends IChunkProvider { @Override protected void executeTask(Runnable runnable) { @@ -290,10 +290,10 @@ index ee42e1dfa493c3d7f5af8cc7b8e17e80fcb32b71..68dc7cdfbca341234245d0b8c1643f56 ++k; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c38667ba09c26 100644 +index 96a47dd1c2d3c89b4061fe96210e768c12b73ca0..98eeb2a4a09e7653a8d050df5b1c8a1d457b1e94 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -395,7 +395,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -429,7 +429,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke // CraftBukkit end public void entityBaseTick() { @@ -302,7 +302,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 if (this.isPassenger() && this.getVehicle().dead) { this.stopRiding(); } -@@ -448,7 +448,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -482,7 +482,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } this.justCreated = false; @@ -311,7 +311,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 } // Paper start -@@ -563,7 +563,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -597,7 +597,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } } @@ -320,7 +320,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 if (this.y.g() > 1.0E-7D) { vec3d = vec3d.h(this.y); this.y = Vec3D.a; -@@ -572,7 +572,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -606,7 +606,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof EntityItem) && vec3d == getMot() && enummovetype == EnumMoveType.SELF) { setMot(Vec3D.a); @@ -329,7 +329,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 return; } // Paper end -@@ -585,8 +585,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -619,8 +619,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.recalcPosition(); } @@ -340,7 +340,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 this.positionChanged = !MathHelper.b(vec3d.x, vec3d1.x) || !MathHelper.b(vec3d.z, vec3d1.z); this.v = vec3d.y != vec3d1.y; this.onGround = this.v && vec3d.y < 0.0D; -@@ -708,7 +708,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -742,7 +742,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.fireTicks = -this.getMaxFireTicks(); } @@ -349,7 +349,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 } } -@@ -2209,7 +2209,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2243,7 +2243,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke if (this.af) { if ((true || this.world.getMinecraftServer().getAllowNether()) && !this.isPassenger() && this.ag++ >= i) { // CraftBukkit @@ -358,7 +358,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 this.ag = i; this.portalCooldown = this.ba(); // CraftBukkit start -@@ -2219,7 +2219,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2253,7 +2253,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.a(this.world.worldProvider.getDimensionManager().getType() == DimensionManager.NETHER ? DimensionManager.OVERWORLD : DimensionManager.NETHER); } // CraftBukkit end @@ -367,7 +367,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 } this.af = false; -@@ -2597,7 +2597,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2631,7 +2631,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public Entity teleportTo(DimensionManager dimensionmanager, BlockPosition location) { // CraftBukkit end if (!this.world.isClientSide && !this.dead) { @@ -376,7 +376,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 MinecraftServer minecraftserver = this.getMinecraftServer(); DimensionManager dimensionmanager1 = this.dimension; WorldServer worldserver = minecraftserver.getWorldServer(dimensionmanager1); -@@ -2610,7 +2610,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2644,7 +2644,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke // this.dimension = dimensionmanager; // this.decouple(); // CraftBukkit end @@ -385,7 +385,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 Vec3D vec3d = this.getMot(); float f = 0.0F; BlockPosition blockposition = location; // CraftBukkit -@@ -2689,7 +2689,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2723,7 +2723,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.decouple(); // CraftBukkit end @@ -394,7 +394,7 @@ index 9cb4e5a1e6eca84955948f474f92467c0681968c..b290f64fa13c2ff4c8555370c57c3866 Entity entity = this.getEntityType().a((World) worldserver1); if (entity != null) { -@@ -2708,10 +2708,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2742,10 +2742,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } this.dead = true; @@ -493,7 +493,7 @@ index 1991cee43d429574f2c0889f807e7cd090f7d7dd..bb20398abc65d3f7e54867bdf930480a } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index ad474500e2f6fd6ad6db7bf2436b74c2d9d6136a..284826897995c278c0b76a4114fad4e60309a1f9 100644 +index dfb9421a15ba1ca7b86146cb795a3ac5e9b8e15e..68504f798efe6e4e5ff2a0a7748b67b9d32601d4 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -242,7 +242,7 @@ public abstract class EntityLiving extends Entity { @@ -592,10 +592,10 @@ index ad474500e2f6fd6ad6db7bf2436b74c2d9d6136a..284826897995c278c0b76a4114fad4e6 private void n() { diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index cd8df622f02051ad997664c670447b225361bbc3..4f0ae1bc453e44b65dba50273913cf0c91c13017 100644 +index 202068314eca435abecc25b2870350c530e0fac5..b4c3dffaff5ea64d9189304c5e84c515bf40ed65 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -825,7 +825,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -826,7 +826,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { double d3 = 8.0D; float f2 = f1; @@ -604,7 +604,7 @@ index cd8df622f02051ad997664c670447b225361bbc3..4f0ae1bc453e44b65dba50273913cf0c if (worldserver1 == null) { } else // CraftBukkit - empty to fall through to null to event if (dimensionmanager1 == DimensionManager.OVERWORLD && dimensionmanager == DimensionManager.NETHER) { this.cr = this.getPositionVector(); -@@ -866,8 +866,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -867,8 +867,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end // this.setPositionRotation(d0, d1, d2, f1, f); // CraftBukkit - PlayerTeleportEvent handles position changes @@ -615,7 +615,7 @@ index cd8df622f02051ad997664c670447b225361bbc3..4f0ae1bc453e44b65dba50273913cf0c double d4 = Math.min(-2.9999872E7D, worldserver1.getWorldBorder().c() + 16.0D); double d5 = Math.min(-2.9999872E7D, worldserver1.getWorldBorder().d() + 16.0D); double d6 = Math.min(2.9999872E7D, worldserver1.getWorldBorder().e() - 16.0D); -@@ -938,7 +938,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -939,7 +939,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end } @@ -663,10 +663,10 @@ index a353f3d5fa5a5f54335f73584589de3f5cb20d3e..5f976a17c7aa36286ee1132597e480f5 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 63865f767b58e71180f1d5f01dddba5e8e4a346c..82aa50bf85b18599cf72ca1fbe59eceeebc1dc61 100644 +index df35fb8065bd0a367e2dbad75e0adca611cad6f1..fba422d39d0e4dc8a1f2fe309a4aea506d68ca1e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -933,18 +933,18 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit // Paper - move down //MinecraftServer.LOGGER.debug("Autosave started"); // Paper serverAutoSave = (autosavePeriod > 0 && this.ticks % autosavePeriod == 0); // Paper @@ -709,7 +709,7 @@ index 63865f767b58e71180f1d5f01dddba5e8e4a346c..82aa50bf85b18599cf72ca1fbe59ecee if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // Paper this.playerList.savePlayers(); }// Paper -@@ -1164,11 +1164,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 100) { // Spigot -@@ -1180,8 +1180,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 0; // Paper TileEntityHopper.skipHopperEvents = worldserver.paperConfig.disableHopperMoveEvents || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper if (true || worldserver.worldProvider.getDimensionManager() == DimensionManager.OVERWORLD || this.getAllowNether()) { // CraftBukkit @@ -771,7 +778,7 @@ index 63865f767b58e71180f1d5f01dddba5e8e4a346c..82aa50bf85b18599cf72ca1fbe59ecee /* Drop global time updates if (this.ticks % 20 == 0) { this.methodProfiler.enter("timeSync"); -@@ -1268,7 +1272,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant c() { diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index c38d31fafee81904ecfa43b90f75a6c8f5fd2ede..e230087620c23f87d16cd021875ad9edc3e0982e 100644 +index 12639dfb94599233e24a0a8b77bc88de81b65e9b..f8ad08cccf25ef26759231c3d26b71d33d010eb8 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -537,20 +537,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -1000,7 +1007,7 @@ index 3f1aa5ced697490b5481ba992cf5af5dc98b8166..a7f2dee2c424b5da66a7c86319f6fa3a this.h.clear(); this.g.clear(); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 839ddb14efe621c0fdd4d43c03084a9d49683997..11629c4ce8b7e3924ae7cd44a3c03e1898142de9 100644 +index 8d043de794d8ce13ed7efef88cfa93e3bc9b57f8..75605d44bc4c051a7afa327a8749a0a67790b165 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -378,9 +378,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -1048,9 +1055,9 @@ index 839ddb14efe621c0fdd4d43c03084a9d49683997..11629c4ce8b7e3924ae7cd44a3c03e18 - gameprofilerfiller.exit(); + // gameprofilerfiller.exit(); // Akarin - remove caller } catch (Throwable throwable) { + if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent tile entity and entity crashes - String msg = "TileEntity threw exception at " + tileentity.world.getWorld().getName() + ":" + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ(); -@@ -823,7 +827,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -824,7 +828,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { timings.tileEntityTick.stopTiming(); // Spigot timings.tileEntityPending.startTiming(); // Spigot this.tickingTileEntities = false; @@ -1059,7 +1066,7 @@ index 839ddb14efe621c0fdd4d43c03084a9d49683997..11629c4ce8b7e3924ae7cd44a3c03e18 if (!this.tileEntityListPending.isEmpty()) { for (int i = 0; i < this.tileEntityListPending.size(); ++i) { TileEntity tileentity1 = (TileEntity) this.tileEntityListPending.get(i); -@@ -856,7 +860,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -857,7 +861,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { timings.tileEntityPending.stopTiming(); // Spigot co.aikar.timings.TimingHistory.tileEntityTicks += this.tileEntityListTick.size(); // Paper @@ -1068,7 +1075,7 @@ index 839ddb14efe621c0fdd4d43c03084a9d49683997..11629c4ce8b7e3924ae7cd44a3c03e18 spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1175,7 +1179,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1203,7 +1207,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @Override public List getEntities(@Nullable Entity entity, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { @@ -1077,7 +1084,7 @@ index 839ddb14efe621c0fdd4d43c03084a9d49683997..11629c4ce8b7e3924ae7cd44a3c03e18 List list = Lists.newArrayList(); int i = MathHelper.floor((axisalignedbb.minX - 2.0D) / 16.0D); int j = MathHelper.floor((axisalignedbb.maxX + 2.0D) / 16.0D); -@@ -1196,7 +1200,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1224,7 +1228,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { } public List a(@Nullable EntityTypes entitytypes, AxisAlignedBB axisalignedbb, Predicate predicate) { @@ -1086,7 +1093,7 @@ index 839ddb14efe621c0fdd4d43c03084a9d49683997..11629c4ce8b7e3924ae7cd44a3c03e18 int i = MathHelper.floor((axisalignedbb.minX - 2.0D) / 16.0D); int j = MathHelper.f((axisalignedbb.maxX + 2.0D) / 16.0D); int k = MathHelper.floor((axisalignedbb.minZ - 2.0D) / 16.0D); -@@ -1218,7 +1222,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1246,7 +1250,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @Override public List a(Class oclass, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { @@ -1095,7 +1102,7 @@ index 839ddb14efe621c0fdd4d43c03084a9d49683997..11629c4ce8b7e3924ae7cd44a3c03e18 int i = MathHelper.floor((axisalignedbb.minX - 2.0D) / 16.0D); int j = MathHelper.f((axisalignedbb.maxX + 2.0D) / 16.0D); int k = MathHelper.floor((axisalignedbb.minZ - 2.0D) / 16.0D); -@@ -1241,7 +1245,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1269,7 +1273,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @Override public List b(Class oclass, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { diff --git a/patches/server/0013-Optimizations-for-network.patch b/patches/server/0013-Optimizations-for-network.patch index d79f1d9f0..ea2643b02 100644 --- a/patches/server/0013-Optimizations-for-network.patch +++ b/patches/server/0013-Optimizations-for-network.patch @@ -429,7 +429,7 @@ index 6dfbbc67dd9cc60355dcf5ef751cd1a5b259be6b..b23612817b653b3f9a74b9c3bff70b8c @Override diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 6d6fbf2f50159846267199f74575bedeb54c1473..fa23e838ee0243ae8dcbb3f2f0492179ee47e0c9 100644 +index 0e1703c9dac8e122074ac6369a1a88240bbc3e70..9ca3fdc9cf5df3651d9b9267806c9f4b566515cb 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -159,6 +159,8 @@ public abstract class PlayerList { diff --git a/patches/server/0014-Swaps-the-predicate-order-of-collision.patch b/patches/server/0014-Swaps-the-predicate-order-of-collision.patch index c51b35d96..8b070894b 100644 --- a/patches/server/0014-Swaps-the-predicate-order-of-collision.patch +++ b/patches/server/0014-Swaps-the-predicate-order-of-collision.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Swaps the predicate order of collision diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index b290f64fa13c2ff4c8555370c57c38667ba09c26..fb21da032a222d91f7840be1426e809fbd633345 100644 +index 98eeb2a4a09e7653a8d050df5b1c8a1d457b1e94..46ea798509579103726772bdd014cd59b108482a 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1403,8 +1403,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1437,8 +1437,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public void pickup(EntityHuman entityhuman) {} public void collide(Entity entity) { diff --git a/patches/server/0018-Optimize-door-interact-with-pathfinding.patch b/patches/server/0016-Optimize-door-interact-with-pathfinding.patch similarity index 100% rename from patches/server/0018-Optimize-door-interact-with-pathfinding.patch rename to patches/server/0016-Optimize-door-interact-with-pathfinding.patch diff --git a/patches/server/0016-Tuinity-Optimise-ArraySetSorted-removeIf.patch b/patches/server/0016-Tuinity-Optimise-ArraySetSorted-removeIf.patch deleted file mode 100644 index 3dcc2ff4d..000000000 --- a/patches/server/0016-Tuinity-Optimise-ArraySetSorted-removeIf.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Sotr -Date: Wed, 15 Apr 2020 02:44:07 +0700 -Subject: [PATCH] Tuinity Optimise ArraySetSorted#removeIf - -Remove iterator allocation and ensure the call is always O(n) - -diff --git a/src/main/java/net/minecraft/server/ArraySetSorted.java b/src/main/java/net/minecraft/server/ArraySetSorted.java -index 85f799a713db0c822d46b689010f9f6bd43f5280..f23ddb9e0ca41eef0dacc0e6e0072b78dfdd9e44 100644 ---- a/src/main/java/net/minecraft/server/ArraySetSorted.java -+++ b/src/main/java/net/minecraft/server/ArraySetSorted.java -@@ -11,7 +11,9 @@ public class ArraySetSorted extends AbstractSet { - - private final Comparator a; - private T[] b; -+ private final T[] getBackingArray() { return this.b; } // Akarin - OBFHELPER - private int c; -+ private final int getSize() { return this.c; } private final void setSize(int value) { this.c = value; } // Akarin - OBFHELPER - - private ArraySetSorted(int i, Comparator comparator) { - this.a = comparator; -@@ -22,6 +24,42 @@ public class ArraySetSorted extends AbstractSet { - } - } - -+ // Akarin start - backport Tuinity - optimise removeIf -+ @Override -+ public boolean removeIf(java.util.function.Predicate filter) { -+ // prev. impl used an iterator, which could be n^2 -+ int i = 0, len = this.getSize(); -+ T[] backingArray = this.getBackingArray(); -+ -+ for (;;) { -+ if (i >= len) { -+ return false; -+ } -+ if (!filter.test(backingArray[i])) { -+ ++i; -+ continue; -+ } -+ break; -+ } -+ -+ // we only want to write back to backingArray if we really need to -+ -+ int lastIndex = i; // this is where new elements are shifted to -+ -+ for (; i < len; ++i) { -+ T curr = backingArray[i]; -+ if (!filter.test(curr)) { // if test throws we're screwed -+ backingArray[lastIndex++] = curr; -+ } -+ } -+ -+ // cleanup end -+ Arrays.fill(backingArray, lastIndex, len, null); -+ this.setSize(lastIndex); -+ return true; -+ } -+ // Akarin end - backport Tuinity - optimise removeIf -+ - public static > ArraySetSorted a(int i) { - return new ArraySetSorted<>(i, (Comparator)Comparator.naturalOrder()); // Paper - decompile fix - } diff --git a/patches/server/0017-Don-t-run-entity-collision-code-if-not-needed.patch b/patches/server/0017-Don-t-run-entity-collision-code-if-not-needed.patch deleted file mode 100644 index a028b4aec..000000000 --- a/patches/server/0017-Don-t-run-entity-collision-code-if-not-needed.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Sotr -Date: Wed, 15 Apr 2020 02:49:56 +0700 -Subject: [PATCH] Don't run entity collision code if not needed - -Will not run if max entity craming is disabled and -the max collisions per entity is less than or equal to 0 - -This commit was basically referenced on Tuinity#7131da4. - -diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 284826897995c278c0b76a4114fad4e60309a1f9..c1c7e7dca3599353793bbfa4635f93554d9c737c 100644 ---- a/src/main/java/net/minecraft/server/EntityLiving.java -+++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2663,10 +2663,16 @@ public abstract class EntityLiving extends Entity { - protected void doTick() {} - - protected void collideNearby() { -+ // Akarin start - don't run getEntities if we're not going to use its result -+ if (world.paperConfig.maxCollisionsPerEntity <= 0) return; -+ -+ int i = this.world.getGameRules().getInt(GameRules.MAX_ENTITY_CRAMMING); -+ if (i <= 0) return; -+ // Akarin end - List list = this.world.getEntities(this, this.getBoundingBox(), IEntitySelector.a(this)); - - if (!list.isEmpty()) { -- int i = this.world.getGameRules().getInt(GameRules.MAX_ENTITY_CRAMMING); -+ // int i = this.world.getGameRules().getInt(GameRules.MAX_ENTITY_CRAMMING); // Akarin - moved up - int j; - - if (i > 0 && list.size() > i - 1 && this.random.nextInt(4) == 0) { diff --git a/patches/server/0019-Remove-stream-for-ender-teleport.patch b/patches/server/0017-Remove-stream-for-ender-teleport.patch similarity index 86% rename from patches/server/0019-Remove-stream-for-ender-teleport.patch rename to patches/server/0017-Remove-stream-for-ender-teleport.patch index d6534fa42..b62a167e3 100644 --- a/patches/server/0019-Remove-stream-for-ender-teleport.patch +++ b/patches/server/0017-Remove-stream-for-ender-teleport.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Remove stream for ender teleport diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index fb21da032a222d91f7840be1426e809fbd633345..6b43c41a85061058b49207d2762c2aeabc20a2c4 100644 +index 46ea798509579103726772bdd014cd59b108482a..886c7af2d70ba7224f3dcfab000223104a9a86d8 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -2842,7 +2842,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2876,7 +2876,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke WorldServer worldserver = (WorldServer) this.world; this.setPositionRotation(d0, d1, d2, this.yaw, this.pitch); @@ -17,7 +17,7 @@ index fb21da032a222d91f7840be1426e809fbd633345..6b43c41a85061058b49207d2762c2aea worldserver.chunkCheck(entity); entity.aF = true; entity.a(Entity::teleportAndSync); -@@ -3091,6 +3091,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -3125,6 +3125,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public Stream cg() { return Stream.concat(Stream.of(this), this.passengers.stream().flatMap(Entity::cg)); } diff --git a/patches/server/0020-Cache-hashcode-for-BlockPosition.patch b/patches/server/0018-Cache-hashcode-for-BlockPosition.patch similarity index 100% rename from patches/server/0020-Cache-hashcode-for-BlockPosition.patch rename to patches/server/0018-Cache-hashcode-for-BlockPosition.patch diff --git a/patches/server/0021-Remove-stream-and-simplify-operation-in-pathfinder.patch b/patches/server/0019-Remove-stream-and-simplify-operation-in-pathfinder.patch similarity index 100% rename from patches/server/0021-Remove-stream-and-simplify-operation-in-pathfinder.patch rename to patches/server/0019-Remove-stream-and-simplify-operation-in-pathfinder.patch diff --git a/patches/server/0022-Remove-a-few-more-streams.patch b/patches/server/0020-Remove-a-few-more-streams.patch similarity index 100% rename from patches/server/0022-Remove-a-few-more-streams.patch rename to patches/server/0020-Remove-a-few-more-streams.patch