diff --git a/Spigot-Server-Patches/0352-Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/0352-Configurable-Keep-Spawn-Loaded-range-per-world.patch
index 38c5c6f3aa..557a872975 100644
--- a/Spigot-Server-Patches/0352-Configurable-Keep-Spawn-Loaded-range-per-world.patch
+++ b/Spigot-Server-Patches/0352-Configurable-Keep-Spawn-Loaded-range-per-world.patch
@@ -21,25 +21,29 @@ index a9a3dbbe7608d1f0dc122fe8d49928e7e3fa1438..e9c03546c42657dd5f5d4c6f71bd7e0c
 +    }
  }
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 44991803a489a42842f79ce51bdd53a73ef35d71..12866eec621d9ae8801d50bdda13e757f303010e 100644
+index 44991803a489a42842f79ce51bdd53a73ef35d71..7d9a3375d289deccdfa0f4caa8a2088550c560aa 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -605,6 +605,14 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -597,35 +597,36 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+ 
+     // CraftBukkit start
+     public void loadSpawn(WorldLoadListener worldloadlistener, WorldServer worldserver) {
+-        if (!worldserver.getWorld().getKeepSpawnInMemory()) {
+-            return;
+-        }
++        ChunkProviderServer chunkproviderserver = worldserver.getChunkProvider(); // Paper
+ 
+         // WorldServer worldserver = this.E();
          this.forceTicks = true;
          // CraftBukkit end
++        if (worldserver.getWorld().getKeepSpawnInMemory()) { // Paper
  
-+        // Paper start - configurable spawn reason
-+        int radiusBlocks = worldserver.paperConfig.keepLoadedRange;
-+        int radiusChunks = radiusBlocks / 16 + ((radiusBlocks & 15) != 0 ? 1 : 0);
-+        int totalChunks = ((radiusChunks) * 2 + 1);
-+        totalChunks *= totalChunks;
-+        worldloadlistener.setChunkRadius(radiusBlocks / 16);
-+        // Paper end
-+
          MinecraftServer.LOGGER.info("Preparing start region for dimension {}", worldserver.getDimensionKey().a());
          BlockPosition blockposition = worldserver.getSpawn();
  
-@@ -613,14 +621,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+         worldloadlistener.a(new ChunkCoordIntPair(blockposition));
+-        ChunkProviderServer chunkproviderserver = worldserver.getChunkProvider();
++        //ChunkProviderServer chunkproviderserver = worldserver.getChunkProvider(); // Paper - move up
  
          chunkproviderserver.getLightEngine().a(500);
          this.nextTick = SystemUtils.getMonotonicMillis();
@@ -50,15 +54,26 @@ index 44991803a489a42842f79ce51bdd53a73ef35d71..12866eec621d9ae8801d50bdda13e757
 -            // this.nextTick = SystemUtils.getMonotonicMillis() + 10L;
 -            this.executeModerately();
 -            // CraftBukkit end
-+        // Paper start - Configurable spawn radius
-+        if (worldserver.keepSpawnInMemory) {
-+            worldserver.addTicketsForSpawn(radiusBlocks, blockposition);
-         }
-+        // Paper end
+-        }
+-
++        // Paper start - configurable spawn reason
++        int radiusBlocks = worldserver.paperConfig.keepLoadedRange;
++        int radiusChunks = radiusBlocks / 16 + ((radiusBlocks & 15) != 0 ? 1 : 0);
++        int totalChunks = ((radiusChunks) * 2 + 1);
++        totalChunks *= totalChunks;
++        worldloadlistener.setChunkRadius(radiusBlocks / 16);
++
++        worldserver.addTicketsForSpawn(radiusBlocks, blockposition);
 +        LOGGER.info("Loaded " + chunkproviderserver.b() + " spawn chunks for world " + worldserver.getWorld().getName()); // Paper
- 
++        // Paper end
          // CraftBukkit start
          // this.nextTick = SystemUtils.getMonotonicMillis() + 10L;
+         this.executeModerately();
+         // Iterator iterator = this.worldServer.values().iterator();
++        }
+ 
+         if (true) {
+             WorldServer worldserver1 = worldserver;
 diff --git a/src/main/java/net/minecraft/server/WorldLoadListener.java b/src/main/java/net/minecraft/server/WorldLoadListener.java
 index d6762d3853b55b639047f455351150a1cbc9399a..7b6f5b2da0a76661a0e047ee7002aa07cdd4a8b1 100644
 --- a/src/main/java/net/minecraft/server/WorldLoadListener.java
diff --git a/Spigot-Server-Patches/0361-incremental-chunk-saving.patch b/Spigot-Server-Patches/0361-incremental-chunk-saving.patch
index 313ca162fd..33c53f5509 100644
--- a/Spigot-Server-Patches/0361-incremental-chunk-saving.patch
+++ b/Spigot-Server-Patches/0361-incremental-chunk-saving.patch
@@ -62,7 +62,7 @@ index 0c5a14d98f824591c553684191b32ccb507ebe2f..4140de8bcd1ee93f77574d892d32e7c7
      public void close() throws IOException {
          // CraftBukkit start
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 12866eec621d9ae8801d50bdda13e757f303010e..4a184a28ac6b55e59a57ad832392f3d19a48ac0e 100644
+index 7d9a3375d289deccdfa0f4caa8a2088550c560aa..8e2971458b4fbac7d288c190245bb0f8e1c84d7a 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
 @@ -152,6 +152,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -73,7 +73,7 @@ index 12866eec621d9ae8801d50bdda13e757f303010e..4a184a28ac6b55e59a57ad832392f3d1
      public CommandDispatcher vanillaCommandDispatcher;
      private boolean forceTicks;
      // CraftBukkit end
-@@ -1142,14 +1143,24 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1137,14 +1138,24 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              this.serverPing.b().a(agameprofile);
          }
  
diff --git a/Spigot-Server-Patches/0368-Asynchronous-chunk-IO-and-loading.patch b/Spigot-Server-Patches/0368-Asynchronous-chunk-IO-and-loading.patch
index 2f1849e815..5332aa7453 100644
--- a/Spigot-Server-Patches/0368-Asynchronous-chunk-IO-and-loading.patch
+++ b/Spigot-Server-Patches/0368-Asynchronous-chunk-IO-and-loading.patch
@@ -2950,10 +2950,10 @@ index dacb8563bc823c8f6f1e1e10f2b8b9894819374f..80a95441ec2b8394b74818ab74de070b
                  DedicatedServer dedicatedserver1 = new DedicatedServer(optionset, datapackconfiguration1, thread, iregistrycustom_dimension, convertable_conversionsession, resourcepackrepository, datapackresources, null, dedicatedserversettings, DataConverterRegistry.a(), minecraftsessionservice, gameprofilerepository, usercache, WorldLoadListenerLogger::new);
  
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 4a184a28ac6b55e59a57ad832392f3d19a48ac0e..416658a2ddfb11c4a6929807b4e9d8bd8f708e2d 100644
+index 8e2971458b4fbac7d288c190245bb0f8e1c84d7a..10be85be566d486a486e2e0a61b3aa33858cab27 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -806,7 +806,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -801,7 +801,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              this.getUserCache().b(false); // Paper
          }
          // Spigot end
diff --git a/Spigot-Server-Patches/0389-Optimize-Hoppers.patch b/Spigot-Server-Patches/0389-Optimize-Hoppers.patch
index af36fc5897..c47e163c20 100644
--- a/Spigot-Server-Patches/0389-Optimize-Hoppers.patch
+++ b/Spigot-Server-Patches/0389-Optimize-Hoppers.patch
@@ -73,10 +73,10 @@ index 63aa474c73f506737cb5de31977bffcd17d4dc11..b6703378e21a6cd7e140fd35756a20d4
              itemstack.d(this.D());
              if (this.tag != null) {
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index bf3da57c1e709acb3fa9243fb3bb6eaf0613f145..7edc7bfe804a9b450d5873444923d26ffaa96ba0 100644
+index f12bd4b34745a67477cc7a28b5c8dfaf970bbb61..b1408a72194b7a3743cdcfd88afd22cbe8d89eaa 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1246,6 +1246,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1241,6 +1241,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          while (iterator.hasNext()) {
              WorldServer worldserver = (WorldServer) iterator.next();
              worldserver.hasPhysicsEvent =  org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper
diff --git a/Spigot-Server-Patches/0428-Increase-Light-Queue-Size.patch b/Spigot-Server-Patches/0428-Increase-Light-Queue-Size.patch
index c87cf86676..1847e73557 100644
--- a/Spigot-Server-Patches/0428-Increase-Light-Queue-Size.patch
+++ b/Spigot-Server-Patches/0428-Increase-Light-Queue-Size.patch
@@ -28,10 +28,10 @@ index 1b49c214998a5a9b424472df040d634d9fcc0c4a..d7e22e1bf886800adbe8ed7baa3349e5
 +    }
  }
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index e57bda6223966171f15e0c6c24680a54c0edd83d..8e2300e22ca76562acf29c42c0025b4d4c2689b1 100644
+index f5120de89959d6f4df94bfd37657f390e9892f55..1647c36c2b8f81be59ed48eb329977331aa709b1 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -660,7 +660,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -655,7 +655,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          this.executeModerately();
          // CraftBukkit end
          worldloadlistener.b();
diff --git a/Spigot-Server-Patches/0429-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch b/Spigot-Server-Patches/0429-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch
index a476b7324f..0a5c3a4e5e 100644
--- a/Spigot-Server-Patches/0429-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch
+++ b/Spigot-Server-Patches/0429-Mid-Tick-Chunk-Tasks-Speed-up-processing-of-chunk-lo.patch
@@ -135,10 +135,10 @@ index dea7ff47f7a2934708d887c2c40f9328b78fc84e..e31ebda893112b932ee314fc72263fc1
          protected boolean executeNext() {
          // CraftBukkit start - process pending Chunk loadCallback() and unloadCallback() after each run task
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 8e2300e22ca76562acf29c42c0025b4d4c2689b1..664daf13341285a7e24c67a62e765627d79ee578 100644
+index 1647c36c2b8f81be59ed48eb329977331aa709b1..3149caeee2ad6e31806530b794f265315105ef5a 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -940,6 +940,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -935,6 +935,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
                          // Paper end
                          tickSection = curTime;
                      }
@@ -146,7 +146,7 @@ index 8e2300e22ca76562acf29c42c0025b4d4c2689b1..664daf13341285a7e24c67a62e765627
                      // Spigot end
  
                      //MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit // Paper - don't overwrite current tick time
-@@ -1009,7 +1010,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1004,7 +1005,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
  
      }
  
@@ -155,7 +155,7 @@ index 8e2300e22ca76562acf29c42c0025b4d4c2689b1..664daf13341285a7e24c67a62e765627
          // CraftBukkit start
          if (isOversleep) return canOversleep();// Paper - because of our changes, this logic is broken
          return this.forceTicks || this.isEntered() || SystemUtils.getMonotonicMillis() < (this.X ? this.W : this.nextTick);
-@@ -1039,6 +1040,23 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1034,6 +1035,23 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          });
      }
  
@@ -179,7 +179,7 @@ index 8e2300e22ca76562acf29c42c0025b4d4c2689b1..664daf13341285a7e24c67a62e765627
      @Override
      protected TickTask postToMainThread(Runnable runnable) {
          return new TickTask(this.ticks, runnable);
-@@ -1125,6 +1143,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1120,6 +1138,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          // Paper start - move oversleep into full server tick
          isOversleep = true;MinecraftTimings.serverOversleep.startTiming();
          this.awaitTasks(() -> {
@@ -187,7 +187,7 @@ index 8e2300e22ca76562acf29c42c0025b4d4c2689b1..664daf13341285a7e24c67a62e765627
              return !this.canOversleep();
          });
          isOversleep = false;MinecraftTimings.serverOversleep.stopTiming();
-@@ -1203,13 +1222,16 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1198,13 +1217,16 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
      }
  
      protected void b(BooleanSupplier booleansupplier) {
@@ -204,7 +204,7 @@ index 8e2300e22ca76562acf29c42c0025b4d4c2689b1..664daf13341285a7e24c67a62e765627
          this.methodProfiler.exitEnter("levels");
          Iterator iterator = this.getWorlds().iterator();
  
-@@ -1220,7 +1242,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1215,7 +1237,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              processQueue.remove().run();
          }
          MinecraftTimings.processQueueTimer.stopTiming(); // Spigot
@@ -213,7 +213,7 @@ index 8e2300e22ca76562acf29c42c0025b4d4c2689b1..664daf13341285a7e24c67a62e765627
          MinecraftTimings.timeUpdateTimer.startTiming(); // Spigot // Paper
          // Send time updates to everyone, it will get the right time from the world the player is in.
          // Paper start - optimize time updates
-@@ -1262,9 +1284,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1257,9 +1279,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              this.methodProfiler.enter("tick");
  
              try {
diff --git a/Spigot-Server-Patches/0431-Add-tick-times-API-and-mspt-command.patch b/Spigot-Server-Patches/0431-Add-tick-times-API-and-mspt-command.patch
index 04fe85791e..da68336836 100644
--- a/Spigot-Server-Patches/0431-Add-tick-times-API-and-mspt-command.patch
+++ b/Spigot-Server-Patches/0431-Add-tick-times-API-and-mspt-command.patch
@@ -87,7 +87,7 @@ index 01d7ad6778d4bbef6e07f7529f40dd9da6cd2ea8..6f0c5a2d33001f59e560ec239c0edbd3
          version = getInt("config-version", 20);
          set("config-version", 20);
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 664daf13341285a7e24c67a62e765627d79ee578..dc9207189ed49f0fa45170042215584ddb274233 100644
+index 3149caeee2ad6e31806530b794f265315105ef5a..0c469ad1fd477fdb6181c657b7b9e193c790246d 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
 @@ -107,6 +107,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -102,7 +102,7 @@ index 664daf13341285a7e24c67a62e765627d79ee578..dc9207189ed49f0fa45170042215584d
      @Nullable
      private KeyPair H;
      @Nullable
-@@ -1214,6 +1219,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1209,6 +1214,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          this.ag = this.ag * 0.8F + (float) l / 1000000.0F * 0.19999999F;
          long i1 = SystemUtils.getMonotonicNanos();
  
@@ -115,7 +115,7 @@ index 664daf13341285a7e24c67a62e765627d79ee578..dc9207189ed49f0fa45170042215584d
          this.circularTimer.a(i1 - i);
          this.methodProfiler.exit();
          org.spigotmc.WatchdogThread.tick(); // Spigot
-@@ -2186,4 +2197,30 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -2181,4 +2192,30 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
      public ITextFilter a(EntityPlayer entityplayer) {
          return null;
      }
diff --git a/Spigot-Server-Patches/0437-Improved-Watchdog-Support.patch b/Spigot-Server-Patches/0437-Improved-Watchdog-Support.patch
index 4ab02b2508..b3c928be39 100644
--- a/Spigot-Server-Patches/0437-Improved-Watchdog-Support.patch
+++ b/Spigot-Server-Patches/0437-Improved-Watchdog-Support.patch
@@ -109,7 +109,7 @@ index bc15da4640a4a6107c9c186a01ce76df87511b41..27db247aa40e0516302c74b9bf00c631
          }
  
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe596b343ec 100644
+index 0c469ad1fd477fdb6181c657b7b9e193c790246d..fe88179037f1a56cec3543910cfab67b0e2ebbe4 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
 @@ -159,7 +159,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -130,7 +130,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
      public static <S extends MinecraftServer> S a(Function<Thread, S> function) {
          AtomicReference<S> atomicreference = new AtomicReference();
          Thread thread = new Thread(() -> {
-@@ -736,6 +738,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -731,6 +733,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
  
      // CraftBukkit start
      private boolean hasStopped = false;
@@ -138,7 +138,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
      private final Object stopLock = new Object();
      public final boolean hasStopped() {
          synchronized (stopLock) {
-@@ -750,6 +753,19 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -745,6 +748,19 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              if (hasStopped) return;
              hasStopped = true;
          }
@@ -158,7 +158,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
          // CraftBukkit end
          MinecraftServer.LOGGER.info("Stopping server");
          MinecraftTimings.stopServer(); // Paper
-@@ -815,7 +831,18 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -810,7 +826,18 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              this.getUserCache().b(false); // Paper
          }
          // Spigot end
@@ -177,7 +177,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
      }
  
      public String getServerIp() {
-@@ -908,6 +935,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -903,6 +930,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
  
      protected void w() {
          try {
@@ -185,7 +185,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
              if (this.init()) {
                  this.nextTick = SystemUtils.getMonotonicMillis();
                  this.serverPing.setMOTD(new ChatComponentText(this.motd));
-@@ -915,6 +943,18 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -910,6 +938,18 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
                  this.a(this.serverPing);
  
                  // Spigot start
@@ -204,7 +204,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
                  org.spigotmc.WatchdogThread.hasStarted = true; // Paper
                  Arrays.fill( recentTps, 20 );
                  long start = System.nanoTime(), curTime, tickSection = start; // Paper - Further improve server tick loop
-@@ -970,6 +1010,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -965,6 +1005,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
                  this.a((CrashReport) null);
              }
          } catch (Throwable throwable) {
@@ -217,7 +217,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
              MinecraftServer.LOGGER.error("Encountered an unexpected exception", throwable);
              // Spigot Start
              if ( throwable.getCause() != null )
-@@ -1001,14 +1047,14 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -996,14 +1042,14 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              } catch (Throwable throwable1) {
                  MinecraftServer.LOGGER.error("Exception stopping the server", throwable1);
              } finally {
@@ -235,7 +235,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
              }
  
          }
-@@ -1064,6 +1110,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1059,6 +1105,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
  
      @Override
      protected TickTask postToMainThread(Runnable runnable) {
@@ -248,7 +248,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
          return new TickTask(this.ticks, runnable);
      }
  
-@@ -1306,6 +1358,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1301,6 +1353,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
                  try {
                      crashreport = CrashReport.a(throwable, "Exception ticking world");
                  } catch (Throwable t) {
@@ -256,7 +256,7 @@ index dc9207189ed49f0fa45170042215584ddb274233..3658b99ee4686f5b02191a59e3d64fe5
                      throw new RuntimeException("Error generating crash report", t);
                  }
                  // Spigot End
-@@ -1763,7 +1816,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1758,7 +1811,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              this.resourcePackRepository.a(collection);
              this.saveData.a(a(this.resourcePackRepository));
              datapackresources.i();
diff --git a/Spigot-Server-Patches/0466-Use-distance-map-to-optimise-entity-tracker.patch b/Spigot-Server-Patches/0466-Use-distance-map-to-optimise-entity-tracker.patch
index 136aaac57f..47e87ad680 100644
--- a/Spigot-Server-Patches/0466-Use-distance-map-to-optimise-entity-tracker.patch
+++ b/Spigot-Server-Patches/0466-Use-distance-map-to-optimise-entity-tracker.patch
@@ -44,10 +44,10 @@ index e9bc1d22825850a1f1ef3267428c19847d4c8ab8..4965d0fbc123071a2f2f44f559336f7a
          List<Entity> list = this.tracker.getPassengers();
  
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 3658b99ee4686f5b02191a59e3d64fe596b343ec..674cb4556b5714e9d45a76795f2f3a15095be6a6 100644
+index fe88179037f1a56cec3543910cfab67b0e2ebbe4..a91a581b25b19d62949f641847b633208672fb1e 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1532,6 +1532,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1527,6 +1527,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          }
      }
  
diff --git a/Spigot-Server-Patches/0476-Wait-for-Async-Tasks-during-shutdown.patch b/Spigot-Server-Patches/0476-Wait-for-Async-Tasks-during-shutdown.patch
index 547fa55e55..ca0151a611 100644
--- a/Spigot-Server-Patches/0476-Wait-for-Async-Tasks-during-shutdown.patch
+++ b/Spigot-Server-Patches/0476-Wait-for-Async-Tasks-during-shutdown.patch
@@ -10,10 +10,10 @@ Adds a 5 second grace period for any async tasks to finish and warns
 if any are still running after that delay just as reload does.
 
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 674cb4556b5714e9d45a76795f2f3a15095be6a6..c249a1c3bc9013a1e769d026f4826a8edb31f076 100644
+index a91a581b25b19d62949f641847b633208672fb1e..450c04c5a1153ea9d11d005f3be623bbf8b26ce6 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -772,6 +772,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -767,6 +767,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          // CraftBukkit start
          if (this.server != null) {
              this.server.disablePlugins();
diff --git a/Spigot-Server-Patches/0510-Fix-Per-World-Difficulty-Remembering-Difficulty.patch b/Spigot-Server-Patches/0510-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
index e148cc83e9..fd991a6bc6 100644
--- a/Spigot-Server-Patches/0510-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
+++ b/Spigot-Server-Patches/0510-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
@@ -39,10 +39,10 @@ index f5792b999ce42acb13ae9a62ceb2ddec39abe209..5504facd2e453238caa71d98743be541
  
      @Override
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index c249a1c3bc9013a1e769d026f4826a8edb31f076..1aabd16cd23a2bcdd6e29de63fca36226c05c428 100644
+index 450c04c5a1153ea9d11d005f3be623bbf8b26ce6..157f8f5e5255312b916aef200810ad387fac915f 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1525,11 +1525,14 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1520,11 +1520,14 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          }
      }
  
diff --git a/Spigot-Server-Patches/0540-Incremental-player-saving.patch b/Spigot-Server-Patches/0540-Incremental-player-saving.patch
index 7aa18e20ea..1bf5e1f055 100644
--- a/Spigot-Server-Patches/0540-Incremental-player-saving.patch
+++ b/Spigot-Server-Patches/0540-Incremental-player-saving.patch
@@ -37,10 +37,10 @@ index 66920fa15720976a84a33ce498b8ca6f5ad5dee3..59d47a9f75450573b26b82b6f432af7b
      public NetworkManager networkManager; // Paper
      public final MinecraftServer server;
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 1aabd16cd23a2bcdd6e29de63fca36226c05c428..c52de0ad2496888e462bef6c9f751d03dbb6e550 100644
+index 157f8f5e5255312b916aef200810ad387fac915f..dd34782b85ccf7f9f4dedd72f9220f12475a46d2 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1227,9 +1227,15 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1222,9 +1222,15 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          //if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit // Paper - move down
              //MinecraftServer.LOGGER.debug("Autosave started"); // Paper
              serverAutoSave = (autosavePeriod > 0 && this.ticks % autosavePeriod == 0); // Paper
diff --git a/Spigot-Server-Patches/0568-Cache-block-data-strings.patch b/Spigot-Server-Patches/0568-Cache-block-data-strings.patch
index f0c7cf14b2..16437703c0 100644
--- a/Spigot-Server-Patches/0568-Cache-block-data-strings.patch
+++ b/Spigot-Server-Patches/0568-Cache-block-data-strings.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Cache block data strings
 
 
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index c52de0ad2496888e462bef6c9f751d03dbb6e550..43dbd070e00037fac31d3f122df2d51566b4d55f 100644
+index dd34782b85ccf7f9f4dedd72f9220f12475a46d2..c214f32af5723b9b0f6f6e0e768fb653962b8043 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1832,6 +1832,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1827,6 +1827,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              this.getPlayerList().reload();
              this.customFunctionData.a(this.dataPackResources.a());
              this.ak.a(this.dataPackResources.h());
@@ -17,7 +17,7 @@ index c52de0ad2496888e462bef6c9f751d03dbb6e550..43dbd070e00037fac31d3f122df2d515
  
          if (this.isMainThread()) {
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index d79946ecc15c7a822267b8fa58323e6c1bc2ab6d..f44fc4a95954e0745fbcd6d06b79acc37699c77a 100644
+index 41a32f2c77f2e7b79a067a0ce15c894e53ed8709..590236ccc6c15f8c4ad15913fb3ac36d28414318 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
 @@ -476,9 +476,39 @@ public class CraftBlockData implements BlockData {
diff --git a/Spigot-Server-Patches/0577-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch b/Spigot-Server-Patches/0577-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch
index 6854a09d38..8737d66223 100644
--- a/Spigot-Server-Patches/0577-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch
+++ b/Spigot-Server-Patches/0577-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Fix deop kicking non-whitelisted player when white list is
 
 
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 43dbd070e00037fac31d3f122df2d51566b4d55f..d0ffe5790e98b65cd6035ad529e7da8172de9029 100644
+index c214f32af5723b9b0f6f6e0e768fb653962b8043..0108a1a68572df562349688e93f8134cb14d6116 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1897,6 +1897,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1892,6 +1892,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
          if (this.aN()) {
              PlayerList playerlist = commandlistenerwrapper.getServer().getPlayerList();
              WhiteList whitelist = playerlist.getWhitelist();