From ff085b8e8e3ba212880e2651e7bda753a148ded7 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Fri, 12 Jul 2019 05:04:38 +0100 Subject: [PATCH] Improve timings around chunk loading Timers such as syncChunkLoad are hit persistently due to changes in how this mechanism works which impacts the usablity of timings --- Spigot-Server-Patches/0009-Timings-v2.patch | 122 ++++++++++++------ ...sition-the-first-time-an-entity-is-s.patch | 10 +- .../0054-Add-exception-reporting-event.patch | 28 ++-- ...7-PlayerNaturallySpawnCreaturesEvent.patch | 6 +- ...ies-option-to-debug-dupe-uuid-issues.patch | 14 +- ...-after-profile-lookups-if-not-needed.patch | 28 ++-- .../0390-Duplicate-UUID-Resolve-Option.patch | 16 +-- ...tually-Limit-Natural-Spawns-To-Limit.patch | 8 +- ...401-Fix-World-isChunkGenerated-calls.patch | 8 +- ...Status-cache-when-saving-protochunks.patch | 6 +- Spigot-Server-Patches/0406-Anti-Xray.patch | 8 +- 11 files changed, 151 insertions(+), 103 deletions(-) diff --git a/Spigot-Server-Patches/0009-Timings-v2.patch b/Spigot-Server-Patches/0009-Timings-v2.patch index d1892cf5bf..9eeb9d4913 100644 --- a/Spigot-Server-Patches/0009-Timings-v2.patch +++ b/Spigot-Server-Patches/0009-Timings-v2.patch @@ -1,4 +1,4 @@ -From 9e00b0ab023fe548a1acb5c67f03ce7bfbc18ca0 Mon Sep 17 00:00:00 2001 +From 3eed1e9f0fc42e4d7cc5ef8e2943d2f5975d2cee Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 3 Mar 2016 04:00:11 -0600 Subject: [PATCH] Timings v2 @@ -6,7 +6,7 @@ Subject: [PATCH] Timings v2 diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java new file mode 100644 -index 0000000000..3f9fb6f906 +index 000000000..3f9fb6f90 --- /dev/null +++ b/src/main/java/co/aikar/timings/MinecraftTimings.java @@ -0,0 +1,133 @@ @@ -145,10 +145,10 @@ index 0000000000..3f9fb6f906 +} diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java new file mode 100644 -index 0000000000..d5d3b2a20c +index 000000000..366de6665 --- /dev/null +++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java -@@ -0,0 +1,105 @@ +@@ -0,0 +1,107 @@ +package co.aikar.timings; + +import net.minecraft.server.World; @@ -193,6 +193,7 @@ index 0000000000..d5d3b2a20c + public final Timing syncChunkLoadStructuresTimer; + public final Timing syncChunkLoadPostTimer; + public final Timing syncChunkLoadPopulateTimer; ++ public final Timing chunkAwait; + public final Timing chunkLoadLevelTimer; + public final Timing chunkGeneration; + public final Timing chunkIOStage1; @@ -235,6 +236,7 @@ index 0000000000..d5d3b2a20c + syncChunkLoadStructuresTimer = Timings.ofSafe(name + "chunkLoad - recreateStructures"); + syncChunkLoadPostTimer = Timings.ofSafe(name + "chunkLoad - Post"); + syncChunkLoadPopulateTimer = Timings.ofSafe(name + "chunkLoad - Populate"); ++ chunkAwait = Timings.ofSafe(name + "chunkAwait"); + chunkLoadLevelTimer = Timings.ofSafe(name + "chunkLoad - Load Level"); + chunkGeneration = Timings.ofSafe(name + "chunkGeneration"); + chunkIOStage1 = Timings.ofSafe(name + "ChunkIO Stage 1 - DiskIO"); @@ -255,7 +257,7 @@ index 0000000000..d5d3b2a20c + } +} diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 5518ec1e54..0c65afccfd 100644 +index 5518ec1e5..0c65afccf 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -14,11 +14,14 @@ import java.util.concurrent.TimeUnit; @@ -302,7 +304,7 @@ index 5518ec1e54..0c65afccfd 100644 + } } diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index ee9a571bf2..4b9e51b30f 100644 +index ee9a571bf..4b9e51b30 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java @@ -31,6 +31,15 @@ public class Block implements IMaterial { @@ -322,7 +324,7 @@ index ee9a571bf2..4b9e51b30f 100644 private final float frictionFactor; protected final BlockStateList blockStateList; diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index f3c5c729ff..ab9b7bbd31 100644 +index f3c5c729f..ab9b7bbd3 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -573,6 +573,7 @@ public class Chunk implements IChunkAccess { @@ -342,10 +344,26 @@ index f3c5c729ff..ab9b7bbd31 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 710d40b43a..22aba06270 100644 +index 710d40b43..9b3b598d8 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -301,7 +301,9 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -137,11 +137,13 @@ public class ChunkProviderServer extends IChunkProvider { + } + } + +- world.timings.syncChunkLoadTimer.startTiming(); // Spigot + CompletableFuture> completablefuture = this.getChunkFutureMainThread(i, j, chunkstatus, flag); + ++ if (!completablefuture.isDone()) { // Paper ++ this.world.timings.chunkAwait.startTiming(); // Paper + this.serverThreadQueue.awaitTasks(completablefuture::isDone); +- world.timings.syncChunkLoadTimer.stopTiming(); // Spigot ++ this.world.timings.chunkAwait.stopTiming(); // Paper ++ } // Paper + ichunkaccess = (IChunkAccess) ((Either) completablefuture.join()).map((ichunkaccess1) -> { + return ichunkaccess1; + }, (playerchunk_failure) -> { +@@ -301,7 +303,9 @@ public class ChunkProviderServer extends IChunkProvider { public void save(boolean flag) { this.tickDistanceManager(); @@ -355,7 +373,7 @@ index 710d40b43a..22aba06270 100644 } @Override -@@ -417,9 +419,9 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -417,9 +421,9 @@ public class ChunkProviderServer extends IChunkProvider { this.world.getMethodProfiler().exit(); } @@ -367,7 +385,7 @@ index 710d40b43a..22aba06270 100644 } } }); -@@ -432,9 +434,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -432,9 +436,7 @@ public class ChunkProviderServer extends IChunkProvider { this.world.getMethodProfiler().exit(); } @@ -378,7 +396,7 @@ index 710d40b43a..22aba06270 100644 @Override diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index 1894509df8..ad3ade3c5c 100644 +index 1894509df..ad3ade3c5 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java @@ -1,5 +1,6 @@ @@ -416,7 +434,7 @@ index 1894509df8..ad3ade3c5c 100644 } diff --git a/src/main/java/net/minecraft/server/CustomFunction.java b/src/main/java/net/minecraft/server/CustomFunction.java -index 12885cbd60..49de6e997a 100644 +index 12885cbd6..49de6e997 100644 --- a/src/main/java/net/minecraft/server/CustomFunction.java +++ b/src/main/java/net/minecraft/server/CustomFunction.java @@ -13,12 +13,22 @@ public class CustomFunction { @@ -443,7 +461,7 @@ index 12885cbd60..49de6e997a 100644 return this.b; } diff --git a/src/main/java/net/minecraft/server/CustomFunctionData.java b/src/main/java/net/minecraft/server/CustomFunctionData.java -index 8346778383..8bc74add6d 100644 +index 834677838..8bc74add6 100644 --- a/src/main/java/net/minecraft/server/CustomFunctionData.java +++ b/src/main/java/net/minecraft/server/CustomFunctionData.java @@ -101,7 +101,7 @@ public class CustomFunctionData implements IResourcePackListener { @@ -456,7 +474,7 @@ index 8346778383..8bc74add6d 100644 int j = 0; CustomFunction.c[] acustomfunction_c = customfunction.b(); diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index c088ff9692..c7ea4ec4fe 100644 +index c088ff969..c7ea4ec4f 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -19,6 +19,8 @@ import java.util.Collections; @@ -544,7 +562,7 @@ index c088ff9692..c7ea4ec4fe 100644 } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index b7c07b4166..ea6cf39baa 100644 +index b7c07b416..ea6cf39ba 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -29,7 +29,8 @@ import org.bukkit.command.CommandSender; @@ -583,7 +601,7 @@ index b7c07b4166..ea6cf39baa 100644 protected Vec3D a(Vec3D vec3d, EnumMoveType enummovetype) { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index e0b12e1fd7..30aa4f56d3 100644 +index e0b12e1fd..30aa4f56d 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -35,7 +35,7 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -659,7 +677,7 @@ index e0b12e1fd7..30aa4f56d3 100644 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f9ec2b0686..d0419119b3 100644 +index f9ec2b068..d0419119b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -54,7 +54,7 @@ import org.bukkit.craftbukkit.CraftServer; @@ -779,7 +797,7 @@ index f9ec2b0686..d0419119b3 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 9381734a3a..ef31a269e4 100644 +index b5ba3fcb0..85da52e2c 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -1,7 +1,9 @@ @@ -792,7 +810,21 @@ index 9381734a3a..ef31a269e4 100644 import com.google.common.collect.Lists; import com.google.common.collect.Queues; import com.google.common.collect.Sets; -@@ -477,7 +479,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -439,8 +441,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + + private CompletableFuture> f(ChunkCoordIntPair chunkcoordintpair) { + return CompletableFuture.supplyAsync(() -> { +- try { +- NBTTagCompound nbttagcompound = this.readChunkData(chunkcoordintpair); ++ try (Timing ignored = this.world.timings.syncChunkLoadTimer.startTimingIfSync()) { // Paper ++ NBTTagCompound nbttagcompound; // Paper ++ try (Timing ignored2 = this.world.timings.chunkIOStage1.startTimingIfSync()) { // Paper ++ nbttagcompound = this.readChunkData(chunkcoordintpair); ++ } + + if (nbttagcompound != null) { + boolean flag = nbttagcompound.hasKeyOfType("Level", 10) && nbttagcompound.getCompound("Level").hasKeyOfType("Status", 8); +@@ -477,7 +482,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { }); return completablefuture.thenComposeAsync((either) -> { @@ -801,7 +833,23 @@ index 9381734a3a..ef31a269e4 100644 try { CompletableFuture> completablefuture1 = chunkstatus.a(this.world, this.chunkGenerator, this.definedStructureManager, this.lightEngine, (ichunkaccess) -> { return this.c(playerchunk); -@@ -967,6 +969,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -530,6 +535,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) -> { ++ try (Timing ignored = world.timings.chunkIOStage2.startTimingIfSync()) { // Paper + ChunkCoordIntPair chunkcoordintpair = playerchunk.i(); + Chunk chunk; + +@@ -574,6 +580,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + } + + return chunk; ++ } // Paper + }); + }, (runnable) -> { + Mailbox mailbox = this.mailboxMain; +@@ -967,6 +974,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { PlayerChunkMap.EntityTracker playerchunkmap_entitytracker; ObjectIterator objectiterator; @@ -809,7 +857,7 @@ index 9381734a3a..ef31a269e4 100644 for (objectiterator = this.trackedEntities.values().iterator(); objectiterator.hasNext(); playerchunkmap_entitytracker.trackerEntry.a()) { playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next(); -@@ -984,13 +987,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -984,13 +992,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { playerchunkmap_entitytracker.e = sectionposition1; } } @@ -827,7 +875,7 @@ index 9381734a3a..ef31a269e4 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index d40600c103..fa37c19c69 100644 +index d40600c10..fa37c19c6 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -58,6 +58,7 @@ import org.bukkit.inventory.CraftingInventory; @@ -882,7 +930,7 @@ index d40600c103..fa37c19c69 100644 // this.minecraftServer.getCommandDispatcher().a(this.player.getCommandListener(), s); // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java -index cb6d50ea70..9ba03f8ed0 100644 +index cb6d50ea7..9ba03f8ed 100644 --- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java +++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java @@ -1,5 +1,8 @@ @@ -908,7 +956,7 @@ index cb6d50ea70..9ba03f8ed0 100644 throw CancelledPacketHandleException.INSTANCE; } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index ee22d6c81a..fb6b48e3fe 100644 +index ee22d6c81..fb6b48e3f 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -1,5 +1,6 @@ @@ -932,7 +980,7 @@ index ee22d6c81a..fb6b48e3fe 100644 public WhiteList getWhitelist() { diff --git a/src/main/java/net/minecraft/server/TickListServer.java b/src/main/java/net/minecraft/server/TickListServer.java -index 061730c560..c5890f5dcc 100644 +index 061730c56..c5890f5dc 100644 --- a/src/main/java/net/minecraft/server/TickListServer.java +++ b/src/main/java/net/minecraft/server/TickListServer.java @@ -28,13 +28,18 @@ public class TickListServer implements TickList { @@ -982,7 +1030,7 @@ index 061730c560..c5890f5dcc 100644 this.g.clear(); } diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index 2efaf516ff..22a8ea916a 100644 +index 2efaf516f..22a8ea916 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -9,11 +9,12 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; @@ -1001,7 +1049,7 @@ index 2efaf516ff..22a8ea916a 100644 private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); public CraftPersistentDataContainer persistentDataContainer; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 32981c4422..2f608305f7 100644 +index 32981c442..2f608305f 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1,5 +1,7 @@ @@ -1056,7 +1104,7 @@ index 32981c4422..2f608305f7 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 df518ff633..69af071e60 100644 +index df518ff63..69af071e6 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1,5 +1,7 @@ @@ -1156,7 +1204,7 @@ index df518ff633..69af071e60 100644 // CraftBukkit start - moved from MinecraftServer.saveChunks diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 64d39414ac..764e4dc772 100644 +index 39ca7b5f3..5adfd6a7b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1931,12 +1931,31 @@ public final class CraftServer implements Server { @@ -1193,7 +1241,7 @@ index 64d39414ac..764e4dc772 100644 org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java b/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java deleted file mode 100644 -index 38f211526b..0000000000 +index 38f211526..000000000 --- a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java +++ /dev/null @@ -1,166 +0,0 @@ @@ -1364,7 +1412,7 @@ index 38f211526b..0000000000 - } -} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 00aecdc472..c6daf693c5 100644 +index 00aecdc47..c6daf693c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1749,6 +1749,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1383,7 +1431,7 @@ index 00aecdc472..c6daf693c5 100644 public Player.Spigot spigot() diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index b90979c7ba..8823f94f7b 100644 +index b90979c7b..8823f94f7 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -1,5 +1,6 @@ @@ -1449,7 +1497,7 @@ index b90979c7ba..8823f94f7b 100644 private boolean isReady(final int currentTick) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index 3f55381c15..0d9a466809 100644 +index 3f55381c1..0d9a46680 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java @@ -1,9 +1,11 @@ @@ -1534,7 +1582,7 @@ index 3f55381c15..0d9a466809 100644 - // Spigot end } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java -index e52ef47b78..3d90b34268 100644 +index e52ef47b7..3d90b3426 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java @@ -5,6 +5,7 @@ import org.bukkit.util.CachedServerIcon; @@ -1546,7 +1594,7 @@ index e52ef47b78..3d90b34268 100644 this.value = value; } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 8b6ec888e8..2733c63aa1 100644 +index 8b6ec888e..2733c63aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -288,6 +288,13 @@ public final class CraftMagicNumbers implements UnsafeValues { @@ -1564,7 +1612,7 @@ index 8b6ec888e8..2733c63aa1 100644 * This helper class represents the different NBT Tags. *

diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 4c947a9352..106e9d7e2d 100644 +index ca7789b5e..442383969 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -31,7 +31,7 @@ import net.minecraft.server.EntityWither; 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 1f2143f6ce..976087b965 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,11 +1,11 @@ -From 4f60c9d49368eedc399fcbe3b4f301bf9fe25578 Mon Sep 17 00:00:00 2001 +From 02d36a1ddf62541417ea624258a0019b01584fc4 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 diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index cf0e1a6a0c..f04a9d18c4 100644 +index cf0e1a6a0..f04a9d18c 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -2,6 +2,7 @@ package net.minecraft.server; @@ -77,10 +77,10 @@ index cf0e1a6a0c..f04a9d18c4 100644 this.c(); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index ef31a269e4..07a1796c77 100644 +index 85da52e2c..312845ec0 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1085,10 +1085,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1090,10 +1090,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 ef31a269e4..07a1796c77 100644 this.tracker = entity; this.trackingDistance = i; this.e = SectionPosition.a(entity); -@@ -1170,7 +1174,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1175,7 +1179,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId())); // CraftBukkit end diff --git a/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch index efba07f425..c2d2473c12 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 9c80e9bb4734e94684d0d51d56cdf7d9b17f70cd Mon Sep 17 00:00:00 2001 +From 4e1cc41ed39216510254b9cda8fe10e8a62b1d03 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 @@ -6,7 +6,7 @@ Subject: [PATCH] Add exception reporting event diff --git a/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java new file mode 100644 -index 0000000000..f699ce18ca +index 000000000..f699ce18c --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java @@ -0,0 +1,38 @@ @@ -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 f6f5b72de3..ec64391a4a 100644 +index f6f5b72de..ec64391a4 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -1,5 +1,6 @@ @@ -80,7 +80,7 @@ index f6f5b72de3..ec64391a4a 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 22aba06270..3da7e10a92 100644 +index 60b73bff8..43da95e60 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -14,6 +14,9 @@ import java.util.function.BooleanSupplier; @@ -94,7 +94,7 @@ index 22aba06270..3da7e10a92 100644 public class ChunkProviderServer extends IChunkProvider { diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -index 2cb0962ff1..21a8ed3231 100644 +index 2cb0962ff..21a8ed323 100644 --- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java +++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java @@ -1,5 +1,6 @@ @@ -121,10 +121,10 @@ index 2cb0962ff1..21a8ed3231 100644 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 07a1796c77..808c178157 100644 +index 312845ec0..d4122b893 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -644,6 +644,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -649,6 +649,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 07a1796c77..808c178157 100644 return false; } -@@ -671,6 +672,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -676,6 +677,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); @@ -141,7 +141,7 @@ index 07a1796c77..808c178157 100644 } } diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index d4a9af975d..88b5aa3a51 100644 +index d4a9af975..88b5aa3a5 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -1,5 +1,6 @@ @@ -168,7 +168,7 @@ index d4a9af975d..88b5aa3a51 100644 } diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index a54d653372..4aa65c1934 100644 +index a54d65337..4aa65c193 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java @@ -8,6 +8,7 @@ import org.apache.logging.log4j.LogManager; @@ -196,7 +196,7 @@ index a54d653372..4aa65c1934 100644 } diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java -index 0a1d342c13..347608531f 100644 +index 0a1d342c1..347608531 100644 --- a/src/main/java/net/minecraft/server/VillageSiege.java +++ b/src/main/java/net/minecraft/server/VillageSiege.java @@ -1,5 +1,7 @@ @@ -216,7 +216,7 @@ index 0a1d342c13..347608531f 100644 } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index c58c95b03f..d2062b335c 100644 +index c58c95b03..d2062b335 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -2,6 +2,9 @@ package net.minecraft.server; @@ -255,7 +255,7 @@ index c58c95b03f..d2062b335c 100644 return; // Paper end diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java -index f5f540032f..00e9a17355 100644 +index f5f540032..00e9a1735 100644 --- a/src/main/java/net/minecraft/server/WorldPersistentData.java +++ b/src/main/java/net/minecraft/server/WorldPersistentData.java @@ -121,6 +121,7 @@ public class WorldPersistentData { @@ -267,7 +267,7 @@ index f5f540032f..00e9a17355 100644 } finally { if (pushbackinputstream != null) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 8823f94f7b..552daf4376 100644 +index 8823f94f7..552daf437 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -16,6 +16,9 @@ import java.util.concurrent.atomic.AtomicInteger; diff --git a/Spigot-Server-Patches/0197-PlayerNaturallySpawnCreaturesEvent.patch b/Spigot-Server-Patches/0197-PlayerNaturallySpawnCreaturesEvent.patch index 3f5e4d9c39..69b42f99ab 100644 --- a/Spigot-Server-Patches/0197-PlayerNaturallySpawnCreaturesEvent.patch +++ b/Spigot-Server-Patches/0197-PlayerNaturallySpawnCreaturesEvent.patch @@ -1,4 +1,4 @@ -From a0a096827f8afc67e10dcbb7b0db1cf71c8b0590 Mon Sep 17 00:00:00 2001 +From ade0c873db8b95683bd6e1dd75a8fc316742f1fb Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 14 Jan 2018 17:36:02 -0500 Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent @@ -9,10 +9,10 @@ from triggering monster spawns on a server. Also a highly more effecient way to blanket block spawns in a world diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 6960e46ec6..1212f3f67d 100644 +index aed9e7e45..c9bac0523 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -755,12 +755,24 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -760,12 +760,24 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { chunkRange = (chunkRange > world.spigotConfig.viewDistance) ? (byte) world.spigotConfig.viewDistance : chunkRange; chunkRange = (chunkRange > 8) ? 8 : chunkRange; diff --git a/Spigot-Server-Patches/0256-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch b/Spigot-Server-Patches/0256-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch index dfe0c60c4d..b3bded814d 100644 --- a/Spigot-Server-Patches/0256-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch +++ b/Spigot-Server-Patches/0256-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch @@ -1,4 +1,4 @@ -From a01f84d4d3117850f5f7f66118084860c9b85088 Mon Sep 17 00:00:00 2001 +From 59f2452fdb005f3e95616e8c3a088fde2676678e 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 @@ -6,7 +6,7 @@ Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues Add -Ddebug.entities=true to your JVM flags to gain more information diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 146ce3a7a6..143937236d 100644 +index 146ce3a7a..143937236 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -75,6 +75,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -19,10 +19,10 @@ index 146ce3a7a6..143937236d 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 1212f3f67d..b38bc77c93 100644 +index c9bac0523..9aad0c6b9 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -934,6 +934,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -939,6 +939,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 1212f3f67d..b38bc77c93 100644 this.trackedEntities.put(entity.getId(), playerchunkmap_entitytracker); playerchunkmap_entitytracker.track(this.world.getPlayers()); if (entity instanceof EntityPlayer) { -@@ -976,7 +977,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -981,7 +982,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { if (playerchunkmap_entitytracker1 != null) { playerchunkmap_entitytracker1.a(); } @@ -40,7 +40,7 @@ index 1212f3f67d..b38bc77c93 100644 protected void g() { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index b9570ea928..23d5555d93 100644 +index b9570ea92..23d5555d9 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -68,6 +68,7 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose @@ -52,7 +52,7 @@ index b9570ea928..23d5555d93 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 2e19b7342f..dbdc4b66e9 100644 +index 2e19b7342..dbdc4b66e 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -69,6 +69,9 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/0333-Don-t-sleep-after-profile-lookups-if-not-needed.patch b/Spigot-Server-Patches/0333-Don-t-sleep-after-profile-lookups-if-not-needed.patch index 7dd304b1df..afc4404cdf 100644 --- a/Spigot-Server-Patches/0333-Don-t-sleep-after-profile-lookups-if-not-needed.patch +++ b/Spigot-Server-Patches/0333-Don-t-sleep-after-profile-lookups-if-not-needed.patch @@ -1,4 +1,4 @@ -From 73a47cc046ad4f5356b4122127ad6a3256656efb Mon Sep 17 00:00:00 2001 +From 4b09246872f5a380b3397c175f8cfbe2485005ef Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 23 Oct 2018 20:25:05 -0400 Subject: [PATCH] Don't sleep after profile lookups if not needed @@ -7,30 +7,30 @@ Mojang was sleeping even if we had no more requests to go after the current one finished, resulting in 100ms lost per profile lookup diff --git a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java -index 26a743722..6ed3199c3 100644 +index 71e48e87b..23f1447cf 100644 --- a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java +++ b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java @@ -42,6 +42,7 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository { - } - - final int page = 0; + } + + final int page = 0; + boolean hasRequested = false; // Paper - - for (final List request : Iterables.partition(criteria, ENTRIES_PER_PAGE)) { - int failCount = 0; + + for (final List request : Iterables.partition(criteria, ENTRIES_PER_PAGE)) { + int failCount = 0; @@ -67,6 +68,12 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository { - LOGGER.debug("Couldn't find profile {}", name); - callback.onProfileLookupFailed(new GameProfile(null, name), new ProfileNotFoundException("Server did not find the requested profile")); - } + LOGGER.debug("Couldn't find profile {}", name); + callback.onProfileLookupFailed(new GameProfile(null, name), new ProfileNotFoundException("Server did not find the requested profile")); + } + // Paper start + if (!hasRequested) { + hasRequested = true; + continue; + } + // Paper end - - try { - Thread.sleep(DELAY_BETWEEN_PAGES); + + try { + Thread.sleep(DELAY_BETWEEN_PAGES); -- 2.22.0 diff --git a/Spigot-Server-Patches/0390-Duplicate-UUID-Resolve-Option.patch b/Spigot-Server-Patches/0390-Duplicate-UUID-Resolve-Option.patch index 0e893848a2..028ad2cca8 100644 --- a/Spigot-Server-Patches/0390-Duplicate-UUID-Resolve-Option.patch +++ b/Spigot-Server-Patches/0390-Duplicate-UUID-Resolve-Option.patch @@ -1,4 +1,4 @@ -From 7cae6a999380675c040812ee336143b86a07b9b8 Mon Sep 17 00:00:00 2001 +From 1d1186470d0999939e32bee2870c4714da2fda0a Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 21 Jul 2018 14:27:34 -0400 Subject: [PATCH] Duplicate UUID Resolve Option @@ -33,7 +33,7 @@ But for those who are ok with leaving this inconsistent behavior, you may use WA It is recommended you regenerate the entities, as these were legit entities, and deserve your love. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 91c809b7ce..d8bb13693d 100644 +index 91c809b7c..d8bb13693 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -444,4 +444,43 @@ public class PaperWorldConfig { @@ -81,7 +81,7 @@ index 91c809b7ce..d8bb13693d 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 099f0ad78b..5bf781bb63 100644 +index 099f0ad78..5bf781bb6 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -397,6 +397,7 @@ public class Chunk implements IChunkAccess { @@ -93,7 +93,7 @@ index 099f0ad78b..5bf781bb63 100644 int k = MathHelper.floor(entity.locY / 16.0D); diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index c5ba24f27f..b2a2090e79 100644 +index c5ba24f27..b2a2090e7 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -2727,6 +2727,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -105,7 +105,7 @@ index c5ba24f27f..b2a2090e79 100644 this.uniqueID = uuid; this.ap = this.uniqueID.toString(); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index b38bc77c93..9102bf8b60 100644 +index 9aad0c6b9..f003d5a1f 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -1,6 +1,7 @@ @@ -132,7 +132,7 @@ index b38bc77c93..9102bf8b60 100644 import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicInteger; -@@ -557,12 +561,49 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -561,12 +565,49 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { for (int j = 0; j < i; ++j) { List entityslice = aentityslice[j]; // Spigot @@ -186,7 +186,7 @@ index b38bc77c93..9102bf8b60 100644 if (list == null) { list = Lists.newArrayList(new Entity[]{entity}); } else { -@@ -570,6 +611,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -574,6 +615,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } } } @@ -195,7 +195,7 @@ index b38bc77c93..9102bf8b60 100644 if (list != null) { diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 8d5a291d7c..04cf967616 100644 +index 8d5a291d7..04cf96761 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -2,6 +2,8 @@ package net.minecraft.server; diff --git a/Spigot-Server-Patches/0396-Actually-Limit-Natural-Spawns-To-Limit.patch b/Spigot-Server-Patches/0396-Actually-Limit-Natural-Spawns-To-Limit.patch index bde7911b33..ca60bf7343 100644 --- a/Spigot-Server-Patches/0396-Actually-Limit-Natural-Spawns-To-Limit.patch +++ b/Spigot-Server-Patches/0396-Actually-Limit-Natural-Spawns-To-Limit.patch @@ -1,14 +1,14 @@ -From 2e16ef9a17c49d1325ec3bbb880a912afc03d762 Mon Sep 17 00:00:00 2001 +From 55ddc6f54f09251d01ec96037f6255769034f70d Mon Sep 17 00:00:00 2001 From: kickash32 Date: Sun, 2 Jun 2019 01:22:02 -0400 Subject: [PATCH] Actually-Limit-Natural-Spawns-To-Limit diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 3da7e10a92..4c3bcb63d9 100644 +index 43da95e60..49b8c1187 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -412,8 +412,12 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -414,8 +414,12 @@ public class ChunkProviderServer extends IChunkProvider { if (enumcreaturetype != EnumCreatureType.MISC && (!enumcreaturetype.c() || this.allowAnimals) && (enumcreaturetype.c() || this.allowMonsters) && (!enumcreaturetype.d() || flag2)) { int k1 = limit * l / ChunkProviderServer.b; // CraftBukkit - use per-world limits @@ -24,7 +24,7 @@ index 3da7e10a92..4c3bcb63d9 100644 } } diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 09f1b9d762..b442e09eb4 100644 +index 09f1b9d76..b442e09eb 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java @@ -16,13 +16,20 @@ public final class SpawnerCreature { diff --git a/Spigot-Server-Patches/0401-Fix-World-isChunkGenerated-calls.patch b/Spigot-Server-Patches/0401-Fix-World-isChunkGenerated-calls.patch index b85781b0cf..4874912a03 100644 --- a/Spigot-Server-Patches/0401-Fix-World-isChunkGenerated-calls.patch +++ b/Spigot-Server-Patches/0401-Fix-World-isChunkGenerated-calls.patch @@ -1,4 +1,4 @@ -From a5c71a512c5ef631b69251c06cb5f4e1d3deedda Mon Sep 17 00:00:00 2001 +From f652935fc9f95af75b49dc0e665ed32fe7eb74e0 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Sat, 15 Jun 2019 08:54:33 -0700 Subject: [PATCH] Fix World#isChunkGenerated calls @@ -8,7 +8,7 @@ This patch also adds a chunk status cache on region files (note that its only purpose is to cache the status on DISK) diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 630feec16..42b97ba86 100644 +index bff81bdb8..dab86960a 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -27,7 +27,7 @@ public class ChunkProviderServer extends IChunkProvider { @@ -134,10 +134,10 @@ index 0daf5f99e..761cd1355 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 be707d820..6775175d1 100644 +index 884c8a908..e0798c1c8 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -802,10 +802,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -807,10 +807,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } @Nullable diff --git a/Spigot-Server-Patches/0405-Use-ChunkStatus-cache-when-saving-protochunks.patch b/Spigot-Server-Patches/0405-Use-ChunkStatus-cache-when-saving-protochunks.patch index 9e5a7149be..ce0ebca94b 100644 --- a/Spigot-Server-Patches/0405-Use-ChunkStatus-cache-when-saving-protochunks.patch +++ b/Spigot-Server-Patches/0405-Use-ChunkStatus-cache-when-saving-protochunks.patch @@ -1,4 +1,4 @@ -From 3a6cd1b34c71328e9f0d7d47a4ba1d4cabf6d4ca Mon Sep 17 00:00:00 2001 +From 3423bf44d5532a8e2d8a7b2fdf6aa278aa1702b1 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 3f41072f72..f34d7d0dad 100644 +index e0798c1c8..f21961d3a 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -718,8 +718,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -723,8 +723,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { NBTTagCompound nbttagcompound; if (chunkstatus.getType() != ChunkStatus.Type.LEVELCHUNK) { diff --git a/Spigot-Server-Patches/0406-Anti-Xray.patch b/Spigot-Server-Patches/0406-Anti-Xray.patch index 8b83635aab..8ae33fb834 100644 --- a/Spigot-Server-Patches/0406-Anti-Xray.patch +++ b/Spigot-Server-Patches/0406-Anti-Xray.patch @@ -1,4 +1,4 @@ -From dd8ece01e600a532f79f4182d89965ac6eb9cfd6 Mon Sep 17 00:00:00 2001 +From ff5ffde5a598d484afed73de5c1e35743cb184bf Mon Sep 17 00:00:00 2001 From: stonar96 Date: Mon, 20 Aug 2018 03:03:58 +0200 Subject: [PATCH] Anti-Xray @@ -1565,10 +1565,10 @@ index 761cd1355..956a47132 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 1b18505e0..7e8b0811b 100644 +index f21961d3a..f5b35b95b 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -491,7 +491,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -494,7 +494,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { PlayerChunkMap.LOGGER.error("Couldn't load chunk {}", chunkcoordintpair, exception); } @@ -1577,7 +1577,7 @@ index 1b18505e0..7e8b0811b 100644 }, this.executor); } -@@ -1111,7 +1111,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1116,7 +1116,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { private void a(EntityPlayer entityplayer, Packet[] apacket, Chunk chunk) { if (apacket[0] == null) {