From 4190ee7439204c958e0fb9d013a34233e92fd870 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Mon, 25 Nov 2024 10:43:28 -0800 Subject: [PATCH] Add Server#isGlobalTickThread This method should be present in Paper, not just in Folia, given that the GlobalRegionScheduler is present. Additonally, add Server#isOwnedByCurrentRegion(World, int, int, int, int) for checking of a rectangle of chunks is owned by the current region. --- ...Folia-scheduler-and-owned-region-API.patch | 68 +++++++++++++++---- ...I-to-check-if-the-server-is-sleeping.patch | 6 +- ...-API-to-allow-disallow-tick-sleeping.patch | 4 +- ...Folia-scheduler-and-owned-region-API.patch | 16 ++++- ...0-Use-correct-seed-on-api-world-load.patch | 4 +- ...-API-for-updating-recipes-on-clients.patch | 10 +-- ...place-methods-with-old-StructureType.patch | 6 +- .../0917-Add-Lifecycle-Event-system.patch | 4 +- .../server/0922-improve-BanList-types.patch | 4 +- .../0955-Brigadier-based-command-API.patch | 14 ++-- patches/server/0978-Anti-Xray.patch | 4 +- .../1038-Moonrise-optimisation-patches.patch | 10 +-- patches/server/1046-Bundle-spark.patch | 8 +-- ...I-to-check-if-the-server-is-sleeping.patch | 4 +- ...-API-to-allow-disallow-tick-sleeping.patch | 4 +- 15 files changed, 110 insertions(+), 56 deletions(-) diff --git a/patches/api/0394-Folia-scheduler-and-owned-region-API.patch b/patches/api/0394-Folia-scheduler-and-owned-region-API.patch index b6b468f860..d464b8041e 100644 --- a/patches/api/0394-Folia-scheduler-and-owned-region-API.patch +++ b/patches/api/0394-Folia-scheduler-and-owned-region-API.patch @@ -18,7 +18,7 @@ the schedulers depending on the result of the ownership check. diff --git a/src/main/java/io/papermc/paper/threadedregions/scheduler/AsyncScheduler.java b/src/main/java/io/papermc/paper/threadedregions/scheduler/AsyncScheduler.java new file mode 100644 -index 0000000000000000000000000000000000000000..d9cdd04660c5e60e494a8fed91ae437e6cb733ed +index 0000000000000000000000000000000000000000..9852e14e68d12ca56b0d57cd6e83e252f47bde72 --- /dev/null +++ b/src/main/java/io/papermc/paper/threadedregions/scheduler/AsyncScheduler.java @@ -0,0 +1,51 @@ @@ -52,7 +52,7 @@ index 0000000000000000000000000000000000000000..d9cdd04660c5e60e494a8fed91ae437e + * @return The {@link ScheduledTask} that represents the scheduled task. + */ + @NotNull ScheduledTask runDelayed(@NotNull Plugin plugin, @NotNull Consumer task, long delay, -+ @NotNull TimeUnit unit); ++ @NotNull TimeUnit unit); + + /** + * Schedules the specified task to be executed asynchronously after the initial delay has passed, @@ -65,7 +65,7 @@ index 0000000000000000000000000000000000000000..d9cdd04660c5e60e494a8fed91ae437e + * @return The {@link ScheduledTask} that represents the scheduled task. + */ + @NotNull ScheduledTask runAtFixedRate(@NotNull Plugin plugin, @NotNull Consumer task, -+ long initialDelay, long period, @NotNull TimeUnit unit); ++ long initialDelay, long period, @NotNull TimeUnit unit); + + /** + * Attempts to cancel all tasks scheduled by the specified plugin. @@ -75,7 +75,7 @@ index 0000000000000000000000000000000000000000..d9cdd04660c5e60e494a8fed91ae437e +} diff --git a/src/main/java/io/papermc/paper/threadedregions/scheduler/EntityScheduler.java b/src/main/java/io/papermc/paper/threadedregions/scheduler/EntityScheduler.java new file mode 100644 -index 0000000000000000000000000000000000000000..9f69e189be8202a0ab1450540f5d12187ba6c987 +index 0000000000000000000000000000000000000000..99e9e20ae01f9b4b8cde585d29c57e27c53c996e --- /dev/null +++ b/src/main/java/io/papermc/paper/threadedregions/scheduler/EntityScheduler.java @@ -0,0 +1,104 @@ @@ -142,7 +142,7 @@ index 0000000000000000000000000000000000000000..9f69e189be8202a0ab1450540f5d1218 + * @return The {@link ScheduledTask} that represents the scheduled task, or {@code null} if the entity has been removed. + */ + @Nullable ScheduledTask run(@NotNull Plugin plugin, @NotNull Consumer task, -+ @Nullable Runnable retired); ++ @Nullable Runnable retired); + + /** + * Schedules a task with the given delay. If the task failed to schedule because the scheduler is retired (entity @@ -161,7 +161,7 @@ index 0000000000000000000000000000000000000000..9f69e189be8202a0ab1450540f5d1218 + * @return The {@link ScheduledTask} that represents the scheduled task, or {@code null} if the entity has been removed. + */ + @Nullable ScheduledTask runDelayed(@NotNull Plugin plugin, @NotNull Consumer task, -+ @Nullable Runnable retired, long delayTicks); ++ @Nullable Runnable retired, long delayTicks); + + /** + * Schedules a repeating task with the given delay and period. If the task failed to schedule because the scheduler @@ -181,11 +181,11 @@ index 0000000000000000000000000000000000000000..9f69e189be8202a0ab1450540f5d1218 + * @return The {@link ScheduledTask} that represents the scheduled task, or {@code null} if the entity has been removed. + */ + @Nullable ScheduledTask runAtFixedRate(@NotNull Plugin plugin, @NotNull Consumer task, -+ @Nullable Runnable retired, long initialDelayTicks, long periodTicks); ++ @Nullable Runnable retired, long initialDelayTicks, long periodTicks); +} diff --git a/src/main/java/io/papermc/paper/threadedregions/scheduler/GlobalRegionScheduler.java b/src/main/java/io/papermc/paper/threadedregions/scheduler/GlobalRegionScheduler.java new file mode 100644 -index 0000000000000000000000000000000000000000..365b53fea8dee09cdc11f4399dea5f00c6ee70e2 +index 0000000000000000000000000000000000000000..57455aca80ecc458b96b44c086cea94ddcecae47 --- /dev/null +++ b/src/main/java/io/papermc/paper/threadedregions/scheduler/GlobalRegionScheduler.java @@ -0,0 +1,58 @@ @@ -239,7 +239,7 @@ index 0000000000000000000000000000000000000000..365b53fea8dee09cdc11f4399dea5f00 + * @return The {@link ScheduledTask} that represents the scheduled task. + */ + @NotNull ScheduledTask runAtFixedRate(@NotNull Plugin plugin, @NotNull Consumer task, -+ long initialDelayTicks, long periodTicks); ++ long initialDelayTicks, long periodTicks); + + /** + * Attempts to cancel all tasks scheduled by the specified plugin. @@ -499,10 +499,10 @@ index 0000000000000000000000000000000000000000..a6b50c9d8af589cc4747e14d343d2045 + } +} diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 7919a001e5b5886a3d0fb64913064bc9607a2102..0f0b5b69a6cf7aac62a9802f2778cce4f08cfb88 100644 +index 7919a001e5b5886a3d0fb64913064bc9607a2102..42beeecad288a7600d4906877932ccd701ed7cc2 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2696,6 +2696,141 @@ public final class Bukkit { +@@ -2696,6 +2696,164 @@ public final class Bukkit { } // Paper end @@ -631,6 +631,21 @@ index 7919a001e5b5886a3d0fb64913064bc9607a2102..0f0b5b69a6cf7aac62a9802f2778cce4 + + /** + * Returns whether the current thread is ticking a region and that the region being ticked ++ * owns the chunks in the rectangle specified by the min and max parameters. ++ * Specifically, this function checks that every chunk with position x in [minChunkX, maxChunkX] and ++ * position z in [minChunkZ, maxChunkZ] is owned by the current ticking region. ++ * @param world Specified world. ++ * @param minChunkX Specified x-coordinate of the minimum chunk position. ++ * @param minChunkZ Specified z-coordinate of the minimum chunk position. ++ * @param maxChunkX Specified x-coordinate of the maximum chunk position. ++ * @param maxChunkZ Specified z-coordinate of the maximum chunk position. ++ */ ++ public static boolean isOwnedByCurrentRegion(@NotNull World world, int minChunkX, int minChunkZ, int maxChunkX, int maxChunkZ) { ++ return server.isOwnedByCurrentRegion(world, minChunkX, minChunkZ, maxChunkX, maxChunkZ); ++ } ++ ++ /** ++ * Returns whether the current thread is ticking a region and that the region being ticked + * owns the specified entity. Note that this function is the only appropriate method of checking + * for ownership of an entity, as retrieving the entity's location is undefined unless the entity is owned + * by the current region. @@ -639,16 +654,24 @@ index 7919a001e5b5886a3d0fb64913064bc9607a2102..0f0b5b69a6cf7aac62a9802f2778cce4 + public static boolean isOwnedByCurrentRegion(@NotNull Entity entity) { + return server.isOwnedByCurrentRegion(entity); + } ++ ++ /** ++ * Returns whether the current thread is ticking the global region. ++ * @see io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler ++ */ ++ public static boolean isGlobalTickThread() { ++ return server.isGlobalTickThread(); ++ } + // Paper end - Folia region threading API + @NotNull public static Server.Spigot spigot() { return server.spigot(); diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 2801f4b27bb77e2d5698f82dd14c4a92d2f4392c..01b1aa2af1aac83ac8b341e7ba2803317373056b 100644 +index 2801f4b27bb77e2d5698f82dd14c4a92d2f4392c..ecfe4f0079038e0a4541ac71ab590ac18108d1d3 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2351,4 +2351,119 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2351,4 +2351,138 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull org.bukkit.potion.PotionBrewer getPotionBrewer(); // Paper end @@ -760,12 +783,31 @@ index 2801f4b27bb77e2d5698f82dd14c4a92d2f4392c..01b1aa2af1aac83ac8b341e7ba280331 + + /** + * Returns whether the current thread is ticking a region and that the region being ticked ++ * owns the chunks in the rectangle specified by the min and max parameters. ++ * Specifically, this function checks that every chunk with position x in [minChunkX, maxChunkX] and ++ * position z in [minChunkZ, maxChunkZ] is owned by the current ticking region. ++ * @param world Specified world. ++ * @param minChunkX Specified x-coordinate of the minimum chunk position. ++ * @param minChunkZ Specified z-coordinate of the minimum chunk position. ++ * @param maxChunkX Specified x-coordinate of the maximum chunk position. ++ * @param maxChunkZ Specified z-coordinate of the maximum chunk position. ++ */ ++ boolean isOwnedByCurrentRegion(@NotNull World world, int minChunkX, int minChunkZ, int maxChunkX, int maxChunkZ); ++ ++ /** ++ * Returns whether the current thread is ticking a region and that the region being ticked + * owns the specified entity. Note that this function is the only appropriate method of checking + * for ownership of an entity, as retrieving the entity's location is undefined unless the entity is owned + * by the current region. + * @param entity Specified entity. + */ + boolean isOwnedByCurrentRegion(@NotNull Entity entity); ++ ++ /** ++ * Returns whether the current thread is ticking the global region. ++ * @see io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler ++ */ ++ public boolean isGlobalTickThread(); + // Paper end - Folia region threading API } diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java diff --git a/patches/api/0498-API-to-check-if-the-server-is-sleeping.patch b/patches/api/0498-API-to-check-if-the-server-is-sleeping.patch index 219c527547..554f30ae5a 100644 --- a/patches/api/0498-API-to-check-if-the-server-is-sleeping.patch +++ b/patches/api/0498-API-to-check-if-the-server-is-sleeping.patch @@ -5,12 +5,12 @@ Subject: [PATCH] API to check if the server is sleeping diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 0b78564256ebc647ebac402e549d86ab6e307c8d..ba366576a571214e67bcc529dc1bca19e1d59ef8 100644 +index dcd2699654c8848b985309f3739b4967515e41c7..7266d29ab6bb246e6daaa643951417123d42abcb 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2572,4 +2572,11 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2591,4 +2591,11 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ - boolean isOwnedByCurrentRegion(@NotNull Entity entity); + public boolean isGlobalTickThread(); // Paper end - Folia region threading API + + // Paper start - API to check if the server is sleeping diff --git a/patches/api/0499-API-to-allow-disallow-tick-sleeping.patch b/patches/api/0499-API-to-allow-disallow-tick-sleeping.patch index a199e4e43d..dc8203d43f 100644 --- a/patches/api/0499-API-to-allow-disallow-tick-sleeping.patch +++ b/patches/api/0499-API-to-allow-disallow-tick-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] API to allow/disallow tick sleeping diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index ba366576a571214e67bcc529dc1bca19e1d59ef8..f55638eb8b315864052f9fe17ab4846e5e9d8dbb 100644 +index 7266d29ab6bb246e6daaa643951417123d42abcb..a92bd4da6788f1331a4838ab5760baec2dc6e8ec 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2578,5 +2578,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2597,5 +2597,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * Returns whether the server is sleeping/paused. */ boolean isPaused(); diff --git a/patches/server/0834-Folia-scheduler-and-owned-region-API.patch b/patches/server/0834-Folia-scheduler-and-owned-region-API.patch index edcef4f99f..10b07e7cdb 100644 --- a/patches/server/0834-Folia-scheduler-and-owned-region-API.patch +++ b/patches/server/0834-Folia-scheduler-and-owned-region-API.patch @@ -1249,10 +1249,10 @@ index 4cced854e750ea9057b4a8d686245925e5dc2868..5a2d33b7da60469f27f9782841b0cf87 public void setLevelCallback(EntityInLevelCallback changeListener) { this.levelCallback = changeListener; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 5c907eca23d936ba3095f2d81256775edaa737da..1bf51d4a1ffb6ab56c4023c49725e412f4350197 100644 +index 5c907eca23d936ba3095f2d81256775edaa737da..4c4fa7bbafb075beb0d9c1ef21e3ba2d62b1ae65 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -313,6 +313,76 @@ public final class CraftServer implements Server { +@@ -313,6 +313,88 @@ public final class CraftServer implements Server { private final io.papermc.paper.logging.SysoutCatcher sysoutCatcher = new io.papermc.paper.logging.SysoutCatcher(); // Paper private final io.papermc.paper.potion.PaperPotionBrewer potionBrewer; // Paper - Custom Potion Mixes @@ -1321,9 +1321,21 @@ index 5c907eca23d936ba3095f2d81256775edaa737da..1bf51d4a1ffb6ab56c4023c49725e412 + } + + @Override ++ public final boolean isOwnedByCurrentRegion(World world, int minChunkX, int minChunkZ, int maxChunkX, int maxChunkZ) { ++ return ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor( ++ ((CraftWorld) world).getHandle(), minChunkX, minChunkZ, maxChunkX, maxChunkZ ++ ); ++ } ++ ++ @Override + public final boolean isOwnedByCurrentRegion(Entity entity) { + return ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(((org.bukkit.craftbukkit.entity.CraftEntity) entity).getHandleRaw()); + } ++ ++ @Override ++ public final boolean isGlobalTickThread() { ++ return ca.spottedleaf.moonrise.common.util.TickThread.isTickThread(); ++ } + // Paper end - Folia reagion threading API + static { diff --git a/patches/server/0840-Use-correct-seed-on-api-world-load.patch b/patches/server/0840-Use-correct-seed-on-api-world-load.patch index 298996ee0f..80e41be4af 100644 --- a/patches/server/0840-Use-correct-seed-on-api-world-load.patch +++ b/patches/server/0840-Use-correct-seed-on-api-world-load.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Use correct seed on api world load diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1bf51d4a1ffb6ab56c4023c49725e412f4350197..d5e8cb8a907385e807c786815cf33f1cd9355f0c 100644 +index 4c4fa7bbafb075beb0d9c1ef21e3ba2d62b1ae65..54b5dee7cfd19ad58e376eee80d3827f1a80cfcd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1388,7 +1388,7 @@ public final class CraftServer implements Server { +@@ -1400,7 +1400,7 @@ public final class CraftServer implements Server { net.minecraft.server.Main.forceUpgrade(worldSession, DataFixers.getDataFixer(), this.console.options.has("eraseCache"), () -> true, iregistrycustom_dimension, this.console.options.has("recreateRegionFiles")); } diff --git a/patches/server/0843-API-for-updating-recipes-on-clients.patch b/patches/server/0843-API-for-updating-recipes-on-clients.patch index fbced676d0..b9405f1a8f 100644 --- a/patches/server/0843-API-for-updating-recipes-on-clients.patch +++ b/patches/server/0843-API-for-updating-recipes-on-clients.patch @@ -38,10 +38,10 @@ index 3a6e918e9db6397b6f1cff531041655298ce087d..efc12d629b71ba1da664d9ecfd4575be public void reloadRecipes() { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d5e8cb8a907385e807c786815cf33f1cd9355f0c..8e0d8fafa68d909d1d10c6d6a03cca371c0e6fb3 100644 +index 54b5dee7cfd19ad58e376eee80d3827f1a80cfcd..a755137d8d4b266a648cb2a4f41a5ed00262f121 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1178,6 +1178,18 @@ public final class CraftServer implements Server { +@@ -1190,6 +1190,18 @@ public final class CraftServer implements Server { ReloadCommand.reload(this.console); } @@ -60,7 +60,7 @@ index d5e8cb8a907385e807c786815cf33f1cd9355f0c..8e0d8fafa68d909d1d10c6d6a03cca37 private void loadIcon() { this.icon = new CraftIconCache(null); try { -@@ -1557,6 +1569,13 @@ public final class CraftServer implements Server { +@@ -1569,6 +1581,13 @@ public final class CraftServer implements Server { @Override public boolean addRecipe(Recipe recipe) { @@ -74,7 +74,7 @@ index d5e8cb8a907385e807c786815cf33f1cd9355f0c..8e0d8fafa68d909d1d10c6d6a03cca37 CraftRecipe toAdd; if (recipe instanceof CraftRecipe) { toAdd = (CraftRecipe) recipe; -@@ -1588,6 +1607,11 @@ public final class CraftServer implements Server { +@@ -1600,6 +1619,11 @@ public final class CraftServer implements Server { } } toAdd.addToCraftingManager(); @@ -86,7 +86,7 @@ index d5e8cb8a907385e807c786815cf33f1cd9355f0c..8e0d8fafa68d909d1d10c6d6a03cca37 return true; } -@@ -1768,9 +1792,23 @@ public final class CraftServer implements Server { +@@ -1780,9 +1804,23 @@ public final class CraftServer implements Server { @Override public boolean removeRecipe(NamespacedKey recipeKey) { diff --git a/patches/server/0848-Deprecate-and-replace-methods-with-old-StructureType.patch b/patches/server/0848-Deprecate-and-replace-methods-with-old-StructureType.patch index 2b18283f26..d058ddea87 100644 --- a/patches/server/0848-Deprecate-and-replace-methods-with-old-StructureType.patch +++ b/patches/server/0848-Deprecate-and-replace-methods-with-old-StructureType.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Deprecate and replace methods with old StructureType diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8e0d8fafa68d909d1d10c6d6a03cca371c0e6fb3..ee79e3374b50ba21620a9685975a0341c15f313b 100644 +index a755137d8d4b266a648cb2a4f41a5ed00262f121..eaea08530ca864158a2fa15dca38ca0c25a49bde 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2007,6 +2007,11 @@ public final class CraftServer implements Server { +@@ -2019,6 +2019,11 @@ public final class CraftServer implements Server { ServerLevel worldServer = ((CraftWorld) world).getHandle(); Location structureLocation = world.locateNearestStructure(location, structureType, radius, findUnexplored); @@ -20,7 +20,7 @@ index 8e0d8fafa68d909d1d10c6d6a03cca371c0e6fb3..ee79e3374b50ba21620a9685975a0341 BlockPos structurePosition = CraftLocation.toBlockPosition(structureLocation); // Create map with trackPlayer = true, unlimitedTracking = true -@@ -2017,6 +2022,31 @@ public final class CraftServer implements Server { +@@ -2029,6 +2034,31 @@ public final class CraftServer implements Server { return CraftItemStack.asBukkitCopy(stack); } diff --git a/patches/server/0917-Add-Lifecycle-Event-system.patch b/patches/server/0917-Add-Lifecycle-Event-system.patch index b1b86fa7e1..cd301c6af8 100644 --- a/patches/server/0917-Add-Lifecycle-Event-system.patch +++ b/patches/server/0917-Add-Lifecycle-Event-system.patch @@ -727,10 +727,10 @@ index 2e96308696e131f3f013469a395e5ddda2c5d529..65a66e484c1c39c5f41d97db52f31c67 } catch (Throwable e) { LOGGER.error("Failed to run bootstrapper for %s. This plugin will not be loaded.".formatted(provider.getSource()), e); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index ee79e3374b50ba21620a9685975a0341c15f313b..7cc96d03472a4cb94e679251f0969995284f7eaa 100644 +index eaea08530ca864158a2fa15dca38ca0c25a49bde..b4a823a62d7088262b7f799c977aec71f8778ff5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1050,6 +1050,11 @@ public final class CraftServer implements Server { +@@ -1062,6 +1062,11 @@ public final class CraftServer implements Server { @Override public void reload() { diff --git a/patches/server/0922-improve-BanList-types.patch b/patches/server/0922-improve-BanList-types.patch index 4d46a5f1dc..bb669a58a1 100644 --- a/patches/server/0922-improve-BanList-types.patch +++ b/patches/server/0922-improve-BanList-types.patch @@ -5,10 +5,10 @@ Subject: [PATCH] improve BanList types diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7cc96d03472a4cb94e679251f0969995284f7eaa..54ef70eff81194c85d6433d00382a5909b6d797f 100644 +index b4a823a62d7088262b7f799c977aec71f8778ff5..0d62694e2f9086702eaca7a11799eb90a06ce853 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2260,6 +2260,21 @@ public final class CraftServer implements Server { +@@ -2272,6 +2272,21 @@ public final class CraftServer implements Server { }; } diff --git a/patches/server/0955-Brigadier-based-command-API.patch b/patches/server/0955-Brigadier-based-command-API.patch index 9d2a8822f5..5296fff1c9 100644 --- a/patches/server/0955-Brigadier-based-command-API.patch +++ b/patches/server/0955-Brigadier-based-command-API.patch @@ -2376,7 +2376,7 @@ index c4ffa8519b520e0793af90e149518951d7ffb65b..688916c8fef40d4c81379ad38609a979 // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 54ef70eff81194c85d6433d00382a5909b6d797f..c65a4bb7f1818378a5e571d39a5aabe8ad87d16c 100644 +index 0d62694e2f9086702eaca7a11799eb90a06ce853..338b60f0254d55ac4a0645ca351d0ce736ce0681 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -275,11 +275,11 @@ public final class CraftServer implements Server { @@ -2394,7 +2394,7 @@ index 54ef70eff81194c85d6433d00382a5909b6d797f..c65a4bb7f1818378a5e571d39a5aabe8 private final StructureManager structureManager; protected final DedicatedServer console; protected final DedicatedPlayerList playerList; -@@ -407,6 +407,12 @@ public final class CraftServer implements Server { +@@ -419,6 +419,12 @@ public final class CraftServer implements Server { this.serverLinks = new CraftServerLinks(console); Bukkit.setServer(this); @@ -2407,7 +2407,7 @@ index 54ef70eff81194c85d6433d00382a5909b6d797f..c65a4bb7f1818378a5e571d39a5aabe8 CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -605,48 +611,11 @@ public final class CraftServer implements Server { +@@ -617,48 +623,11 @@ public final class CraftServer implements Server { } private void setVanillaCommands(boolean first) { // Spigot @@ -2458,7 +2458,7 @@ index 54ef70eff81194c85d6433d00382a5909b6d797f..c65a4bb7f1818378a5e571d39a5aabe8 // Refresh commands for (ServerPlayer player : this.getHandle().players) { -@@ -1033,17 +1002,31 @@ public final class CraftServer implements Server { +@@ -1045,17 +1014,31 @@ public final class CraftServer implements Server { return true; } @@ -2500,7 +2500,7 @@ index 54ef70eff81194c85d6433d00382a5909b6d797f..c65a4bb7f1818378a5e571d39a5aabe8 return false; } -@@ -1052,7 +1035,7 @@ public final class CraftServer implements Server { +@@ -1064,7 +1047,7 @@ public final class CraftServer implements Server { public void reload() { // Paper start - lifecycle events if (io.papermc.paper.plugin.lifecycle.event.LifecycleEventRunner.INSTANCE.blocksPluginReloading()) { @@ -2509,7 +2509,7 @@ index 54ef70eff81194c85d6433d00382a5909b6d797f..c65a4bb7f1818378a5e571d39a5aabe8 } // Paper end - lifecycle events org.spigotmc.WatchdogThread.hasStarted = false; // Paper - Disable watchdog early timeout on reload -@@ -1107,8 +1090,9 @@ public final class CraftServer implements Server { +@@ -1119,8 +1102,9 @@ public final class CraftServer implements Server { } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper @@ -2520,7 +2520,7 @@ index 54ef70eff81194c85d6433d00382a5909b6d797f..c65a4bb7f1818378a5e571d39a5aabe8 // Paper start for (Plugin plugin : pluginClone) { entityMetadata.removeAll(plugin); -@@ -1148,6 +1132,12 @@ public final class CraftServer implements Server { +@@ -1160,6 +1144,12 @@ public final class CraftServer implements Server { this.enablePlugins(PluginLoadOrder.STARTUP); this.enablePlugins(PluginLoadOrder.POSTWORLD); if (io.papermc.paper.plugin.PluginInitializerManager.instance().pluginRemapper != null) io.papermc.paper.plugin.PluginInitializerManager.instance().pluginRemapper.pluginsEnabled(); // Paper - Remap plugins diff --git a/patches/server/0978-Anti-Xray.patch b/patches/server/0978-Anti-Xray.patch index 71308aabb0..e2439a6f77 100644 --- a/patches/server/0978-Anti-Xray.patch +++ b/patches/server/0978-Anti-Xray.patch @@ -1599,10 +1599,10 @@ index 5fc9e8e969debb3e15ed474b36a1c48b086d0449..f65cc95ab28e8a3b21eac2b16bd9ebe9 private static final byte[] EMPTY_LIGHT = new byte[2048]; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c65a4bb7f1818378a5e571d39a5aabe8ad87d16c..758d86865136e5ef58f401f00c5e62fbb8cf25a3 100644 +index 338b60f0254d55ac4a0645ca351d0ce736ce0681..87477ad186b5f692a39f323a618d016b669d8051 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2702,7 +2702,7 @@ public final class CraftServer implements Server { +@@ -2714,7 +2714,7 @@ public final class CraftServer implements Server { public ChunkGenerator.ChunkData createChunkData(World world) { Preconditions.checkArgument(world != null, "World cannot be null"); ServerLevel handle = ((CraftWorld) world).getHandle(); diff --git a/patches/server/1038-Moonrise-optimisation-patches.patch b/patches/server/1038-Moonrise-optimisation-patches.patch index cdd0ced2cb..d22d5be4dc 100644 --- a/patches/server/1038-Moonrise-optimisation-patches.patch +++ b/patches/server/1038-Moonrise-optimisation-patches.patch @@ -23206,7 +23206,7 @@ index 0000000000000000000000000000000000000000..85950a1aa732ab8c01ad28bec9e0de14 + } +} diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index 46c37c8db8ecf3cc808fcf59f6bee5fe6ca49b75..cbd0f2c6636b8ae332f20a3cb763b06855dfe795 100644 +index 5e9c471ab20b0391e7e41351c65d96745fc8ce4a..9221ce36355eaf8d4456209c57b68486d587c255 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -219,6 +219,23 @@ public class GlobalConfiguration extends ConfigurationPart { @@ -36027,10 +36027,10 @@ index f65cc95ab28e8a3b21eac2b16bd9ebe97e56e571..0074bc0e7147dc3a8c538e796f14ac9b @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 758d86865136e5ef58f401f00c5e62fbb8cf25a3..6323738fe96c8e815a0835e6d8b03125c36ecf90 100644 +index 87477ad186b5f692a39f323a618d016b669d8051..1df118625aeb57f3353c40f9552f00d2f34fc655 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1432,7 +1432,7 @@ public final class CraftServer implements Server { +@@ -1444,7 +1444,7 @@ public final class CraftServer implements Server { // Paper - Put world into worldlist before initing the world; move up this.getServer().prepareLevels(internal.getChunkSource().chunkMap.progressListener, internal); @@ -36039,7 +36039,7 @@ index 758d86865136e5ef58f401f00c5e62fbb8cf25a3..6323738fe96c8e815a0835e6d8b03125 this.pluginManager.callEvent(new WorldLoadEvent(internal.getWorld())); return internal.getWorld(); -@@ -1477,7 +1477,7 @@ public final class CraftServer implements Server { +@@ -1489,7 +1489,7 @@ public final class CraftServer implements Server { } handle.getChunkSource().close(save); @@ -36048,7 +36048,7 @@ index 758d86865136e5ef58f401f00c5e62fbb8cf25a3..6323738fe96c8e815a0835e6d8b03125 handle.convertable.close(); } catch (Exception ex) { this.getLogger().log(Level.SEVERE, null, ex); -@@ -2515,7 +2515,7 @@ public final class CraftServer implements Server { +@@ -2527,7 +2527,7 @@ public final class CraftServer implements Server { @Override public boolean isPrimaryThread() { diff --git a/patches/server/1046-Bundle-spark.patch b/patches/server/1046-Bundle-spark.patch index 503d8c374f..292946d556 100644 --- a/patches/server/1046-Bundle-spark.patch +++ b/patches/server/1046-Bundle-spark.patch @@ -364,7 +364,7 @@ index c06863578c5d654706d93e73059d89c12ae502a5..17a158ff6ce6520b69a5a0032ba4c054 com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 6323738fe96c8e815a0835e6d8b03125c36ecf90..806e56cb60235a99f468d36a059fdbd54c2d46e3 100644 +index 1df118625aeb57f3353c40f9552f00d2f34fc655..11ff5f3b5cd25f0ad6ca944d59bca8434f8510d8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -312,6 +312,7 @@ public final class CraftServer implements Server { @@ -375,7 +375,7 @@ index 6323738fe96c8e815a0835e6d8b03125c36ecf90..806e56cb60235a99f468d36a059fdbd5 // Paper start - Folia region threading API private final io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler(); -@@ -477,6 +478,7 @@ public final class CraftServer implements Server { +@@ -489,6 +490,7 @@ public final class CraftServer implements Server { } this.potionBrewer = new io.papermc.paper.potion.PaperPotionBrewer(console); // Paper - custom potion mixes datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper @@ -383,7 +383,7 @@ index 6323738fe96c8e815a0835e6d8b03125c36ecf90..806e56cb60235a99f468d36a059fdbd5 } public boolean getCommandBlockOverride(String command) { -@@ -1103,6 +1105,7 @@ public final class CraftServer implements Server { +@@ -1115,6 +1117,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -391,7 +391,7 @@ index 6323738fe96c8e815a0835e6d8b03125c36ecf90..806e56cb60235a99f468d36a059fdbd5 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1131,6 +1134,7 @@ public final class CraftServer implements Server { +@@ -1143,6 +1146,7 @@ public final class CraftServer implements Server { this.loadPlugins(); this.enablePlugins(PluginLoadOrder.STARTUP); this.enablePlugins(PluginLoadOrder.POSTWORLD); diff --git a/patches/server/1068-API-to-check-if-the-server-is-sleeping.patch b/patches/server/1068-API-to-check-if-the-server-is-sleeping.patch index ac432cd932..11e9f2e44b 100644 --- a/patches/server/1068-API-to-check-if-the-server-is-sleeping.patch +++ b/patches/server/1068-API-to-check-if-the-server-is-sleeping.patch @@ -20,10 +20,10 @@ index 64b56abf8900d0424100da460fc68ac964394793..5d070f036dae6d93f863c55192b55741 + // Paper end - API to check if the server is sleeping } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 806e56cb60235a99f468d36a059fdbd54c2d46e3..605662917a7720a6c5134fd1d93aa2d26116b76d 100644 +index 11ff5f3b5cd25f0ad6ca944d59bca8434f8510d8..7afc3d4244c096f78d48338da2eb65c4e834b6f1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3246,4 +3246,11 @@ public final class CraftServer implements Server { +@@ -3258,4 +3258,11 @@ public final class CraftServer implements Server { return this.potionBrewer; } // Paper end diff --git a/patches/server/1069-API-to-allow-disallow-tick-sleeping.patch b/patches/server/1069-API-to-allow-disallow-tick-sleeping.patch index 9fb5b54049..751159901c 100644 --- a/patches/server/1069-API-to-allow-disallow-tick-sleeping.patch +++ b/patches/server/1069-API-to-allow-disallow-tick-sleeping.patch @@ -51,10 +51,10 @@ index 5d070f036dae6d93f863c55192b557419634456d..c26e3a239441376f2694782d4f079435 // Paper end - API to check if the server is sleeping } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 605662917a7720a6c5134fd1d93aa2d26116b76d..cac8592e3a2f438fe9ca167a4fdcd65152bbb2de 100644 +index 7afc3d4244c096f78d48338da2eb65c4e834b6f1..ac8af406180bc680d46e8edc3da0fc2e5211345a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3252,5 +3252,10 @@ public final class CraftServer implements Server { +@@ -3264,5 +3264,10 @@ public final class CraftServer implements Server { public boolean isPaused() { return this.console.isTickPaused(); }