1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

fix: add enchant item check in filter

This commit is contained in:
StarWishsama 2021-01-23 18:49:42 +08:00
parent a94567333a
commit 48165dd138
2 changed files with 6 additions and 1 deletions

View File

@ -12,6 +12,7 @@ import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -70,7 +71,7 @@ public class MagicianTalisman extends Talisman {
// @formatter:off // @formatter:off
List<TalismanEnchantment> enabled = enchantments.stream() List<TalismanEnchantment> 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(e -> hasConflicts(existingEnchantments, e))
.filter(TalismanEnchantment::getValue) .filter(TalismanEnchantment::getValue)
.collect(Collectors.toList()); .collect(Collectors.toList());

View File

@ -239,6 +239,10 @@ public class TalismanListener implements Listener {
TalismanEnchantment enchantment = talisman.getRandomEnchantment(e.getItem(), enchantments.keySet()); TalismanEnchantment enchantment = talisman.getRandomEnchantment(e.getItem(), enchantments.keySet());
if (enchantment != null) { if (enchantment != null) {
/*
* Fix #2679
* By default, Bukkit doesn't allow book enchant any type enchantment.
*/
if (e.getItem().getType() == Material.BOOK) { if (e.getItem().getType() == Material.BOOK) {
e.getItem().addUnsafeEnchantment(enchantment.getEnchantment(), enchantment.getLevel()); e.getItem().addUnsafeEnchantment(enchantment.getEnchantment(), enchantment.getLevel());
} else { } else {