From 21684454a6b2f71493f198f1c9e38fb71235765f Mon Sep 17 00:00:00 2001 From: youhavetrouble Date: Wed, 15 Nov 2023 19:31:26 +0100 Subject: [PATCH] remove mending from enchanted book storage data --- pom.xml | 2 +- .../youhavetrouble/mendingbegone/MendingBeGone.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d4c8ee3..4a67998 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.youhavetrouble MendingBeGone - 1.1 + 1.2 jar MendingBeGone diff --git a/src/main/java/me/youhavetrouble/mendingbegone/MendingBeGone.java b/src/main/java/me/youhavetrouble/mendingbegone/MendingBeGone.java index c9a1c43..58a9b0d 100644 --- a/src/main/java/me/youhavetrouble/mendingbegone/MendingBeGone.java +++ b/src/main/java/me/youhavetrouble/mendingbegone/MendingBeGone.java @@ -16,6 +16,7 @@ import org.bukkit.inventory.Merchant; import org.bukkit.inventory.MerchantInventory; import org.bukkit.inventory.MerchantRecipe; import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; import java.util.ArrayList; @@ -69,12 +70,24 @@ public final class MendingBeGone extends JavaPlugin implements Listener { private void replaceMendingOnItem(ItemStack itemStack) { if (itemStack == null) return; + if (!itemStack.hasItemMeta()) return; if (itemStack.containsEnchantment(Enchantment.MENDING)) { itemStack.removeEnchantment(Enchantment.MENDING); if (itemStack.containsEnchantment(Enchantment.DURABILITY)) itemStack.removeEnchantment(Enchantment.DURABILITY); itemStack.addEnchantment(Enchantment.DURABILITY, 3); } + if (!Material.ENCHANTED_BOOK.equals(itemStack.getType())) return; + ItemMeta meta = itemStack.getItemMeta(); + if (!(meta instanceof EnchantmentStorageMeta)) return; + EnchantmentStorageMeta storage = (EnchantmentStorageMeta) meta; + if (storage.hasStoredEnchant(Enchantment.MENDING)) { + storage.removeStoredEnchant(Enchantment.MENDING); + if (storage.hasStoredEnchant(Enchantment.DURABILITY)) + storage.removeStoredEnchant(Enchantment.DURABILITY); + storage.addStoredEnchant(Enchantment.DURABILITY, 3, true); + itemStack.setItemMeta(storage); + } } private void removeMendingTrade(Merchant merchant) {