From ddcb3785e0dc8a75449e71ed378612a182154788 Mon Sep 17 00:00:00 2001 From: 12emin34 <43503468+12emin34@users.noreply.github.com> Date: Mon, 9 May 2022 23:45:47 +0200 Subject: [PATCH] Add toggle for enchant level clamping (#966) --- ...dd-toggle-for-enchant-level-clamping.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 patches/server/0272-Add-toggle-for-enchant-level-clamping.patch diff --git a/patches/server/0272-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0272-Add-toggle-for-enchant-level-clamping.patch new file mode 100644 index 000000000..53ded7f7f --- /dev/null +++ b/patches/server/0272-Add-toggle-for-enchant-level-clamping.patch @@ -0,0 +1,52 @@ +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/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java +index a999e4c82d7fe0ecf127f9132c29886d56c444e5..7471e59ad3362bc3d0bad6555fe29a9bb9ad74a6 100644 +--- a/src/main/java/net/minecraft/world/item/ItemStack.java ++++ b/src/main/java/net/minecraft/world/item/ItemStack.java +@@ -1151,7 +1151,7 @@ public final class ItemStack { + + ListTag nbttaglist = this.tag.getList("Enchantments", 10); + +- nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (byte) level)); ++ nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels) ? (byte) level : (short) level)); // Purpur + processEnchantOrder(this.tag); // Paper + } + +diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +index b3292c67658659cd3cf5117d70e20921db3a1e21..12daef6ab5b6d639dead667a6d53451821c13ed2 100644 +--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java ++++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +@@ -46,7 +46,7 @@ public class EnchantmentHelper { + } + + public static int getEnchantmentLevel(CompoundTag nbt) { +- return Mth.clamp(nbt.getInt("lvl"), 0, 255); ++ return Mth.clamp(nbt.getInt("lvl"), 0, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels) ? 255 : 32767); // Purpur + } + + @Nullable +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 659e93fb24124318367e5b4d0b144ca1443950e9..c5b18b8d4ad74764fdeb5a1e21231e212e808b99 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -378,6 +378,7 @@ public class PurpurConfig { + public static boolean allowShearsLooting = false; + public static boolean allowUnsafeEnchants = false; + public static boolean allowUnsafeEnchantCommand = false; ++ public static boolean clampEnchantLevels = true; + private static void enchantmentSettings() { + if (version < 5) { + boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); +@@ -389,6 +390,7 @@ public class PurpurConfig { + allowShearsLooting = getBoolean("settings.enchantment.allow-looting-on-shears", allowShearsLooting); + allowUnsafeEnchants = getBoolean("settings.enchantment.allow-unsafe-enchants", allowUnsafeEnchants); + allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability ++ clampEnchantLevels = getBoolean("settings.enchantment.clamp-levels", clampEnchantLevels); + } + + public static boolean endermanShortHeight = false;