diff --git a/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch deleted file mode 100644 index b92cd1d23..000000000 --- a/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: 12emin34 -Date: Sat, 30 Apr 2022 10:32:40 +0200 -Subject: [PATCH] Add toggle for enchant level clamping - - -diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java -index 300a044bb0f0e377133f24469cea1a9669de6e58..978c0d7296f400fe2ebda89e4f61386e6e87fe0c 100644 ---- a/net/minecraft/server/Main.java -+++ b/net/minecraft/server/Main.java -@@ -122,6 +122,11 @@ public class Main { - JvmProfiler.INSTANCE.start(Environment.SERVER); - } - -+ // Purpur start - load config files early -+ org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("purpur-settings")); -+ org.purpurmc.purpur.PurpurConfig.clampEnchantLevels = purpurConfiguration.getBoolean("settings.enchantment.clamp-levels", true); -+ // Purpur end - load config files early -+ - io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper - Bootstrap.bootStrap(); - Bootstrap.validate(); -diff --git a/net/minecraft/world/item/enchantment/ItemEnchantments.java b/net/minecraft/world/item/enchantment/ItemEnchantments.java -index cfc6a657cae92c68868a76c1b7b1febe2a16e9f4..a12c08da793139e39dc11c213c94796b83bd8240 100644 ---- a/net/minecraft/world/item/enchantment/ItemEnchantments.java -+++ b/net/minecraft/world/item/enchantment/ItemEnchantments.java -@@ -35,7 +35,7 @@ public class ItemEnchantments implements TooltipProvider { - private static final java.util.Comparator> ENCHANTMENT_ORDER = java.util.Comparator.comparing(Holder::getRegisteredName); - public static final ItemEnchantments EMPTY = new ItemEnchantments(new Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), true); - // Paper end -- private static final Codec LEVEL_CODEC = Codec.intRange(1, 255); -+ private static final Codec LEVEL_CODEC = Codec.intRange(1, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)); // Purpur - private static final Codec>> LEVELS_CODEC = Codec.unboundedMap( - Enchantment.CODEC, LEVEL_CODEC - )// Paper start - sort enchantments -@@ -69,7 +69,7 @@ public class ItemEnchantments implements TooltipProvider { - - for (Entry> entry : enchantments.object2IntEntrySet()) { - int i = entry.getIntValue(); -- if (i < 0 || i > 255) { -+ if (i < 0 || i > (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)) { // Purpur - throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + i); - } - } -@@ -164,13 +164,13 @@ public class ItemEnchantments implements TooltipProvider { - if (level <= 0) { - this.enchantments.removeInt(enchantment); - } else { -- this.enchantments.put(enchantment, Math.min(level, 255)); -+ this.enchantments.put(enchantment, Math.min(level, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767))); // Purpur - } - } - - public void upgrade(Holder enchantment, int level) { - if (level > 0) { -- this.enchantments.merge(enchantment, Math.min(level, 255), Integer::max); -+ this.enchantments.merge(enchantment, Math.min(level, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)), Integer::max); // Purpur - } - } - -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 222d1850a9c0c6907dc9de534cff64c122a0bb89..6cd88ca590658adb8f79296fc74af3536e2e1be3 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -399,6 +399,7 @@ public class PurpurConfig { - public static boolean allowHigherEnchantsLevels = false; - public static boolean allowUnsafeEnchantCommand = false; - public static boolean replaceIncompatibleEnchants = false; -+ public static boolean clampEnchantLevels = true; - private static void enchantmentSettings() { - if (version < 30) { - boolean oldValue = getBoolean("settings.enchantment.allow-unsafe-enchants", false); -@@ -422,6 +423,7 @@ public class PurpurConfig { - allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); - allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchantCommand); - replaceIncompatibleEnchants = getBoolean("settings.enchantment.anvil.replace-incompatible-enchants", replaceIncompatibleEnchants); -+ clampEnchantLevels = getBoolean("settings.enchantment.clamp-levels", clampEnchantLevels); - } - - public static boolean endermanShortHeight = false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch new file mode 100644 index 000000000..0f50deccb --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch @@ -0,0 +1,14 @@ +--- a/net/minecraft/server/Main.java ++++ b/net/minecraft/server/Main.java +@@ -108,6 +_,11 @@ + JvmProfiler.INSTANCE.start(Environment.SERVER); + } + ++ // Purpur start - Add toggle for enchant level clamping - load config files early ++ org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("purpur-settings")); ++ org.purpurmc.purpur.PurpurConfig.clampEnchantLevels = purpurConfiguration.getBoolean("settings.enchantment.clamp-levels", true); ++ // Purpur end - Add toggle for enchant level clamping - load config files early ++ + io.papermc.paper.plugin.PluginInitializerManager.load(optionSet); // Paper + Bootstrap.bootStrap(); + Bootstrap.validate(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch new file mode 100644 index 000000000..acab23bbb --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch @@ -0,0 +1,36 @@ +--- a/net/minecraft/world/item/enchantment/ItemEnchantments.java ++++ b/net/minecraft/world/item/enchantment/ItemEnchantments.java +@@ -32,7 +_,7 @@ + private static final java.util.Comparator> ENCHANTMENT_ORDER = java.util.Comparator.comparing(Holder::getRegisteredName); + public static final ItemEnchantments EMPTY = new ItemEnchantments(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), true); + // Paper end +- private static final Codec LEVEL_CODEC = Codec.intRange(1, 255); ++ private static final Codec LEVEL_CODEC = Codec.intRange(1, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)); // Purpur - Add toggle for enchant level clamping + // Paper start - sort enchantments + private static final Codec>> LEVELS_CODEC = Codec.unboundedMap(Enchantment.CODEC, LEVEL_CODEC) + .xmap(m -> { +@@ -65,7 +_,7 @@ + + for (Entry> entry : enchantments.object2IntEntrySet()) { + int intValue = entry.getIntValue(); +- if (intValue < 0 || intValue > 255) { ++ if (intValue < 0 || intValue > (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)) { // Purpur - Add toggle for enchant level clamping + throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + intValue); + } + } +@@ -160,13 +_,13 @@ + if (level <= 0) { + this.enchantments.removeInt(enchantment); + } else { +- this.enchantments.put(enchantment, Math.min(level, 255)); ++ this.enchantments.put(enchantment, Math.min(level, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767))); // Purpur - Add toggle for enchant level clamping + } + } + + public void upgrade(Holder enchantment, int level) { + if (level > 0) { +- this.enchantments.merge(enchantment, Math.min(level, 255), Integer::max); ++ this.enchantments.merge(enchantment, Math.min(level, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)), Integer::max); // Purpur - Add toggle for enchant level clamping + } + } + diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 329a3449f..47208cb3a 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -392,6 +392,7 @@ public class PurpurConfig { public static boolean allowHigherEnchantsLevels = false; public static boolean allowUnsafeEnchantCommand = false; public static boolean replaceIncompatibleEnchants = false; + public static boolean clampEnchantLevels = true; private static void enchantmentSettings() { if (version < 30) { boolean oldValue = getBoolean("settings.enchantment.allow-unsafe-enchants", false); @@ -415,6 +416,7 @@ public class PurpurConfig { allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchantCommand); replaceIncompatibleEnchants = getBoolean("settings.enchantment.anvil.replace-incompatible-enchants", replaceIncompatibleEnchants); + clampEnchantLevels = getBoolean("settings.enchantment.clamp-levels", clampEnchantLevels); } public static boolean endermanShortHeight = false;