From d7466e342fb998166a0d4ed08c55702e45b95fa1 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: Wed, 1 Jul 2020 21:44:23 +0800 Subject: [PATCH] Updated Upstream (Tuinity) Upstream has released updates that appears to apply and compile correctly Tuinity Changes: db8a861 Updated Upstream (Paper) cb75b52 Updated Upstream (Paper) 98e9d5b Updated Upstream (Paper) 1aa9097 Updated Upstream (Paper) 126d3cc Fix abnormally high cpu usage caused by lighting 9a88f39 Fix skull NPE eedc3fc Updated Upstream (Paper) d0e617d Updated Upstream (Paper) 15c661b Updated Upstream (Paper) --- Tuinity | 2 +- .../server/0003-Akarin-configuration.patch | 2 +- ...0011-Remove-vanilla-profiler-callers.patch | 169 ++++++++++++------ ...016-Cache-hashcode-for-BlockPosition.patch | 6 +- .../0017-Remove-a-few-more-streams.patch | 2 +- .../server/0018-Modify-default-configs.patch | 2 +- ...9-Remove-Streams-using-IntelliJ-IDEA.patch | 141 ++++++++------- 7 files changed, 193 insertions(+), 131 deletions(-) diff --git a/Tuinity b/Tuinity index 12efad68c..db8a8617c 160000 --- a/Tuinity +++ b/Tuinity @@ -1 +1 @@ -Subproject commit 12efad68c88ccd3e77ca61caa58a0ee13a4efa21 +Subproject commit db8a8617cd22377fe719dbb534c548e362b0aa00 diff --git a/patches/server/0003-Akarin-configuration.patch b/patches/server/0003-Akarin-configuration.patch index 374294a3d..151df09a8 100644 --- a/patches/server/0003-Akarin-configuration.patch +++ b/patches/server/0003-Akarin-configuration.patch @@ -274,7 +274,7 @@ index 760752eaeb07af551cd3cfd36be064c048a05d5b..8863a778a8c34513bc02e42376ebce29 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 90a2f8fea7a291cd77b6625079b8081fb3aebe2e..61520ca75eda95f9e35c89bc8945de6ae60b702a 100644 +index cce21aaf3ba8c5049334e17b238aaf44d64db5fe..6464c181bbe35c4621b3b7eac6da47dc50de4e87 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -146,6 +146,14 @@ public class Main { diff --git a/patches/server/0011-Remove-vanilla-profiler-callers.patch b/patches/server/0011-Remove-vanilla-profiler-callers.patch index 3557feb6c..a1f3ecf52 100644 --- a/patches/server/0011-Remove-vanilla-profiler-callers.patch +++ b/patches/server/0011-Remove-vanilla-profiler-callers.patch @@ -4,11 +4,42 @@ Date: Wed, 15 Apr 2020 22:18:01 +0700 Subject: [PATCH] Remove vanilla profiler callers +diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java +index a08bfb4b3b02e998d3a6f519107e522fc58496eb..bed9730542ae7c5bb010b31d587c3cc68fc2d0be 100644 +--- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java ++++ b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java +@@ -273,7 +273,7 @@ public final class PaperTickList extends TickListServer { // extend to avo + com.tuinity.tuinity.util.TickThread.softEnsureTickThread("async tick list tick"); // Tuinity - soft async catcher + final ChunkProviderServer chunkProvider = this.world.getChunkProvider(); + +- this.world.getMethodProfiler().enter("cleaning"); ++ //this.world.getMethodProfiler().enter("cleaning"); // Akarin - remove caller + this.timingCleanup.startTiming(); + + this.prepare(); +@@ -284,7 +284,7 @@ public final class PaperTickList extends TickListServer { // extend to avo + this.nextTick = this.world.getTime() + 1; + + this.timingCleanup.stopTiming(); +- this.world.getMethodProfiler().exitEnter("ticking"); ++ //this.world.getMethodProfiler().exitEnter("ticking"); // Akarin - remove caller + this.timingTicking.startTiming(); + + for (final NextTickListEntry toTick : this.toTickThisTick) { +@@ -317,7 +317,7 @@ public final class PaperTickList extends TickListServer { // extend to avo + } + + this.timingTicking.stopTiming(); +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + this.timingFinished.startTiming(); + + // finished ticking, actual cleanup time diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66c769da6b 100644 +index e8bf60507bacad9b333d4f074fbb62decf974c45..73545d70c2b576c22e8e6f67553d7ad07cdebdc2 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -626,9 +626,9 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -636,9 +636,9 @@ public class ChunkProviderServer extends IChunkProvider { return ifLoaded; } // Paper end @@ -20,7 +51,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 long k = ChunkCoordIntPair.pair(i, j); IChunkAccess ichunkaccess; -@@ -642,7 +642,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -652,7 +652,7 @@ public class ChunkProviderServer extends IChunkProvider { } } @@ -29,7 +60,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 CompletableFuture> completablefuture = this.getChunkFutureMainThread(i, j, chunkstatus, flag, true); // Paper if (!completablefuture.isDone()) { // Paper -@@ -718,12 +718,12 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -728,13 +728,13 @@ public class ChunkProviderServer extends IChunkProvider { this.chunkMapDistance.addTicketAtLevel(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Tuinity - prevent plugin unloads from removing our ticket if (isUrgent) this.chunkMapDistance.markUrgent(chunkcoordintpair); // Paper if (this.a(playerchunk, l)) { @@ -38,6 +69,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 - gameprofilerfiller.enter("chunkLoad"); + //gameprofilerfiller.enter("chunkLoad"); // Akarin - remove caller + chunkMapDistance.delayDistanceManagerTick = false; // Paper - ensure this is never false this.tickDistanceManager(); playerchunk = this.getChunk(k); - gameprofilerfiller.exit(); @@ -45,7 +77,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 if (this.a(playerchunk, l)) { this.chunkMapDistance.removeTicketAtLevel(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Tuinity throw (IllegalStateException) SystemUtils.c(new IllegalStateException("No chunk holder after ticket has been added")); -@@ -886,33 +886,33 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -897,33 +897,33 @@ public class ChunkProviderServer extends IChunkProvider { // CraftBukkit start - modelled on below public void purgeUnload() { @@ -86,7 +118,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 this.clearCache(); } -@@ -966,7 +966,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -977,7 +977,7 @@ public class ChunkProviderServer extends IChunkProvider { player.lastEntitySpawnRadiusSquared = (double)((range << 4) * (range << 4)); // used in isOutsideRange } // Paper end - optimize isOutisdeRange @@ -95,7 +127,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 int k = this.world.getGameRules().getInt(GameRules.RANDOM_TICK_SPEED); BlockPosition blockposition = this.world.getSpawn(); // CraftBukkit start - Other mob type spawn tick rate -@@ -977,7 +977,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -988,7 +988,7 @@ public class ChunkProviderServer extends IChunkProvider { boolean flag2 = spawnAnimalThisTick; // CraftBukkit end @@ -104,7 +136,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 this.world.timings.countNaturalMobs.startTiming(); // Paper - timings int l = this.chunkMapDistance.b(); EnumCreatureType[] aenumcreaturetype = EnumCreatureType.values(); -@@ -999,7 +999,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -1010,7 +1010,7 @@ public class ChunkProviderServer extends IChunkProvider { // Paper end this.world.timings.countNaturalMobs.stopTiming(); // Paper - timings @@ -113,7 +145,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 // Paper - replaced by above // Tuinity start - optimise chunk tick iteration this.isTickingChunks = true; -@@ -1008,18 +1008,18 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -1019,18 +1019,18 @@ public class ChunkProviderServer extends IChunkProvider { if (playerchunk != null) { // make sure load event has been called along with the load logic we put there // Tuinity end - optimise chunk tick iteration @@ -135,7 +167,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 this.world.timings.mobSpawn.startTiming(); // Spigot EnumCreatureType[] aenumcreaturetype1 = aenumcreaturetype; int i1 = aenumcreaturetype.length; -@@ -1079,7 +1079,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -1090,7 +1090,7 @@ public class ChunkProviderServer extends IChunkProvider { } this.world.timings.mobSpawn.stopTiming(); // Spigot @@ -144,7 +176,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 } this.world.timings.chunkTicks.startTiming(); // Spigot // Paper -@@ -1105,15 +1105,15 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -1116,15 +1116,15 @@ public class ChunkProviderServer extends IChunkProvider { } } // Tuinity end - optimise chunk tick iteration @@ -163,7 +195,7 @@ index 05c5c4454a1a10ffad5e9335868f2feb4defc225..42f103efef76d061efe72a586ab5ae66 } // Tuinity start - controlled flush for entity tracker packets -@@ -1257,7 +1257,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -1268,7 +1268,7 @@ public class ChunkProviderServer extends IChunkProvider { @Override protected void executeTask(Runnable runnable) { @@ -460,7 +492,7 @@ index 5aca7a9131787415fb2edba1ebec9601e8a56d3a..f01a305083bd755369d1efe6d4183263 } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index a245cfab67835d7978b310d510d029d713460a3b..85c3dc662653c7aa7aba5913864f5f74181d5962 100644 +index 0dcd1361a3765fba4edaa7c229423a624693ae92..937a965fd2f161119729366a054cd9c115889104 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 { @@ -559,10 +591,10 @@ index a245cfab67835d7978b310d510d029d713460a3b..85c3dc662653c7aa7aba5913864f5f74 private void n() { diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 4ed4ad6bc3b4ab6702ca500dc26e889dca6ed2d7..065602dad55d2b83e27e619c83ca86ece22994e0 100644 +index 39072ebdc9e4be2bb762d81a8bd542dbdb8f6371..fc0af7cb52ecaacafe2ea1b34c6d31f0aabfb7d3 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -846,7 +846,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -851,7 +851,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { double d3 = 8.0D; float f2 = f1; @@ -571,7 +603,7 @@ index 4ed4ad6bc3b4ab6702ca500dc26e889dca6ed2d7..065602dad55d2b83e27e619c83ca86ec if (worldserver1 == null) { } else // CraftBukkit - empty to fall through to null to event if (dimensionmanager1 == DimensionManager.OVERWORLD && dimensionmanager == DimensionManager.NETHER) { this.cr = this.getPositionVector(); -@@ -887,8 +887,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -892,8 +892,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end // this.setPositionRotation(d0, d1, d2, f1, f); // CraftBukkit - PlayerTeleportEvent handles position changes @@ -582,7 +614,7 @@ index 4ed4ad6bc3b4ab6702ca500dc26e889dca6ed2d7..065602dad55d2b83e27e619c83ca86ec // Spigot start - SPIGOT-5677, MC-114796: Fix portals generating outside world border double d4 = Math.max(-2.9999872E7D, worldserver1.getWorldBorder().c() + 16.0D); double d5 = Math.max(-2.9999872E7D, worldserver1.getWorldBorder().d() + 16.0D); -@@ -961,7 +961,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -966,7 +966,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { // CraftBukkit end } @@ -629,8 +661,35 @@ index 2552f860ff7a25f74e9a0600e58cefe064fac484..00b70d7447e0db11c09f3b751e089ea0 } } +diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java +index 370841cad06121651d0c981c23f3a5e268dc3f59..c97be42dd7b4c6ea2cadcc97f47185c7f02e2cce 100644 +--- a/src/main/java/net/minecraft/server/JsonList.java ++++ b/src/main/java/net/minecraft/server/JsonList.java +@@ -168,7 +168,6 @@ public class JsonList> { + } + + public void save() throws IOException { +- Runnable runnable = () -> { // Akarin - Save json list async + this.removeStaleEntries(); // Paper - remove expired values before saving + Collection collection = this.d.values(); + String s = this.b.toJson(collection); +@@ -177,13 +176,10 @@ public class JsonList> { + try { + bufferedwriter = Files.newWriter(this.c, StandardCharsets.UTF_8); + bufferedwriter.write(s); +- } catch (IOException e) { // Akarin - Save json list async +- JsonList.LOGGER.warn("Failed to save " + this.c, e); // Akarin - Save json list async + } finally { + IOUtils.closeQuietly(bufferedwriter); + } +- }; // Akarin - Save json list async +- MCUtil.scheduleAsyncTask(runnable); // Akarin - Save json list async ++ + } + + public void load() throws FileNotFoundException { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2cb12e02e836f34ed80e93d4426bd994146e26c8..c07be72c6fc3f5acf1ac984a31f67ee170493e41 100644 +index 2cb12e02e836f34ed80e93d4426bd994146e26c8..06e1f6a0d7ee6b4119a4801ae298baaee1d2da3b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -965,15 +965,15 @@ 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 - this.methodProfiler.a(() -> { -- return worldserver.getWorldData().getName() + " " + IRegistry.DIMENSION_TYPE.getKey(worldserver.worldProvider.getDimensionManager()); -- }); -+ // Akarin - remove caller ++ java.util.function.Supplier pleaseRemoveMe = (() -> { // Akarin - remove caller + return worldserver.getWorldData().getName() + " " + IRegistry.DIMENSION_TYPE.getKey(worldserver.worldProvider.getDimensionManager()); + }); /* Drop global time updates if (this.ticks % 20 == 0) { - this.methodProfiler.enter("timeSync"); @@ -751,7 +810,7 @@ index 2cb12e02e836f34ed80e93d4426bd994146e26c8..c07be72c6fc3f5acf1ac984a31f67ee1 try { // Tuinity - replace logic -@@ -1405,17 +1403,17 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant getExecutingGoals() {return c();} // Paper - OBFHELPER diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 13f5857aedc1d47a014ff020a31ce7a84ddeffc5..fe94394239b97e534d1899afdfb6f68bbb96923e 100644 +index 34ec3b9d702fd865cf733c5608f11c927b3d6c68..4affa47c290d68d755759d2b96b46eb716515169 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -873,20 +873,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -891,20 +891,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { private static final double UNLOAD_QUEUE_RESIZE_FACTOR = 0.90; // Spigot // Paper - unload more protected void unloadChunks(BooleanSupplier booleansupplier) { @@ -885,7 +944,7 @@ index 13f5857aedc1d47a014ff020a31ce7a84ddeffc5..fe94394239b97e534d1899afdfb6f68b } private void b(BooleanSupplier booleansupplier) { -@@ -1099,7 +1099,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1117,7 +1117,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // Paper start - Async chunk io final java.util.function.BiFunction> syncLoadComplete = (chunkHolder, ioThrowable) -> { try (Timing ignored = this.world.timings.chunkLoad.startTimingIfSync()) { // Paper @@ -894,7 +953,7 @@ index 13f5857aedc1d47a014ff020a31ce7a84ddeffc5..fe94394239b97e534d1899afdfb6f68b if (ioThrowable != null) { com.destroystokyo.paper.io.IOUtil.rethrow(ioThrowable); } -@@ -1415,7 +1415,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1433,7 +1433,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } } // Paper @@ -904,7 +963,7 @@ index 13f5857aedc1d47a014ff020a31ce7a84ddeffc5..fe94394239b97e534d1899afdfb6f68b nbttagcompound = ChunkRegionLoader.saveChunk(this.world, ichunkaccess); } // Paper diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index f09b85390745379ddffcfd11501881cf66352ce7..affc380bd4092654d2674e9aa084dfb920718271 100644 +index e0da3a13b987a6c20d4745430b11534f5f9833d1..e9229a42d1c5a60f7cd40aa2233a7c55d9700670 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -195,7 +195,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -957,7 +1016,7 @@ index 3f1aa5ced697490b5481ba992cf5af5dc98b8166..af705e6c650b529c18bdd8f0c063a71c 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 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c2257bdb6 100644 +index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..665e7352d7b1f495f0d7cc4b3892382238b78ad7 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -411,9 +411,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -984,18 +1043,16 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c timings.tileEntityTick.startTiming(); // Spigot if (!this.tileEntityListUnload.isEmpty()) { // Paper start - Use alternate implementation with faster contains -@@ -816,9 +816,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -816,7 +816,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { if (this.chunkProvider.a(blockposition) && this.getWorldBorder().a(blockposition)) { try { - gameprofilerfiller.a(() -> { -- return String.valueOf(TileEntityTypes.a(tileentity.getTileType())); -- }); -+ // Akarin - remove caller ++ /*gameprofilerfiller.a*/java.util.function.Supplier pleaseRemoveMe = (() -> { // Akarin - remove caller + return String.valueOf(TileEntityTypes.a(tileentity.getTileType())); + }); tileentity.tickTimer.startTiming(); // Spigot - if (tileentity.getTileType().isValidBlock(this.getType(blockposition).getBlock())) { - ((ITickable) tileentity).tick(); -@@ -826,7 +824,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -826,7 +826,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { tileentity.v(); } @@ -1004,7 +1061,7 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c } catch (Throwable throwable) { if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent tile entity and entity crashes -@@ -863,7 +861,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -863,7 +863,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { timings.tileEntityTick.stopTiming(); // Spigot timings.tileEntityPending.startTiming(); // Spigot this.tickingTileEntities = false; @@ -1013,7 +1070,7 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c if (!this.tileEntityListPending.isEmpty()) { for (int i = 0; i < this.tileEntityListPending.size(); ++i) { TileEntity tileentity1 = (TileEntity) this.tileEntityListPending.get(i); -@@ -896,7 +894,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -896,7 +896,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { timings.tileEntityPending.stopTiming(); // Spigot co.aikar.timings.TimingHistory.tileEntityTicks += this.tileEntityListTick.size(); // Paper @@ -1022,7 +1079,7 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1254,7 +1252,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1254,7 +1254,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { } public List getEntities(@Nullable Entity entity, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate, List list) { // Tuinity end - add list parameter @@ -1031,7 +1088,7 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c int i = MathHelper.floor((axisalignedbb.minX - 2.0D) / 16.0D); int j = MathHelper.floor((axisalignedbb.maxX + 2.0D) / 16.0D); int k = MathHelper.floor((axisalignedbb.minZ - 2.0D) / 16.0D); -@@ -1274,7 +1272,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1274,7 +1274,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { } public List a(@Nullable EntityTypes entitytypes, AxisAlignedBB axisalignedbb, Predicate predicate) { @@ -1040,7 +1097,7 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c 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); -@@ -1296,7 +1294,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1296,7 +1296,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { public List getEntities(Class oclass, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { return a(oclass, axisalignedbb, predicate); } // Paper - OBFHELPER @Override public List a(Class oclass, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { @@ -1049,7 +1106,7 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c 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); -@@ -1319,7 +1317,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -1319,7 +1319,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @Override public List b(Class oclass, AxisAlignedBB axisalignedbb, @Nullable Predicate predicate) { @@ -1059,7 +1116,7 @@ index 655e0b5e52e22a1ac1ff3718ad5ab3ab61ef7e41..fbde4fd656e8da0dccabca3872f96c7c int j = MathHelper.f((axisalignedbb.maxX + 2.0D) / 16.0D); int k = MathHelper.floor((axisalignedbb.minZ - 2.0D) / 16.0D); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index c6509ad99d26f718b2e1fc89d874d4b0536d1781..a89426cb36b446c762b2f11143ed51356bddb633 100644 +index 24cd10c960a5460aef769d2937d02e7921dec9ce..1a6fa98a79910c74f121ca844424b3df0ab2e20a 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -727,12 +727,12 @@ public class WorldServer extends World { @@ -1231,9 +1288,9 @@ index c6509ad99d26f718b2e1fc89d874d4b0536d1781..a89426cb36b446c762b2f11143ed5135 - gameprofilerfiller.exit(); + //gameprofilerfiller.exit(); // Akarin - remove caller timings.chunkTicksBlocks.stopTiming(); // Paper + getChunkProvider().getLightEngine().queueUpdate(); // Paper // Paper end - } -@@ -1254,15 +1254,13 @@ public class WorldServer extends World { +@@ -1255,15 +1255,15 @@ public class WorldServer extends World { entity.lastPitch = entity.pitch; if (entity.inChunk) { ++entity.ticksLived; @@ -1241,10 +1298,10 @@ index c6509ad99d26f718b2e1fc89d874d4b0536d1781..a89426cb36b446c762b2f11143ed5135 + //GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); // Akarin - remove caller - gameprofilerfiller.a(() -> { -- return IRegistry.ENTITY_TYPE.getKey(entity.getEntityType()).toString(); -- }); ++ /*gameprofilerfiller.a*/java.util.function.Supplier pleaseRemoveMe = (() -> { // Akarin - remove caller + return IRegistry.ENTITY_TYPE.getKey(entity.getEntityType()).toString(); + }); - gameprofilerfiller.c("tickNonPassenger"); -+ // Akarin - remove caller + //gameprofilerfiller.c("tickNonPassenger"); // Akarin - remove caller entity.tick(); entity.postTick(); // CraftBukkit @@ -1253,7 +1310,7 @@ index c6509ad99d26f718b2e1fc89d874d4b0536d1781..a89426cb36b446c762b2f11143ed5135 } this.chunkCheck(entity); -@@ -1295,14 +1293,12 @@ public class WorldServer extends World { +@@ -1296,14 +1296,14 @@ public class WorldServer extends World { entity1.lastPitch = entity1.pitch; if (entity1.inChunk) { ++entity1.ticksLived; @@ -1261,10 +1318,10 @@ index c6509ad99d26f718b2e1fc89d874d4b0536d1781..a89426cb36b446c762b2f11143ed5135 + //GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); // Akarin - remove caller - gameprofilerfiller.a(() -> { -- return IRegistry.ENTITY_TYPE.getKey(entity1.getEntityType()).toString(); -- }); ++ /*gameprofilerfiller.a*/java.util.function.Supplier pleaseRemoveMe = (() -> { // Akarin - remove caller + return IRegistry.ENTITY_TYPE.getKey(entity1.getEntityType()).toString(); + }); - gameprofilerfiller.c("tickPassenger"); -+ // Akarin - remove caller + //gameprofilerfiller.c("tickPassenger"); // Akarin - remove caller entity1.passengerTick(); - gameprofilerfiller.exit(); @@ -1272,7 +1329,7 @@ index c6509ad99d26f718b2e1fc89d874d4b0536d1781..a89426cb36b446c762b2f11143ed5135 } this.chunkCheck(entity1); -@@ -1323,7 +1319,7 @@ public class WorldServer extends World { +@@ -1324,7 +1324,7 @@ public class WorldServer extends World { } public void chunkCheck(Entity entity) { @@ -1281,7 +1338,7 @@ index c6509ad99d26f718b2e1fc89d874d4b0536d1781..a89426cb36b446c762b2f11143ed5135 int i = MathHelper.floor(entity.locX() / 16.0D); int j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY() / 16.0D))); // Paper - stay consistent with chunk add/remove behavior; int k = MathHelper.floor(entity.locZ() / 16.0D); -@@ -1343,7 +1339,7 @@ public class WorldServer extends World { +@@ -1344,7 +1344,7 @@ public class WorldServer extends World { } } diff --git a/patches/server/0016-Cache-hashcode-for-BlockPosition.patch b/patches/server/0016-Cache-hashcode-for-BlockPosition.patch index c3c1d18ed..e2ad1a0db 100644 --- a/patches/server/0016-Cache-hashcode-for-BlockPosition.patch +++ b/patches/server/0016-Cache-hashcode-for-BlockPosition.patch @@ -39,10 +39,10 @@ index a0450a7ddf21659c5636b3f298e6bf4f0a93fc4d..c4227ff056f906c6ea1fec0330d2db84 public int compareTo(BaseBlockPosition baseblockposition) { return this.getY() == baseblockposition.getY() ? (this.getZ() == baseblockposition.getZ() ? this.getX() - baseblockposition.getX() : this.getZ() - baseblockposition.getZ()) : this.getY() - baseblockposition.getY(); diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java -index 4c64798fbc50f4d8b08502ba865c5fde5c968e62..ba6d9c838bf7cd16ad300029521f089d48f19547 100644 +index 7e69f9fb7a1865003c1d09a7ee05c17e1e5d4445..fccd966e627e3d706b4ed12fc101545ac4d13266 100644 --- a/src/main/java/net/minecraft/server/BlockPosition.java +++ b/src/main/java/net/minecraft/server/BlockPosition.java -@@ -437,6 +437,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali +@@ -443,6 +443,7 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali this.y = j; this.z = k; // Paper end @@ -50,7 +50,7 @@ index 4c64798fbc50f4d8b08502ba865c5fde5c968e62..ba6d9c838bf7cd16ad300029521f089d return this; } -@@ -477,16 +478,19 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali +@@ -483,16 +484,19 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali public final void setX(final int x) { this.o(x); } // Paper - OBFHELPER public void o(int i) { this.x = i; // Paper change to x diff --git a/patches/server/0017-Remove-a-few-more-streams.patch b/patches/server/0017-Remove-a-few-more-streams.patch index beab31e21..18c4b61fb 100644 --- a/patches/server/0017-Remove-a-few-more-streams.patch +++ b/patches/server/0017-Remove-a-few-more-streams.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Remove a few more streams diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index 1270d88138c7d6a88614f2df2802722a93ff27a6..570c6a1af1acafc53af8fe3e85e195e47f1986ef 100644 +index e0378f486c5d191d55114701d4d519e0d0af5726..e70f4928f81a06d3c15862fc7bdc43dc5fba928e 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java @@ -188,9 +188,15 @@ public abstract class ChunkMapDistance { diff --git a/patches/server/0018-Modify-default-configs.patch b/patches/server/0018-Modify-default-configs.patch index e9aab685e..335bd0d5c 100644 --- a/patches/server/0018-Modify-default-configs.patch +++ b/patches/server/0018-Modify-default-configs.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Modify default configs diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index f0284e81db3ab7c45018de2b446f2d8296df15c3..931060b9a7261b3aa4725136141ed9b4fd71bc94 100644 +index 8444819f071b13e98ba07032520016a664b7b9bc..a349f56548ece94ec591933e13f77ed3b9f20fb7 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -202,7 +202,7 @@ public class PaperConfig { diff --git a/patches/server/0019-Remove-Streams-using-IntelliJ-IDEA.patch b/patches/server/0019-Remove-Streams-using-IntelliJ-IDEA.patch index fd3ec7a42..f6e3c23ef 100644 --- a/patches/server/0019-Remove-Streams-using-IntelliJ-IDEA.patch +++ b/patches/server/0019-Remove-Streams-using-IntelliJ-IDEA.patch @@ -147,10 +147,10 @@ index 59aec103295f747793fdc0a52eb45f4121aba921..cee2cc4c5ec3dd0627b28bfb19f38127 data.sort((Pair pair1, Pair pair2) -> { return Integer.compare(pair2.getSecond().times, pair1.getSecond().times); // reverse order diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java -index b151a13c1b9058eb057081ef8a64558028443a07..ffbf950c7f60762e372fd58686b724c986aa28da 100644 +index 293b73f4747f48dbf8b6a8453d3fc777de11588d..8a18dfcda3c785e9c8bd134f88515e077dbef7dc 100644 --- a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java +++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java -@@ -89,7 +89,9 @@ public class CraftPlayerProfile implements PlayerProfile { +@@ -91,7 +91,9 @@ public class CraftPlayerProfile implements PlayerProfile { @Override public void setProperties(Collection properties) { @@ -402,10 +402,10 @@ index ef6c85557c217f1cb7f78ffbd87c094a7fd77482..a071a1da72fba6efb568414977440455 private EnumTemperature(String s) { diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index bd7a92599b4182739aafef9eeaaf8665d2f9f954..f910b88d8532b6da00a169356bdfb52be7377c0a 100644 +index 66244a9d0e253b3709df4ae2adcd21e44ebbfc90..c8109cef9db68230ee6aab3e1caaf3c95ca3044f 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java -@@ -473,9 +473,9 @@ public class Block implements IMaterial { +@@ -474,9 +474,9 @@ public class Block implements IMaterial { public static void c(IBlockData iblockdata, World world, BlockPosition blockposition) { if (world instanceof WorldServer) { @@ -417,7 +417,7 @@ index bd7a92599b4182739aafef9eeaaf8665d2f9f954..f910b88d8532b6da00a169356bdfb52b } iblockdata.dropNaturally(world, blockposition, ItemStack.a); -@@ -483,9 +483,9 @@ public class Block implements IMaterial { +@@ -484,9 +484,9 @@ public class Block implements IMaterial { public static void dropNaturally(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity) { a(iblockdata, world, blockposition, tileentity); } public static void a(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity) { if (world instanceof WorldServer) { @@ -429,7 +429,7 @@ index bd7a92599b4182739aafef9eeaaf8665d2f9f954..f910b88d8532b6da00a169356bdfb52b } iblockdata.dropNaturally(world, blockposition, ItemStack.a); -@@ -493,9 +493,9 @@ public class Block implements IMaterial { +@@ -494,9 +494,9 @@ public class Block implements IMaterial { public static void dropItems(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity, Entity entity, ItemStack itemstack) { if (world instanceof WorldServer) { @@ -506,16 +506,16 @@ index 7cdadc6b6abd069f9a1bc000a8f116f73b90e029..fc5f6e064fb6bb766d6f693f5e4bd785 public static & INamable> BlockStateEnum of(String s, Class oclass, T... at) { diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index 570c6a1af1acafc53af8fe3e85e195e47f1986ef..87f313e958123e9615687da42d295fc0e02d6b4b 100644 +index e70f4928f81a06d3c15862fc7bdc43dc5fba928e..a26989ecca7c56a23e5cede45abb48c5af489d48 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java -@@ -294,18 +294,18 @@ public abstract class ChunkMapDistance { - - public void markAreaHighPriority(ChunkCoordIntPair center, int priority, int radius) { +@@ -296,18 +296,18 @@ public abstract class ChunkMapDistance { delayDistanceManagerTick = true; + priority = Math.min(URGENT_PRIORITY - 1, Math.max(1, priority)); + int finalPriority = priority; - MCUtil.getSpiralOutChunks(center.asPosition(), radius).forEach(coords -> { + for (ChunkCoordIntPair coords : MCUtil.getSpiralOutChunks(center.asPosition(), radius)) { - addPriorityTicket(coords, TicketType.PRIORITY, priority); + addPriorityTicket(coords, TicketType.PRIORITY, finalPriority); - }); + } delayDistanceManagerTick = false; @@ -567,7 +567,7 @@ index 20b6b58bdee872a4aaa18e3507aef2c8afd5d26e..5afbd870b2388249565659c5e759026a NibbleArray nibblearray; // block light NibbleArray nibblearray1; // sky light diff --git a/src/main/java/net/minecraft/server/ContainerGrindstone.java b/src/main/java/net/minecraft/server/ContainerGrindstone.java -index ed88e208d00f3b19b5c5916cf87513ab511a5fb1..bbc4c4304bf7663d0d23e2341e391b005ffef39f 100644 +index 83cb0cd64c81eb35fa49eecff93b40f08e0a5606..4b0ac9ba44a4e09f8d3f8cdd3597d036fc2263ee 100644 --- a/src/main/java/net/minecraft/server/ContainerGrindstone.java +++ b/src/main/java/net/minecraft/server/ContainerGrindstone.java @@ -1,5 +1,6 @@ @@ -577,7 +577,7 @@ index ed88e208d00f3b19b5c5916cf87513ab511a5fb1..bbc4c4304bf7663d0d23e2341e391b00 import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; -@@ -234,9 +235,15 @@ public class ContainerGrindstone extends Container { +@@ -243,9 +244,15 @@ public class ContainerGrindstone extends Container { } itemstack1.setCount(j); @@ -805,7 +805,7 @@ index db43ac1cc4ae959a432eedd3efee891b4e141c7f..480c930714328c2789a3641d94761107 this.world.addEntity(entityareaeffectcloud); } else entityareaeffectcloud.die(); // Paper diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java -index aecdaacfc7da560759bc513680d76f55820d5046..f4552fc267cbfedf07dfced063ed7ba924a6621c 100644 +index 7daebfdab5c6e258d3e426643c0dbd374774ff5d..e87f9d6f27835635dd9307a1661af2aceef0f4c6 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -464,9 +464,9 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { @@ -1348,25 +1348,26 @@ index ea60880c6f15b1a39579896d78cf641563621aa4..babe0537e10a131c8f2ea5636e8d0e99 } diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java -index 72cc711d6c2645aed44f208ee44f8702d64c5af8..02560ecd4b305f04df6c3765a8913b69efe84c22 100644 +index 9ef39f1f51f9960865f6418115b08e8d7de86509..4a24ec468a98fe44ec5931a91881f73232bbb9a2 100644 --- a/src/main/java/net/minecraft/server/LightEngineThreaded.java +++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java -@@ -266,9 +266,13 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { - } +@@ -288,10 +288,14 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { + int i = Math.min(queue.size(), 4); + boolean ran = false; + while (i-- > 0 && queue.poll(pre, post)) { +- pre.forEach(Runnable::run); ++ for (Runnable runnable1 : pre) { ++ runnable1.run(); ++ } + pre.clear(); + super.a(Integer.MAX_VALUE, true, true); +- post.forEach(Runnable::run); ++ for (Runnable runnable : post) { ++ runnable.run(); ++ } + post.clear(); + ran = true; } - -- pre.forEach(entry -> entry.getSecond().run()); -+ for (Pair updateRunnablePair : pre) { -+ updateRunnablePair.getSecond().run(); -+ } - super.a(Integer.MAX_VALUE, true, true); -- post.forEach(entry -> entry.getSecond().run()); -+ for (Pair entry : post) { -+ entry.getSecond().run(); -+ } - - if (!urgent && this.c.isEmpty()) nextNonUrgent = System.nanoTime() + (50 * 1000000); - // Paper end diff --git a/src/main/java/net/minecraft/server/LootTable.java b/src/main/java/net/minecraft/server/LootTable.java index 666bd34eab4847cb698596b59e1c07569bcdb38c..e9ce7f4b26e72863ab92974e36b0f835f340c4c0 100644 --- a/src/main/java/net/minecraft/server/LootTable.java @@ -1490,7 +1491,7 @@ index 973bdd25ca45ee6a11803e3abb8c0ff22d658554..b20a4a0edb5f5958361cc4c12bee0584 private MCUtil() {} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c07be72c6fc3f5acf1ac984a31f67ee170493e41..c5b059ea3b8bc79ee5fffec5cedc281a1911d730 100644 +index 06e1f6a0d7ee6b4119a4801ae298baaee1d2da3b..7831f1d87df7cc19e1cc428a894dbee43c0e3208 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -473,7 +473,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant list1 = Lists.newArrayList(); @@ -1543,7 +1544,7 @@ index c07be72c6fc3f5acf1ac984a31f67ee170493e41..c5b059ea3b8bc79ee5fffec5cedc281a CompletableFuture completablefuture = this.ae.a(this.executorService, this, list1, MinecraftServer.i); this.awaitTasks(completablefuture::isDone); -@@ -2068,15 +2078,15 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant> { +@@ -442,12 +442,12 @@ public class NetworkManager extends SimpleChannelInboundHandler> { // Paper start public void clearPacketQueue() { EntityPlayer player = getPlayer(); @@ -1639,7 +1640,7 @@ index f49fc9c8f24e0b1f0dc11a213605a3e91f4f66a9..8d525009dc80f43b032b57f194e57be2 //this.e.enter("goalUpdate"); // Akarin - remove caller // Paper start - remove streams from pathfindergoalselector diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index 246ab9914a28cc3e25e1666b93de4f63e23d3550..8fa70f1af1d91b2724c3e15c6d6a4be488fb87d2 100644 +index 44d6f2debc767cb0576b17ed3e0711baa4361001..e7bfefafb70df7cca594db433a83e73e743629e5 100644 --- a/src/main/java/net/minecraft/server/PlayerChunk.java +++ b/src/main/java/net/minecraft/server/PlayerChunk.java @@ -2,6 +2,7 @@ package net.minecraft.server; @@ -1664,13 +1665,13 @@ index 246ab9914a28cc3e25e1666b93de4f63e23d3550..8fa70f1af1d91b2724c3e15c6d6a4be4 // Paper end this.oldTicketLevel = this.ticketLevel; diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de3552383b15c 100644 +index 4affa47c290d68d755759d2b96b46eb716515169..89e510c3fa06d33bfae457988d4f4f9b4b9a6c9e 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -463,50 +463,50 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - double playerChunkX = MathHelper.floor(player.locX()) >> 4; +@@ -474,53 +474,53 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { double playerChunkZ = MathHelper.floor(player.locZ()) >> 4; pos.setValues(player.locX(), 0, player.locZ()); + double twoThirdModifier = 2D / 3D; - MCUtil.getSpiralOutChunks(pos, Math.min(6, viewDistance)).forEach(coord -> { - if (shouldSkipPrioritization(coord)) return; + for (ChunkCoordIntPair coordIntPair : MCUtil.getSpiralOutChunks(pos, Math.min(6, viewDistance))) { @@ -1680,16 +1681,16 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 + double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coordIntPair.x, 0, coordIntPair.z); // Prioritize immediate if (dist <= 4 * 4) { -- chunkDistanceManager.markHighPriority(coord, (int) (27 - Math.sqrt(dist))); +- updateChunkPriorityMap(priorities, coord.pair(), (int) (27 - Math.sqrt(dist))); - return; -+ chunkDistanceManager.markHighPriority(coordIntPair, (int) (27 - Math.sqrt(dist))); ++ updateChunkPriorityMap(priorities, coordIntPair.pair(), (int) (27 - Math.sqrt(dist))); + continue; } // Prioritize nearby chunks -- chunkDistanceManager.markHighPriority(coord, (int) (16 - Math.sqrt(dist*(2D/3D)))); +- updateChunkPriorityMap(priorities, coord.pair(), (int) (20 - Math.sqrt(dist) * twoThirdModifier)); - }); -+ chunkDistanceManager.markHighPriority(coordIntPair, (int) (16 - Math.sqrt(dist * (2D / 3D)))); ++ updateChunkPriorityMap(priorities, coordIntPair.pair(), (int) (20 - Math.sqrt(dist) * twoThirdModifier)); + } // Prioritize Frustum near 3 @@ -1700,9 +1701,11 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 + for (ChunkCoordIntPair chunkCoordIntPair : MCUtil.getSpiralOutChunks(pos, Math.min(5, viewDistance))) { + if (shouldSkipPrioritization(chunkCoordIntPair)) continue; -- chunkDistanceManager.markHighPriority(coord, 26); +- double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z); +- updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier)); - }); -+ chunkDistanceManager.markHighPriority(chunkCoordIntPair, 26); ++ double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, chunkCoordIntPair.x, 0, chunkCoordIntPair.z); ++ updateChunkPriorityMap(priorities, chunkCoordIntPair.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier)); + } // Prioritize Frustum near 5 @@ -1714,7 +1717,8 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 + for (ChunkCoordIntPair coord : MCUtil.getSpiralOutChunks(pos, 4)) { + if (shouldSkipPrioritization(coord)) continue; - chunkDistanceManager.markHighPriority(coord, 20); + double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z); + updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier)); - }); + } } @@ -1729,13 +1733,14 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 - return; + continue; } - chunkDistanceManager.markHighPriority(coord, 15); + double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z); + updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier)); - }); + } } pos.close(); -@@ -828,7 +828,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -846,7 +846,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { protected void save(boolean flag) { Long2ObjectLinkedOpenHashMap visibleChunks = this.getVisibleChunks(); // Paper remove clone of visible Chunks unless saving off main thread (watchdog kill) if (flag) { @@ -1751,7 +1756,7 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 MutableBoolean mutableboolean = new MutableBoolean(); do { -@@ -857,15 +864,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -875,15 +882,17 @@ 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 { @@ -1776,7 +1781,7 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 } } -@@ -955,8 +964,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -973,8 +982,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { return; } @@ -1796,7 +1801,7 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 } } catch (IOException ex) { ex.printStackTrace(); -@@ -1105,7 +1123,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1123,7 +1141,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } this.getVillagePlace().loadInData(chunkcoordintpair, chunkHolder.poiData); @@ -1807,7 +1812,7 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 // Paper - async load completes this // Paper end -@@ -1285,7 +1305,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1303,7 +1323,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } if (list != null) { @@ -1818,7 +1823,7 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 } } -@@ -1409,8 +1431,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1427,8 +1449,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { return false; } @@ -1838,7 +1843,7 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 } } -@@ -1518,7 +1549,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1536,7 +1567,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // CraftBukkit - decompile error csvwriter.a(chunkcoordintpair.x, chunkcoordintpair.z, playerchunk.getTicketLevel(), optional.isPresent(), optional.map(IChunkAccess::getChunkStatus).orElse(null), optional1.map(Chunk::getState).orElse(null), a(playerchunk.c()), a(playerchunk.a()), a(playerchunk.b()), this.chunkDistanceManager.c(entry.getLongKey()), !this.isOutsideOfRange(chunkcoordintpair), optional1.map((chunk) -> { @@ -1853,7 +1858,7 @@ index fe94394239b97e534d1899afdfb6f68bbb96923e..b68422e5d02aa2aa799cb5458c1de355 return chunk.getTileEntities().size(); }).orElse(0)); diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index affc380bd4092654d2674e9aa084dfb920718271..0d4d28f8a939fdce42efa777742b1d8fc38da67a 100644 +index e9229a42d1c5a60f7cd40aa2233a7c55d9700670..24d31d95cefffc26f8e4d4d2793340a580fbebb5 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -603,7 +603,9 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -2347,7 +2352,7 @@ index 2f1be1995d1a188da5be792abd7ac6f126332f49..bae3f216d056cb64fde49e4ca592631e private boolean shouldUseVanillaMap() { return mapView.getRenderers().size() == 1 && mapView.getRenderers().get(0).getClass() == org.bukkit.craftbukkit.map.CraftMapRenderer.class; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index a89426cb36b446c762b2f11143ed51356bddb633..de93970754beae386c551ce90d340169a93a5a75 100644 +index 1a6fa98a79910c74f121ca844424b3df0ab2e20a..cbfe1550c701c457628470cb9d46864763ccb5e9 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -22,15 +22,7 @@ import java.io.BufferedWriter; @@ -2439,7 +2444,7 @@ index a89426cb36b446c762b2f11143ed51356bddb633..de93970754beae386c551ce90d340169 } // Paper start - optimise random block ticking -@@ -1841,25 +1847,21 @@ public class WorldServer extends World { +@@ -1846,25 +1852,21 @@ public class WorldServer extends World { // Spigot start if ( entity instanceof EntityHuman ) { @@ -2473,7 +2478,7 @@ index a89426cb36b446c762b2f11143ed51356bddb633..de93970754beae386c551ce90d340169 } // Spigot end // Spigot Start -@@ -2351,12 +2353,12 @@ public class WorldServer extends World { +@@ -2356,12 +2358,12 @@ public class WorldServer extends World { chunkproviderserver.addTicket(TicketType.START, new ChunkCoordIntPair(spawn.add(-radiusInBlocks, 0, z)), 1, Unit.INSTANCE); // level 32 } @@ -2528,7 +2533,7 @@ index 7f952a860c524aafea7094048a102478d8c2beec..2d7a4c88f18cd655cbe15e25819ca43d File file = getCommandsConfigFile(); try { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 1ee5ce50bf2708b01c958558d416848547e4c9b1..bfef2f1c6510d83c73d33627fa4e8e9b984dc1cb 100644 +index 32d4aa0f470e6b005fd96f3bea1bcb0cf6711966..e8f9f677a706c5c8ff6cd6b946bbb4bc508b4162 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -456,12 +456,28 @@ public class CraftWorld implements World { @@ -2562,7 +2567,7 @@ index 1ee5ce50bf2708b01c958558d416848547e4c9b1..bfef2f1c6510d83c73d33627fa4e8e9b } @Override -@@ -2466,7 +2482,12 @@ public class CraftWorld implements World { +@@ -2465,7 +2481,12 @@ public class CraftWorld implements World { @Override public List getRaids() { PersistentRaid persistentRaid = world.getPersistentRaid(); @@ -2577,7 +2582,7 @@ index 1ee5ce50bf2708b01c958558d416848547e4c9b1..bfef2f1c6510d83c73d33627fa4e8e9b @Override diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index 197c2ffab0015decc89bf32679a7a9ba6ecea5bc..a5800b87fc9930c70bb02a06e746fc1979dcd52f 100644 +index 0ba3d963c5d434f58ff26d68f28177ca2a326fcc..74766fcf3770a7757b12826838a366807ffc72bd 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -1,6 +1,8 @@ @@ -2592,7 +2597,7 @@ index 197c2ffab0015decc89bf32679a7a9ba6ecea5bc..a5800b87fc9930c70bb02a06e746fc19 @@ -661,8 +663,12 @@ public class CraftBlock implements Block { // Modelled off EntityHuman#hasBlock - if (iblockdata.getMaterial().isAlwaysDestroyable() || nms.canDestroySpecialBlock(iblockdata)) { + if (item == null || iblockdata.getMaterial().isAlwaysDestroyable() || nms.canDestroySpecialBlock(iblockdata)) { - return net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms) - .stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList()); + List list = new ArrayList<>(); @@ -2679,7 +2684,7 @@ index f34461460049a80c5ff57805927053a36a4db426..3c610a889f371f54b0f456266d14538f return results; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index 19409c7a25c48f3f72f7e0b6306b81aa90b38f7c..703363bd3e2c8c52e07f7fde5e2673072e950362 100644 +index d24a892c498d7ee58741c9358748a117f01d8a8d..85a7406048a5d44b8e26d7949feacb7ec12c575c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java @@ -3,6 +3,8 @@ package org.bukkit.craftbukkit.entity; @@ -2709,10 +2714,10 @@ index 19409c7a25c48f3f72f7e0b6306b81aa90b38f7c..703363bd3e2c8c52e07f7fde5e267307 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ce8d7877adcc4635ebf2f5743c8b02aa95691102..d8ce0227de0d1795009963a677d6497f8d76535d 100644 +index a4cd6c404c2a8d526c4673695aadd001f2b4516f..10341846f022cce626e4b9446dbd488942fa0d01 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1708,7 +1708,11 @@ public class CraftEventFactory { +@@ -1711,7 +1711,11 @@ public class CraftEventFactory { Entity entity = lootInfo.getContextParameter(LootContextParameters.THIS_ENTITY); NamespacedKey key = CraftNamespacedKey.fromMinecraft(world.getHandle().getMinecraftServer().getLootTableRegistry().lootTableToKey.get(lootTable)); CraftLootTable craftLootTable = new CraftLootTable(key, lootTable);