From 9e490711618af71a0cc240aa61b18cfb42ca7c49 Mon Sep 17 00:00:00 2001 From: StarWishsama Date: Sun, 24 Jan 2021 10:59:55 +0800 Subject: [PATCH] feat: Add ItemSetting for magician talisman This setting can set whether books can be enchanted. --- .../items/magical/talismans/MagicianTalisman.java | 14 ++++++++++++++ .../implementation/listeners/TalismanListener.java | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/talismans/MagicianTalisman.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/talismans/MagicianTalisman.java index 906672b2f..823bf9e74 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/talismans/MagicianTalisman.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/talismans/MagicianTalisman.java @@ -31,12 +31,16 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; */ public class MagicianTalisman extends Talisman { + private final ItemSetting allowEnchantBook = new ItemSetting<>("allow-enchant-book", false); + private final Set enchantments = new HashSet<>(); @ParametersAreNonnullByDefault public MagicianTalisman(SlimefunItemStack item, ItemStack[] recipe) { super(item, recipe, false, false, "magician", 80); + addItemSetting(allowEnchantBook); + for (Enchantment enchantment : Enchantment.values()) { try { for (int i = 1; i <= enchantment.getMaxLevel(); i++) { @@ -91,4 +95,14 @@ public class MagicianTalisman extends Talisman { return true; } + /** + * This method checks when enchanting book + * can it be applied a extra {@link Enchantment} or not. + * + * @return Whether the book can be apply extra {@link Enchantment} + */ + @Nonnull + public ItemSetting isAllowEnchantBook() { + return allowEnchantBook; + } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java index 7d9ca23d5..1fbf327b8 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java @@ -243,7 +243,7 @@ public class TalismanListener implements Listener { * Fix #2679 * By default, Bukkit doesn't allow book enchant any type enchantment. */ - if (e.getItem().getType() == Material.BOOK) { + if (talisman.isAllowEnchantBook().getValue() && e.getItem().getType() == Material.BOOK) { e.getItem().addUnsafeEnchantment(enchantment.getEnchantment(), enchantment.getLevel()); } else { enchantments.put(enchantment.getEnchantment(), enchantment.getLevel());