diff options
Diffstat (limited to 'patches/server/1066-Add-AnvilView-bypassEnchantmentLevelRestriction.patch')
-rw-r--r-- | patches/server/1066-Add-AnvilView-bypassEnchantmentLevelRestriction.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/patches/server/1066-Add-AnvilView-bypassEnchantmentLevelRestriction.patch b/patches/server/1066-Add-AnvilView-bypassEnchantmentLevelRestriction.patch new file mode 100644 index 0000000000..b67e8bea16 --- /dev/null +++ b/patches/server/1066-Add-AnvilView-bypassEnchantmentLevelRestriction.patch @@ -0,0 +1,53 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Doc <[email protected]> +Date: Sun, 6 Oct 2024 16:46:36 -0300 +Subject: [PATCH] Add AnvilView#bypassEnchantmentLevelRestriction + +Anvils, by default, limit applied enchantment levels to their respective +maximum level. The added API enables plugins to disable this behaviour, +allowing enchantments that are overleveled to be applied via the anvil. + +diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +index d685511104ac552dfc9ae2111e1bfb60fa812102..362278407679f245ebcea778f2199b357339e1fe 100644 +--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java ++++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +@@ -53,6 +53,7 @@ public class AnvilMenu extends ItemCombinerMenu { + public int maximumRepairCost = 40; + private CraftAnvilView bukkitEntity; + // CraftBukkit end ++ public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions + + public AnvilMenu(int syncId, Inventory inventory) { + this(syncId, inventory, ContainerLevelAccess.NULL); +@@ -231,7 +232,7 @@ public class AnvilMenu extends ItemCombinerMenu { + flag2 = true; + } else { + flag1 = true; +- if (i2 > enchantment.getMaxLevel()) { ++ if (i2 > enchantment.getMaxLevel() && !this.bypassEnchantmentLevelRestriction) { // Paper - bypass anvil level restrictions + i2 = enchantment.getMaxLevel(); + } + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +index e2d8d69c5ae8feb6840462ba8332344972658d83..59f0b1207931a2a10d559f43e2926b17e6991257 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +@@ -50,6 +50,18 @@ public class CraftAnvilView extends CraftInventoryView<AnvilMenu> implements Anv + this.container.maximumRepairCost = cost; + } + ++ // Paper start ++ @Override ++ public boolean bypassesEnchantmentLevelRestriction() { ++ return this.container.bypassEnchantmentLevelRestriction; ++ } ++ ++ @Override ++ public void bypassEnchantmentLevelRestriction(final boolean bypassEnchantmentLevelRestriction) { ++ this.container.bypassEnchantmentLevelRestriction = bypassEnchantmentLevelRestriction; ++ } ++ // Paper end ++ + public void updateFromLegacy(CraftInventoryAnvil legacy) { + if (legacy.isRepairCostSet()) { + this.setRepairCost(legacy.getRepairCost()); |