From 1dad05e834e59b64359f1d77006b1bf13ae16ac7 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 17 Mar 2022 15:18:52 +0000 Subject: [PATCH] Fixed ItemConversions bugs --- .../enchantments/util/ItemConversionOptions.java | 2 ++ .../enchantments/util/ItemConversions.java | 16 +++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversionOptions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversionOptions.java index 727a72ea..dcea9e1d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversionOptions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversionOptions.java @@ -1,6 +1,7 @@ package com.willfp.ecoenchants.enchantments.util; import com.willfp.eco.core.EcoPlugin; +import com.willfp.eco.core.config.updating.ConfigUpdater; import com.willfp.ecoenchants.EcoEnchantsPlugin; import lombok.Getter; import lombok.experimental.UtilityClass; @@ -79,6 +80,7 @@ public class ItemConversionOptions { * * @param plugin Instance of ecoenchants. */ + @ConfigUpdater public void reload(@NotNull final EcoPlugin plugin) { usingLoreGetter = plugin.getConfigYml().getBool("advanced.lore-getter.enabled"); usingAggressiveLoreGetter = plugin.getConfigYml().getBool("advanced.lore-getter.aggressive"); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java index 531b9a1d..dc9cbdb9 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/ItemConversions.java @@ -247,7 +247,7 @@ public class ItemConversions extends PluginDependent implements Liste return; } - ItemStack itemStack = event.getPlayer().getInventory().getItem(event.getNewSlot()); + ItemStack itemStack = event.getPlayer().getInventory().getItemInMainHand(); clampItemLevels(itemStack, event.getPlayer()); } @@ -267,15 +267,17 @@ public class ItemConversions extends PluginDependent implements Liste return; } - if (meta instanceof EnchantmentStorageMeta) { - new HashMap<>(((EnchantmentStorageMeta) meta).getStoredEnchants()).forEach((enchantment, integer) -> { + Map levels = FastItemStack.wrap(itemStack).getEnchants(true); + + if (meta instanceof EnchantmentStorageMeta storageMeta) { + levels.forEach((enchantment, integer) -> { if (integer > enchantment.getMaxLevel()) { - ((EnchantmentStorageMeta) meta).removeStoredEnchant(enchantment); - ((EnchantmentStorageMeta) meta).addStoredEnchant(enchantment, enchantment.getMaxLevel(), true); + storageMeta.removeStoredEnchant(enchantment); + storageMeta.addStoredEnchant(enchantment, enchantment.getMaxLevel(), true); } }); } else { - new HashMap<>(meta.getEnchants()).forEach((enchantment, integer) -> { + levels.forEach((enchantment, integer) -> { if (integer > enchantment.getMaxLevel()) { meta.removeEnchant(enchantment); meta.addEnchant(enchantment, enchantment.getMaxLevel(), true); @@ -287,7 +289,7 @@ public class ItemConversions extends PluginDependent implements Liste if (ItemConversionOptions.isUsingLevelClampDelete()) { itemStack.setType(Material.AIR); - itemStack.setItemMeta(new ItemStack(Material.AIR).getItemMeta()); + itemStack.setAmount(0); Bukkit.getLogger().warning(player.getName() + " has/had an illegal item!"); } }