From 0115c26bbecf83bf1e659e9f0f1e3051d9837d4d Mon Sep 17 00:00:00 2001 From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> Date: Mon, 8 Jul 2024 09:16:04 +0300 Subject: [PATCH] Updated Upstream (Purpur) Upstream has released updates that appear to apply and compile correctly Purpur Changes: PurpurMC/Purpur@cb0f04b Updated Upstream (Paper) --- docs/docs/admin/configuration.md | 3 - gradle.properties | 2 +- patches/api/0002-Divine-Configuration.patch | 4 +- ...04-Add-missing-purpur-config-options.patch | 6 +- patches/server/0006-Fix-MC-93826.patch | 6 +- patches/server/0008-Fix-MC-31819.patch | 4 +- patches/server/0009-Fix-MC-172801.patch | 4 +- patches/server/0013-Fix-MC-93018.patch | 4 +- ...ast_elytra_check-entity.fast_hand_sw.patch | 6 +- patches/server/0028-Delete-Timings.patch | 8 +- patches/server/0029-Fix-sprint-glitch.patch | 4 +- patches/server/0032-Reduce-sensor-work.patch | 4 +- ...-Carpet-Fixes-RecipeManager-Optimize.patch | 42 ++++++---- .../0041-Carpet-Fixes-getBiome-Optimize.patch | 14 ++-- ...MS-Addition-Optimized-dragon-respawn.patch | 7 +- patches/server/0044-C2ME-opts-math.patch | 7 +- patches/server/0046-Async-Pathfinding.patch | 4 +- ...0048-Carpet-Fixes-Sheep-Optimization.patch | 5 +- patches/server/0049-No-chat-sign.patch | 4 +- .../0050-Remove-vanilla-username-check.patch | 4 +- ...Akarin-Save-Json-list-asynchronously.patch | 83 +++++++++++++++++++ 21 files changed, 155 insertions(+), 70 deletions(-) create mode 100644 patches/server/0051-Akarin-Save-Json-list-asynchronously.patch diff --git a/docs/docs/admin/configuration.md b/docs/docs/admin/configuration.md index 344359f..3b6f8eb 100644 --- a/docs/docs/admin/configuration.md +++ b/docs/docs/admin/configuration.md @@ -63,9 +63,6 @@ Global settings affect all worlds on the server as well as the core server funct - **default**: true - **description**: Enables or disables optimization of sheep color choosing from the CarpetFixes mod. The game determines the child sheep's color by getting a wool block from the parents, putting them in a crafting recipe, getting the output wool and getting the color from that. - - ##### recipe-manager-optimization - - **default**: true - - **description**: Enables or disables optimization of recipe manager from the CarpetFixes mod. Optimized by taking out streams & doing extra early checks to quickly remove unrelated recipes - #### misc - ##### use-secure-seed (temporarily absent) - **default**: false diff --git a/gradle.properties b/gradle.properties index 0aa4ff2..ab75b5b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = space.bxteam.divinemc mcVersion = 1.21 version = 1.21-R0.1-SNAPSHOT -purpurRef = de2e7a796716a50fbfda37ae2739e31df1a285b1 +purpurRef = cb0f04bd77350ec0bdf4bc03a68fcca7211c5682 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0002-Divine-Configuration.patch b/patches/api/0002-Divine-Configuration.patch index d1aa4c0..626c169 100644 --- a/patches/api/0002-Divine-Configuration.patch +++ b/patches/api/0002-Divine-Configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Divine Configuration diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index ceb81148f5fd17f00d1a0fb2df1f31c45aa6807d..a27599cb3f3274fe0a4bf09b6477d93440c28bce 100644 +index 1d594c256200d46882fafce5d2b33e60f0fa3a59..b320778f75a31d05db3e426ffd9cb2c53831f5b7 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2263,6 +2263,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2266,6 +2266,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Purpur end diff --git a/patches/server/0004-Add-missing-purpur-config-options.patch b/patches/server/0004-Add-missing-purpur-config-options.patch index b462564..4d22baf 100644 --- a/patches/server/0004-Add-missing-purpur-config-options.patch +++ b/patches/server/0004-Add-missing-purpur-config-options.patch @@ -28,10 +28,10 @@ index 0f9196cc26e5c670a7f3454326b762f0303f633c..a8d4e315d66f71538a3f5330509732ca protected Brain.Provider brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 2fcf8301949ff420ae0955a5194b5db52f030454..464ac4e851a721ae0ed18700be03220a3574db05 100644 +index e88d6d691bb176e33afeb294d735dfb2cbac12ff..c84739e82b7e35ad95f145a48b0da290cb148561 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -@@ -95,6 +95,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -98,6 +98,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl } // Purpur end @@ -190,7 +190,7 @@ index 4cdf3b54187ebcb1f5ddfa6114386127a2846f01..72d146777a0310cb08157bf74e8b6625 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 73352e71d3743fc6b263d6fa5b23571785e2fc4c..87e54aa5e14a0e92df88ea775966c0268ac9cb6e 100644 +index 59cf59bd127fd1fe1c8dbac2086ddbafcb296e4e..96e5a9120f41587a213c607b7f27e29fcfe247a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -330,6 +330,7 @@ public class PurpurConfig { diff --git a/patches/server/0006-Fix-MC-93826.patch b/patches/server/0006-Fix-MC-93826.patch index d7eb2a7..7855e9a 100644 --- a/patches/server/0006-Fix-MC-93826.patch +++ b/patches/server/0006-Fix-MC-93826.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix MC-93826 diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index 27250278968233b3de05c365ae304a4121887160..dfbb879e5436dad8046932c92476c71d17b374a4 100644 +index 91c1093ecef7c8917b69674ffc936b4ae71871e2..a49f39a2e8bc17653f6b8f40bc56ec259f8759fd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -42,6 +42,8 @@ public abstract class Animal extends AgeableMob { +@@ -43,6 +43,8 @@ public abstract class Animal extends AgeableMob { @Nullable public UUID loveCause; public ItemStack breedItem; // CraftBukkit - Add breedItem variable @@ -17,7 +17,7 @@ index 27250278968233b3de05c365ae304a4121887160..dfbb879e5436dad8046932c92476c71d public abstract int getPurpurBreedTime(); // Purpur protected Animal(EntityType type, Level world) { -@@ -73,7 +75,11 @@ public abstract class Animal extends AgeableMob { +@@ -74,7 +76,11 @@ public abstract class Animal extends AgeableMob { double d1 = this.random.nextGaussian() * 0.02D; double d2 = this.random.nextGaussian() * 0.02D; diff --git a/patches/server/0008-Fix-MC-31819.patch b/patches/server/0008-Fix-MC-31819.patch index ddd2574..6757b3c 100644 --- a/patches/server/0008-Fix-MC-31819.patch +++ b/patches/server/0008-Fix-MC-31819.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix MC-31819 diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 42f9a2046aa8086aecbfa2fa0b604b21c2b70754..b92dd6072d50771943cca4e96ff567b9850326a1 100644 +index 330b21946564e6a7b463a258c02fee3f91e0f057..1a2f20e53e0c9b711ce2c4a1b978451e4bc8a7a4 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1943,6 +1943,11 @@ public abstract class Player extends LivingEntity { +@@ -1946,6 +1946,11 @@ public abstract class Player extends LivingEntity { } public void causeFoodExhaustion(float f, EntityExhaustionEvent.ExhaustionReason reason) { diff --git a/patches/server/0009-Fix-MC-172801.patch b/patches/server/0009-Fix-MC-172801.patch index 5d60d18..6f2a90b 100644 --- a/patches/server/0009-Fix-MC-172801.patch +++ b/patches/server/0009-Fix-MC-172801.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-172801 Original post on Mojira: https://bugs.mojang.com/browse/MC-172801 diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 07e506b6105afcc41c2fbfff5b79cee565cd1113..b358e5dc570231ae05429c751b4de4a1dcd9e9bf 100644 +index cf01a2ef9d72edc7661661c13a85c777bf32b83b..77edee5e7bd9ef9be77dd5f48c57488934fae598 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3129,7 +3129,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3164,7 +3164,13 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected float getFlyingSpeed() { diff --git a/patches/server/0013-Fix-MC-93018.patch b/patches/server/0013-Fix-MC-93018.patch index caa3e50..4847949 100644 --- a/patches/server/0013-Fix-MC-93018.patch +++ b/patches/server/0013-Fix-MC-93018.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-93018 Original post on Mojira: https://bugs.mojang.com/browse/MC-93018 diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index a2df7cf565157db2f8e0f0d33778c8d8dea1cd95..4c67bfb22a154dfabbe0ac6091199151e441534a 100644 +index 3d032d3f53cc3281bad173f7f9d139101ef6beaa..60f7899b2779bd3dd7cd88690fa04e128b5ffa6e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -775,14 +775,17 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder> List> getAllRecipesFor(RecipeType type) { - return List.copyOf(this.byType(type)); -+ return space.bxteam.divinemc.configuration.DivineConfig.recipeManagerOptimization ? new ArrayList<>(this.byType(type)) : List.copyOf(this.byType(type)); // DivineMC - Carpet-Fixes: RecipeManager Optimize ++ return new java.util.ArrayList<>(this.byType(type)); // DivineMC - Carpet-Fixes: RecipeManager Optimize } ++ // DivineMC start - Carpet-Fixes: RecipeManager Optimize public > List> getRecipesFor(RecipeType type, I input, Level world) { -diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index 58557370cd588c19faf54cb9fc402b1d0a0f687f..a126361a640d3aac85785f3f24f9e5f712d4d2fe 100644 ---- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -157,4 +157,9 @@ public class DivineConfig { - private static void miscSettings() { - disableNonEditableSignWarning = getBoolean("settings.misc.disable-non-editable-sign-warning", disableNonEditableSignWarning); - } +- return (List) this.byType(type).stream().filter((recipeholder) -> { +- return recipeholder.value().matches(input, world); +- }).sorted(Comparator.comparing((recipeholder) -> { +- return recipeholder.value().getResultItem(world.registryAccess()).getDescriptionId(); +- })).collect(Collectors.toList()); ++ List> list = new java.util.ArrayList<>(); + -+ public static boolean recipeManagerOptimization = true; -+ private static void optimizations() { -+ recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); -+ } - } ++ for (RecipeHolder recipeholder : this.byType(type)) { ++ if (recipeholder.value().matches(input, world)) { ++ list.add(recipeholder); ++ } ++ } ++ ++ list.sort(Comparator.comparing((recipeholder) -> recipeholder.value().getResultItem(world.registryAccess()).getDescriptionId())); ++ ++ return list; + } ++ // DivineMC end + + private > Collection> byType(RecipeType type) { + return (Collection) this.byType.get(type); // CraftBukkit - decompile error diff --git a/patches/server/0041-Carpet-Fixes-getBiome-Optimize.patch b/patches/server/0041-Carpet-Fixes-getBiome-Optimize.patch index 7b63739..80ad66c 100644 --- a/patches/server/0041-Carpet-Fixes-getBiome-Optimize.patch +++ b/patches/server/0041-Carpet-Fixes-getBiome-Optimize.patch @@ -152,16 +152,16 @@ index 01352cc83b25eb0e30b7e0ff521fc7c1b3d5155b..c042287e12b5ce814afe8557e4dfa8e8 public Holder getNoiseBiomeAtPosition(double x, double y, double z) { diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index a126361a640d3aac85785f3f24f9e5f712d4d2fe..b12578224a1ac9596a8e82c277efb71e1944c164 100644 +index 58557370cd588c19faf54cb9fc402b1d0a0f687f..fd0bbc99a151dd12d5522aaf8e3800b1a17500b6 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -159,7 +159,9 @@ public class DivineConfig { +@@ -157,4 +157,9 @@ public class DivineConfig { + private static void miscSettings() { + disableNonEditableSignWarning = getBoolean("settings.misc.disable-non-editable-sign-warning", disableNonEditableSignWarning); } - - public static boolean recipeManagerOptimization = true; ++ + public static boolean biomeManagerOptimization = true; - private static void optimizations() { - recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); ++ private static void optimizations() { + biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); - } ++ } } diff --git a/patches/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch b/patches/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch index cd0d7df..79dbdce 100644 --- a/patches/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch +++ b/patches/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch @@ -110,16 +110,15 @@ index 18a1b4325cac81b040596071dab99ef9bf6f3142..445dc3ca4586b39ccc2cebe922455d9f for (BlockPattern.BlockPatternMatch shapedetector_shapedetectorcollection = this.findExitPortal(); shapedetector_shapedetectorcollection != null; shapedetector_shapedetectorcollection = this.findExitPortal()) { for (int i = 0; i < this.exitPortalPattern.getWidth(); ++i) { diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index b12578224a1ac9596a8e82c277efb71e1944c164..66df0b923a4dfe15479f93a65983c927c8dbf112 100644 +index fd0bbc99a151dd12d5522aaf8e3800b1a17500b6..d5f33c6bde58fd333fbdc474a288523bcb5557a1 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -160,8 +160,10 @@ public class DivineConfig { +@@ -159,7 +159,9 @@ public class DivineConfig { + } - public static boolean recipeManagerOptimization = true; public static boolean biomeManagerOptimization = true; + public static boolean optimizedDragonRespawn = true; private static void optimizations() { - recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); + optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn); } diff --git a/patches/server/0044-C2ME-opts-math.patch b/patches/server/0044-C2ME-opts-math.patch index 5df2dc4..8c16b88 100644 --- a/patches/server/0044-C2ME-opts-math.patch +++ b/patches/server/0044-C2ME-opts-math.patch @@ -281,16 +281,15 @@ index 35820670837376bcad8891241724d5b946fbd31f..74a666a45289f0902b426ba57986cd93 @Deprecated diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index 66df0b923a4dfe15479f93a65983c927c8dbf112..c09f32cb70a24a19a228fdf670d7815f619f6ddf 100644 +index d5f33c6bde58fd333fbdc474a288523bcb5557a1..54beb2e8be073617638e62f22ae37942b75283d7 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -161,9 +161,11 @@ public class DivineConfig { - public static boolean recipeManagerOptimization = true; +@@ -160,8 +160,10 @@ public class DivineConfig { + public static boolean biomeManagerOptimization = true; public static boolean optimizedDragonRespawn = true; + public static boolean optimizeNoiseGeneration = true; private static void optimizations() { - recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn); + optimizeNoiseGeneration = getBoolean("settings.optimizations.optimize-noise-generation", optimizeNoiseGeneration); diff --git a/patches/server/0046-Async-Pathfinding.patch b/patches/server/0046-Async-Pathfinding.patch index 68acb2c..8c029e8 100644 --- a/patches/server/0046-Async-Pathfinding.patch +++ b/patches/server/0046-Async-Pathfinding.patch @@ -859,10 +859,10 @@ index 6308822f819d7cb84c8070c8a7eec1a3f822114b..3db838279e4407c28671bb1563fc96f9 public SwimNodeEvaluator(boolean canJumpOutOfWater) { diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index c09f32cb70a24a19a228fdf670d7815f619f6ddf..d8fdabba24db864671bb3e5ff5062a2a67703725 100644 +index 54beb2e8be073617638e62f22ae37942b75283d7..641a957cfda8de6f4114350393f441f2f3b9c8dd 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -168,4 +168,21 @@ public class DivineConfig { +@@ -166,4 +166,21 @@ public class DivineConfig { optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn); optimizeNoiseGeneration = getBoolean("settings.optimizations.optimize-noise-generation", optimizeNoiseGeneration); } diff --git a/patches/server/0048-Carpet-Fixes-Sheep-Optimization.patch b/patches/server/0048-Carpet-Fixes-Sheep-Optimization.patch index 438ef75..8463f81 100644 --- a/patches/server/0048-Carpet-Fixes-Sheep-Optimization.patch +++ b/patches/server/0048-Carpet-Fixes-Sheep-Optimization.patch @@ -60,16 +60,15 @@ index 17b49186293578c06144a476473324a9a1f6fcbb..f073d0657855e70f70c33ec7c7bf8238 private static CraftingInput makeCraftInput(DyeColor firstColor, DyeColor secondColor) { diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index d8fdabba24db864671bb3e5ff5062a2a67703725..3f078251200bc9d9a9a8632637cfa75750463a0c 100644 +index 641a957cfda8de6f4114350393f441f2f3b9c8dd..75adcde96d7924fa1892462e66ffe16476735658 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -162,11 +162,13 @@ public class DivineConfig { +@@ -161,10 +161,12 @@ public class DivineConfig { public static boolean biomeManagerOptimization = true; public static boolean optimizedDragonRespawn = true; public static boolean optimizeNoiseGeneration = true; + public static boolean sheepOptimization = true; private static void optimizations() { - recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn); optimizeNoiseGeneration = getBoolean("settings.optimizations.optimize-noise-generation", optimizeNoiseGeneration); diff --git a/patches/server/0049-No-chat-sign.patch b/patches/server/0049-No-chat-sign.patch index f50ee30..be9ba91 100644 --- a/patches/server/0049-No-chat-sign.patch +++ b/patches/server/0049-No-chat-sign.patch @@ -160,10 +160,10 @@ index 95dcf7743e69559bc99487f6b57986bbbb2512c6..d4541b7b3123c4be2af06152bc527ce3 // CraftBukkit start diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index 3f078251200bc9d9a9a8632637cfa75750463a0c..cc056202ff619eb2524a364c0f7a03343290e7c4 100644 +index 75adcde96d7924fa1892462e66ffe16476735658..09b74a2f07deee7ba38f99a7573e63b53adab057 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -187,4 +187,9 @@ public class DivineConfig { +@@ -185,4 +185,9 @@ public class DivineConfig { else Bukkit.getLogger().log(Level.INFO, "Using " + asyncPathfindingMaxThreads + " threads for Async Pathfinding"); } diff --git a/patches/server/0050-Remove-vanilla-username-check.patch b/patches/server/0050-Remove-vanilla-username-check.patch index bf6d6d5..9fdb0d9 100644 --- a/patches/server/0050-Remove-vanilla-username-check.patch +++ b/patches/server/0050-Remove-vanilla-username-check.patch @@ -32,7 +32,7 @@ index 5edd8e6bcabe5714c89d4c88f672cc3130c27045..0a5156f1790f9b384ce158444f2f3803 && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation) { Validate.validState(StringUtil.isReasonablePlayerName(packet.name()), "Invalid characters in username", new Object[0]); diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index cc056202ff619eb2524a364c0f7a03343290e7c4..dacfb8d33b17ec86d7e45b9f88ca5303741eefee 100644 +index 09b74a2f07deee7ba38f99a7573e63b53adab057..2580a13c80f6a8f6bb35b4c82014628732660019 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java @@ -154,8 +154,10 @@ public class DivineConfig { @@ -45,4 +45,4 @@ index cc056202ff619eb2524a364c0f7a03343290e7c4..dacfb8d33b17ec86d7e45b9f88ca5303 + removeVanillaUsernameCheck = getBoolean("settings.misc.remove-vanilla-username-check", removeVanillaUsernameCheck); } - public static boolean recipeManagerOptimization = true; + public static boolean biomeManagerOptimization = true; diff --git a/patches/server/0051-Akarin-Save-Json-list-asynchronously.patch b/patches/server/0051-Akarin-Save-Json-list-asynchronously.patch new file mode 100644 index 0000000..c17c2d8 --- /dev/null +++ b/patches/server/0051-Akarin-Save-Json-list-asynchronously.patch @@ -0,0 +1,83 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> +Date: Mon, 8 Jul 2024 09:03:56 +0300 +Subject: [PATCH] Akarin: Save Json list asynchronously + +Original project: https://github.com/Akarin-project/Akarin + +diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java +index c038da20b76c0b7b1c18471b20be01e849d29f3a..e961374a6ba23c0e46b01e8fa01656c047989483 100644 +--- a/src/main/java/net/minecraft/server/players/StoredUserList.java ++++ b/src/main/java/net/minecraft/server/players/StoredUserList.java +@@ -103,37 +103,47 @@ public abstract class StoredUserList> { + } + + public void save() throws IOException { +- this.removeExpired(); // Paper - remove expired values before saving +- JsonArray jsonarray = new JsonArray(); +- Stream stream = this.map.values().stream().map((jsonlistentry) -> { // CraftBukkit - decompile error +- JsonObject jsonobject = new JsonObject(); ++ Runnable saveTask = () -> { // DivineMC - Save json list async ++ this.removeExpired(); // Paper - remove expired values before saving ++ JsonArray jsonarray = new JsonArray(); ++ Stream stream = this.map.values().stream().map((jsonlistentry) -> { // CraftBukkit - decompile error ++ JsonObject jsonobject = new JsonObject(); + +- Objects.requireNonNull(jsonlistentry); +- return (JsonObject) Util.make(jsonobject, jsonlistentry::serialize); +- }); ++ Objects.requireNonNull(jsonlistentry); ++ return (JsonObject) Util.make(jsonobject, jsonlistentry::serialize); ++ }); + +- Objects.requireNonNull(jsonarray); +- stream.forEach(jsonarray::add); +- BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8); ++ Objects.requireNonNull(jsonarray); ++ stream.forEach(jsonarray::add); ++ ++ try { // DivineMC - Save json list async ++ BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8); + +- try { +- StoredUserList.GSON.toJson(jsonarray, StoredUserList.GSON.newJsonWriter(bufferedwriter)); +- } catch (Throwable throwable) { +- if (bufferedwriter != null) { + try { +- bufferedwriter.close(); +- } catch (Throwable throwable1) { +- throwable.addSuppressed(throwable1); +- } +- } ++ StoredUserList.GSON.toJson(jsonarray, StoredUserList.GSON.newJsonWriter(bufferedwriter)); ++ } catch (Throwable throwable) { ++ if (bufferedwriter != null) { ++ try { ++ bufferedwriter.close(); ++ } catch (Throwable throwable1) { ++ throwable.addSuppressed(throwable1); ++ } ++ } + +- throw throwable; +- } ++ throw throwable; ++ } + +- if (bufferedwriter != null) { +- bufferedwriter.close(); +- } ++ if (bufferedwriter != null) { ++ bufferedwriter.close(); ++ } + ++ // DivineMC start ++ } catch (Exception e) { ++ StoredUserList.LOGGER.warn("Failed to async save " + this.file, e); ++ } ++ }; ++ io.papermc.paper.util.MCUtil.scheduleAsyncTask(saveTask); ++ // DivineMC end + } + + public void load() throws IOException {