From 65a0a0ecc7267708a4e348f302a07ca8216f3e5f Mon Sep 17 00:00:00 2001 From: Will FP <38837418+WillFP@users.noreply.github.com> Date: Sat, 21 Aug 2021 01:22:16 +0100 Subject: [PATCH 1/2] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c5400276..2e5074e34 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,7 @@ Here's a list of some (not all) of the features of eco:


- + supps banner From 70e294501acdacdb8381b1b67fc9cd36c1a0cd42 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 21 Aug 2021 13:50:33 +0100 Subject: [PATCH 2/2] Fixed enchanted books in Items.lookup modifier --- .../java/com/willfp/eco/core/items/Items.java | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/eco-api/src/main/java/com/willfp/eco/core/items/Items.java b/eco-api/src/main/java/com/willfp/eco/core/items/Items.java index 032398148..6e1425e5e 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/items/Items.java +++ b/eco-api/src/main/java/com/willfp/eco/core/items/Items.java @@ -1,5 +1,6 @@ package com.willfp.eco.core.items; +import com.willfp.eco.core.items.builder.EnchantedBookBuilder; import com.willfp.eco.core.items.builder.ItemBuilder; import com.willfp.eco.core.items.builder.ItemStackBuilder; import com.willfp.eco.core.recipe.parts.EmptyTestableItem; @@ -12,6 +13,7 @@ import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; @@ -129,9 +131,17 @@ public TestableItem lookup(@NotNull final String key) { return item; } - ItemBuilder builder = new ItemStackBuilder(item.getItem()); - requiredEnchantments.forEach(builder::addEnchantment); - ItemStack example = builder.build(); + ItemStack example = item.getItem(); + + if (example.getItemMeta() instanceof EnchantmentStorageMeta storageMeta) { + requiredEnchantments.forEach((enchantment, integer) -> storageMeta.addStoredEnchant(enchantment, integer, true)); + example.setItemMeta(storageMeta); + } else { + ItemMeta meta = example.getItemMeta(); + assert meta != null; + requiredEnchantments.forEach((enchantment, integer) -> meta.addEnchant(enchantment, integer, true)); + example.setItemMeta(meta); + } return new ModifiedTestableItem( item, @@ -144,12 +154,23 @@ public TestableItem lookup(@NotNull final String key) { assert meta != null; - for (Map.Entry entry : requiredEnchantments.entrySet()) { - if (!meta.hasEnchant(entry.getKey())) { - return false; + if (meta instanceof EnchantmentStorageMeta storageMeta) { + for (Map.Entry entry : requiredEnchantments.entrySet()) { + if (!storageMeta.hasStoredEnchant(entry.getKey())) { + return false; + } + if (storageMeta.getStoredEnchantLevel(entry.getKey()) < entry.getValue()) { + return false; + } } - if (meta.getEnchantLevel(entry.getKey()) < entry.getValue()) { - return false; + } else { + for (Map.Entry entry : requiredEnchantments.entrySet()) { + if (!meta.hasEnchant(entry.getKey())) { + return false; + } + if (meta.getEnchantLevel(entry.getKey()) < entry.getValue()) { + return false; + } } }