From 942bf436bbbb934a7975eb923b604286f9458499 Mon Sep 17 00:00:00 2001 From: LinoxGH Date: Mon, 29 Jun 2020 10:02:54 +0300 Subject: [PATCH] Did another requested change. --- .../items/magical/EnchantmentRune.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/EnchantmentRune.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/EnchantmentRune.java index 704b7bb30..5dfc4cba6 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/EnchantmentRune.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/EnchantmentRune.java @@ -3,6 +3,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.magical; import java.util.ArrayList; import java.util.Collection; import java.util.EnumMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Optional; @@ -87,20 +88,27 @@ public class EnchantmentRune extends SimpleSlimefunItem { Item entity = (Item) optional.get(); ItemStack target = entity.getItemStack(); - List enchantmentList = new ArrayList<>(applicableEnchantments.getOrDefault(target.getType(), new ArrayList<>())); - if (enchantmentList.isEmpty()) { + List applicableEnchantmentList = new ArrayList<>(applicableEnchantments.getOrDefault(target.getType(), new ArrayList<>())); + if (applicableEnchantmentList.isEmpty()) { SlimefunPlugin.getLocal().sendMessage(p, "messages.enchantment-rune.fail", true); return; } //Removing the enchantments that the item already has from enchantmentSet - enchantmentList.removeIf(enchantment -> target.getEnchantments().containsKey(enchantment)); - if (enchantmentList.isEmpty()) { + for (Enchantment itemEnchantment : target.getEnchantments().keySet()) { + for (Enchantment applicableEnchantment : applicableEnchantmentList) { + if (applicableEnchantment == itemEnchantment || applicableEnchantment.conflictsWith(itemEnchantment)) { + applicableEnchantmentList.remove(applicableEnchantment); + } + } + } + + if (applicableEnchantmentList.isEmpty()) { SlimefunPlugin.getLocal().sendMessage(p, "messages.enchantment-rune.no-enchantment", true); return; } - Enchantment enchantment = enchantmentList.get(ThreadLocalRandom.current().nextInt(enchantmentList.size())); + Enchantment enchantment = applicableEnchantmentList.get(ThreadLocalRandom.current().nextInt(applicableEnchantmentList.size())); int level = 1; if (enchantment.getMaxLevel() != 1) { level = ThreadLocalRandom.current().nextInt(enchantment.getMaxLevel()) + 1;