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 2d9959a11..906672b2f 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 @@ -12,6 +12,7 @@ import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.commons.lang.Validate; +import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -70,7 +71,7 @@ public class MagicianTalisman extends Talisman { // @formatter:off List enabled = enchantments.stream() - .filter(e -> e.getEnchantment().canEnchantItem(item)) + .filter(e -> item.getType() == Material.BOOK || e.getEnchantment().canEnchantItem(item)) .filter(e -> hasConflicts(existingEnchantments, e)) .filter(TalismanEnchantment::getValue) .collect(Collectors.toList()); 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 af2c8b561..7d9ca23d5 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 @@ -239,6 +239,10 @@ public class TalismanListener implements Listener { TalismanEnchantment enchantment = talisman.getRandomEnchantment(e.getItem(), enchantments.keySet()); if (enchantment != null) { + /* + * Fix #2679 + * By default, Bukkit doesn't allow book enchant any type enchantment. + */ if (e.getItem().getType() == Material.BOOK) { e.getItem().addUnsafeEnchantment(enchantment.getEnchantment(), enchantment.getLevel()); } else {