diff --git a/patches/unapplied/server/0039-Parchment-Make-FixLight-use-action-bar.patch b/patches/removed/1.21/server/0039-Parchment-Make-FixLight-use-action-bar.patch similarity index 100% rename from patches/unapplied/server/0039-Parchment-Make-FixLight-use-action-bar.patch rename to patches/removed/1.21/server/0039-Parchment-Make-FixLight-use-action-bar.patch diff --git a/patches/unapplied/server/0045-Make-minecart-hopper-work-without-players.patch b/patches/server/0034-Make-minecart-hopper-work-without-players.patch similarity index 100% rename from patches/unapplied/server/0045-Make-minecart-hopper-work-without-players.patch rename to patches/server/0034-Make-minecart-hopper-work-without-players.patch diff --git a/patches/unapplied/server/0046-Fix-possible-NPE-during-creating-GUI-graph.patch b/patches/server/0035-Fix-possible-NPE-during-creating-GUI-graph.patch similarity index 100% rename from patches/unapplied/server/0046-Fix-possible-NPE-during-creating-GUI-graph.patch rename to patches/server/0035-Fix-possible-NPE-during-creating-GUI-graph.patch diff --git a/patches/unapplied/server/0021-Optimize-CraftServer.getWorld-UUID.patch b/patches/server/0036-Optimize-CraftServer.getWorld-UUID.patch similarity index 86% rename from patches/unapplied/server/0021-Optimize-CraftServer.getWorld-UUID.patch rename to patches/server/0036-Optimize-CraftServer.getWorld-UUID.patch index c75a1a3..977e4f4 100644 --- a/patches/unapplied/server/0021-Optimize-CraftServer.getWorld-UUID.patch +++ b/patches/server/0036-Optimize-CraftServer.getWorld-UUID.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize CraftServer.getWorld(UUID) Original code by MultiPaper - https://github.com/MultiPaper/MultiPaper diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6ec5a4484e 100644 +index 7c6af53de9b3b7552bf69aaef6ce2ff179bf2ece..0a0ba7c205f5acef31e9b825022c9598d1218b5a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -265,6 +265,7 @@ import javax.annotation.Nullable; // Paper +@@ -266,6 +266,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper import space.bxteam.divinemc.configuration.DivineConfig; // DivineMC @@ -17,7 +17,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e public final class CraftServer implements Server { private final String serverName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); // Paper -@@ -283,6 +284,7 @@ public final class CraftServer implements Server { +@@ -284,6 +285,7 @@ public final class CraftServer implements Server { protected final DedicatedPlayerList playerList; private final Map worlds = new LinkedHashMap(); // private final Map, Registry> registries = new HashMap<>(); // Paper - replace with RegistryAccess @@ -25,7 +25,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e private YamlConfiguration configuration; private YamlConfiguration commandsConfiguration; private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); -@@ -1488,6 +1490,7 @@ public final class CraftServer implements Server { +@@ -1492,6 +1494,7 @@ public final class CraftServer implements Server { this.getLogger().log(Level.SEVERE, null, ex); } @@ -33,7 +33,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e this.worlds.remove(world.getName().toLowerCase(Locale.ROOT)); this.console.removeLevel(handle); return true; -@@ -1506,6 +1509,7 @@ public final class CraftServer implements Server { +@@ -1510,6 +1513,7 @@ public final class CraftServer implements Server { @Override public World getWorld(UUID uid) { @@ -41,7 +41,7 @@ index 53fe8501a477a2cb436792cc02601de4de7f3f54..e21f1398c2efba9856718cb30328ac6e for (World world : this.worlds.values()) { if (world.getUID().equals(uid)) { return world; -@@ -1529,6 +1533,7 @@ public final class CraftServer implements Server { +@@ -1533,6 +1537,7 @@ public final class CraftServer implements Server { System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); return; } diff --git a/patches/unapplied/server/0047-Block-Log4Shell-exploit.patch b/patches/server/0037-Block-Log4Shell-exploit.patch similarity index 77% rename from patches/unapplied/server/0047-Block-Log4Shell-exploit.patch rename to patches/server/0037-Block-Log4Shell-exploit.patch index 5be4390..943276f 100644 --- a/patches/unapplied/server/0047-Block-Log4Shell-exploit.patch +++ b/patches/server/0037-Block-Log4Shell-exploit.patch @@ -5,22 +5,21 @@ Subject: [PATCH] Block Log4Shell exploit diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0c3768bb183451e9dfe94bbc9b203bd79e474b99..1b760cf89327b82284d7528d87f4e3543f4c9154 100644 +index 1c41ad915ad5f1ef63fea96fefe53fd037174ac3..cb1b861df277abdb0985f978f4e2d5419d279d2a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2409,6 +2409,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2353,6 +2353,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private void tryHandleChat(String s, Runnable runnable, boolean sync) { // CraftBukkit + if (ServerGamePacketListenerImpl.isLog4ShellExploit(s)) return; // DivineMC - Block Log4Shell exploit if (ServerGamePacketListenerImpl.isChatMessageIllegal(s)) { - this.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper + this.disconnect((Component) Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper } else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales -@@ -2439,6 +2440,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - return optional; +@@ -2384,6 +2385,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } -+ + + // DivineMC start - Block Log4Shell exploit + public static boolean isLog4ShellExploit(String message) { + java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(".*\\$\\{[^}]*}.*"); @@ -29,14 +28,15 @@ index 0c3768bb183451e9dfe94bbc9b203bd79e474b99..1b760cf89327b82284d7528d87f4e354 + return matcher.find(); + } + // DivineMC end - ++ public static boolean isChatMessageIllegal(String message) { for (int i = 0; i < message.length(); ++i) { + if (!StringUtil.isAllowedChatCharacter(message.charAt(i))) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 241340a6d66f17f2a31fb03ff0dfab121b856368..dc4bde8f94ee7a8b5a2ae8348c5796f1d803bd8e 100644 +index 61ae7f9d871bb2747c928e91eb07496b862a4975..20e77d90bbe97e2c711a9f4ef6d47906595d99d7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -749,6 +749,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -751,6 +751,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { Preconditions.checkArgument(msg != null, "msg cannot be null"); if (this.getHandle().connection == null) return; diff --git a/patches/unapplied/server/0048-Option-to-disable-non-editable-sign-warning.patch b/patches/server/0038-Option-to-disable-non-editable-sign-warning.patch similarity index 84% rename from patches/unapplied/server/0048-Option-to-disable-non-editable-sign-warning.patch rename to patches/server/0038-Option-to-disable-non-editable-sign-warning.patch index bc5c739..f9f0574 100644 --- a/patches/unapplied/server/0048-Option-to-disable-non-editable-sign-warning.patch +++ b/patches/server/0038-Option-to-disable-non-editable-sign-warning.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> -Date: Thu, 23 May 2024 15:39:18 +0300 +Date: Mon, 17 Jun 2024 16:21:15 +0300 Subject: [PATCH] Option to disable non editable sign warning @@ -18,16 +18,16 @@ index 8cd812a25b1cc05ea14675658bf9c1503ebebd51..5cdfd35218c424ffb7a900ef66f9b1cf ((ServerPlayer) player).connection.send(this.getUpdatePacket()); // CraftBukkit } diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -index 08c69524814f8581faa6dcf227f18500d4370e13..e40f472da48a10b2ca2bc0e9b976e15305bd7016 100644 +index 8380fd40b19ea1b4bff6ba78648408fbd3c662d0..58557370cd588c19faf54cb9fc402b1d0a0f687f 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -200,7 +200,9 @@ public class DivineConfig { +@@ -152,4 +152,9 @@ public class DivineConfig { + } + return builder.build(); } - - public static boolean useSecureSeed = false; ++ + public static boolean disableNonEditableSignWarning = true; - private static void miscSettings() { - useSecureSeed = getBoolean("settings.misc.use-secure-seed", useSecureSeed); ++ private static void miscSettings() { + disableNonEditableSignWarning = getBoolean("settings.misc.disable-non-editable-sign-warning", disableNonEditableSignWarning); - } ++ } } diff --git a/patches/unapplied/server/0032-Suppress-errors-from-dirty-attributes.patch b/patches/server/0039-Suppress-errors-from-dirty-attributes.patch similarity index 88% rename from patches/unapplied/server/0032-Suppress-errors-from-dirty-attributes.patch rename to patches/server/0039-Suppress-errors-from-dirty-attributes.patch index d57da9e..2f03581 100644 --- a/patches/unapplied/server/0032-Suppress-errors-from-dirty-attributes.patch +++ b/patches/server/0039-Suppress-errors-from-dirty-attributes.patch @@ -5,22 +5,22 @@ Subject: [PATCH] Suppress errors from dirty attributes diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index dd6278fe99e2ee4daa95249c71ea935dd08b0025..7e2bd649b3525ccd5db052f83c9b8818d7f13d78 100644 +index b38207981751d96a7e769f7afb352a4540b18440..3117a5ea9ef02c523c9223252078cc40163e6ca4 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -394,7 +394,10 @@ public class ServerEntity { +@@ -402,7 +402,10 @@ public class ServerEntity { } if (this.entity instanceof LivingEntity) { -- Set set = ((LivingEntity) this.entity).getAttributes().getDirtyAttributes(); +- Set set = ((LivingEntity) this.entity).getAttributes().getAttributesToSync(); + // DivineMC start - Suppress errors from dirty attributes -+ Set attributes = ((LivingEntity) this.entity).getAttributes().getDirtyAttributes(); ++ Set attributes = ((LivingEntity) this.entity).getAttributes().getAttributesToSync(); + final Set set = this.level.divinemcConfig.suppressErrorsFromDirtyAttributes ? Collections.synchronizedSet(attributes) : attributes; + // DivineMC end if (!set.isEmpty()) { // CraftBukkit start - Send scaled max health -@@ -405,7 +408,7 @@ public class ServerEntity { +@@ -413,7 +416,7 @@ public class ServerEntity { this.broadcastAndSend(new ClientboundUpdateAttributesPacket(this.entity.getId(), set)); } diff --git a/patches/server/0040-Carpet-Fixes-RecipeManager-Optimize.patch b/patches/server/0040-Carpet-Fixes-RecipeManager-Optimize.patch new file mode 100644 index 0000000..75b6f23 --- /dev/null +++ b/patches/server/0040-Carpet-Fixes-RecipeManager-Optimize.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> +Date: Sun, 12 May 2024 18:12:53 +0300 +Subject: [PATCH] Carpet-Fixes: RecipeManager Optimize + +Original project: https://github.com/fxmorin/carpet-fixes +Improves: [Blast]Furnace/Campfire/Smoker/Stonecutter/Crafting/Sheep Color Choosing + +diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java +index de7c77c1b25680ecc65f0f43f2391aff269a974f..6d96e00d35be3d0d9fe7def5773c7f00d5951e99 100644 +--- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java ++++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java +@@ -21,6 +21,7 @@ import java.util.Map.Entry; + import java.util.Optional; + import java.util.stream.Collectors; + import java.util.stream.Stream; ++import java.util.ArrayList; + import javax.annotation.Nullable; + import net.minecraft.core.HolderLookup; + import net.minecraft.core.NonNullList; +@@ -128,7 +129,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener { + } + + public > 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 + } + + 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); + } ++ ++ public static boolean recipeManagerOptimization = true; ++ private static void optimizations() { ++ recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); ++ } + } diff --git a/patches/unapplied/server/0022-Carpet-Fixes-getBiome-Optimize.patch b/patches/server/0041-Carpet-Fixes-getBiome-Optimize.patch similarity index 95% rename from patches/unapplied/server/0022-Carpet-Fixes-getBiome-Optimize.patch rename to patches/server/0041-Carpet-Fixes-getBiome-Optimize.patch index 7d5f107..7b63739 100644 --- a/patches/unapplied/server/0022-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 c10403d781d25e4bb9e43d3f064fb1aebde00bfb..73b6c3590dad95cddd9cc1a1cff36492175da232 100644 +index a126361a640d3aac85785f3f24f9e5f712d4d2fe..b12578224a1ac9596a8e82c277efb71e1944c164 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -152,4 +152,9 @@ public class DivineConfig { - } - return builder.build(); +@@ -159,7 +159,9 @@ public class DivineConfig { } -+ + + public static boolean recipeManagerOptimization = true; + public static boolean biomeManagerOptimization = true; -+ private static void optimizations() { + private static void optimizations() { + recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); + biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); -+ } + } } diff --git a/patches/unapplied/server/0041-C2ME-reduce_allocs.patch b/patches/server/0042-C2ME-reduce_allocs.patch similarity index 100% rename from patches/unapplied/server/0041-C2ME-reduce_allocs.patch rename to patches/server/0042-C2ME-reduce_allocs.patch diff --git a/patches/unapplied/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch b/patches/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch similarity index 96% rename from patches/unapplied/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch rename to patches/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch index 29b9fb8..cd0d7df 100644 --- a/patches/unapplied/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch +++ b/patches/server/0043-Carpet-AMS-Addition-Optimized-dragon-respawn.patch @@ -110,22 +110,20 @@ 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 e2eac66da19b1e9bc5f776d85b487d769121a9b3..579b189b6d1752f8a51ddc13f6d4390517541661 100644 +index b12578224a1ac9596a8e82c277efb71e1944c164..66df0b923a4dfe15479f93a65983c927c8dbf112 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -156,10 +156,12 @@ public class DivineConfig { - public static boolean biomeManagerOptimization = true; - public static boolean sheepOptimization = true; +@@ -160,8 +160,10 @@ public class DivineConfig { + public static boolean recipeManagerOptimization = true; + public static boolean biomeManagerOptimization = true; + public static boolean optimizedDragonRespawn = true; private static void optimizations() { - biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); - sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization); recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); + biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); + optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn); } - - public static boolean noChatSign = true; + } diff --git a/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java b/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..1bf8f3d814d513ea2806bba9c26d207d14533cbd diff --git a/patches/unapplied/server/0044-C2ME-opts-math.patch b/patches/server/0044-C2ME-opts-math.patch similarity index 97% rename from patches/unapplied/server/0044-C2ME-opts-math.patch rename to patches/server/0044-C2ME-opts-math.patch index f60115f..5df2dc4 100644 --- a/patches/unapplied/server/0044-C2ME-opts-math.patch +++ b/patches/server/0044-C2ME-opts-math.patch @@ -281,20 +281,18 @@ 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 579b189b6d1752f8a51ddc13f6d4390517541661..8db0e71ee1ef7827b24938008c416ff960ab6be4 100644 +index 66df0b923a4dfe15479f93a65983c927c8dbf112..c09f32cb70a24a19a228fdf670d7815f619f6ddf 100644 --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -157,11 +157,13 @@ public class DivineConfig { - public static boolean sheepOptimization = true; +@@ -161,9 +161,11 @@ public class DivineConfig { public static boolean recipeManagerOptimization = true; + public static boolean biomeManagerOptimization = true; public static boolean optimizedDragonRespawn = true; + public static boolean optimizeNoiseGeneration = true; private static void optimizations() { - biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); - sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization); 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); } - - public static boolean noChatSign = true; + } diff --git a/patches/unapplied/server/0033-Carpet-Fixes-RecipeManager-Optimize.patch b/patches/unapplied/server/0033-Carpet-Fixes-RecipeManager-Optimize.patch deleted file mode 100644 index bb7ba84..0000000 --- a/patches/unapplied/server/0033-Carpet-Fixes-RecipeManager-Optimize.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> -Date: Sun, 12 May 2024 18:12:53 +0300 -Subject: [PATCH] Carpet-Fixes: RecipeManager Optimize - -Original project: https://github.com/fxmorin/carpet-fixes -Improves: [Blast]Furnace/Campfire/Smoker/Stonecutter/Crafting/Sheep Color Choosing - -diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java -index a31326e24cb68472c81cd781c5e3041772712862..8bb9c2c070717364a842e682ea6b87074157cf6d 100644 ---- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java -+++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java -@@ -21,6 +21,7 @@ import java.util.Map.Entry; - import java.util.Optional; - import java.util.stream.Collectors; - import java.util.stream.Stream; -+import java.util.ArrayList; - import javax.annotation.Nullable; - import net.minecraft.core.HolderLookup; - import net.minecraft.core.NonNullList; -@@ -105,7 +106,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener { - List> list = this.byType(type).stream().filter((recipeholder) -> { - return recipeholder.value().matches(inventory, world); - }).toList(); -- Optional> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.getLast()); // CraftBukkit - SPIGOT-4638: last recipe gets priority -+ Optional> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.get(list.size() - 1)); // CraftBukkit - SPIGOT-4638: last recipe gets priority - inventory.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found - return recipe; - // CraftBukkit end -@@ -125,14 +126,14 @@ public class RecipeManager extends SimpleJsonResourceReloadListener { - List> list = this.byType(type).stream().filter((recipeholder1) -> { - return recipeholder1.value().matches(inventory, world); - }).toList(); -- Optional> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.getLast()); // CraftBukkit - SPIGOT-4638: last recipe gets priority -+ Optional> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.get(list.size() - 1)); // CraftBukkit - SPIGOT-4638: last recipe gets priority - inventory.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found - return recipe; - // CraftBukkit end - } - - public > 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 - } - - public > List> getRecipesFor(RecipeType type, C inventory, 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 bf550fa360f69b714ac346333c78d7f8de2a71b9..9ae6daeb94232c2f8c5e8f9cc3a2df2f89cd4ed3 100644 ---- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java -@@ -155,8 +155,10 @@ public class DivineConfig { - - public static boolean biomeManagerOptimization = true; - public static boolean sheepOptimization = true; -+ public static boolean recipeManagerOptimization = true; - private static void optimizations() { - biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization); - sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization); -+ recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization); - } - }