diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java index e8cab25..5e2b1c1 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentRegistry.java @@ -5,6 +5,7 @@ import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.enchant.bulk.BukkitEnchantBulkOperation; import xyz.alexcrea.cuanvil.enchant.bulk.BulkCleanEnchantOperation; import xyz.alexcrea.cuanvil.enchant.bulk.BulkGetEnchantOperation; @@ -80,6 +81,10 @@ public class CAEnchantmentRegistry { return false; } + if(ConfigHolder.DEFAULT_CONFIG.getConfig().getBoolean("caution_secret_do_not_log_duplicated_registered_key", false)){ + return false; + } + CustomAnvil.instance.getLogger().log(Level.WARNING, "Duplicate distinct registered enchantment. This should NOT happen any time.\n" + "If you are a custom anvil developer: Maybe custom anvil detected your enchantment as a bukkit enchantment. " + diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/bulk/BukkitEnchantBulkOperation.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/bulk/BukkitEnchantBulkOperation.java index 0ee60bd..c5bd07d 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/enchant/bulk/BukkitEnchantBulkOperation.java +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/bulk/BukkitEnchantBulkOperation.java @@ -1,7 +1,9 @@ package xyz.alexcrea.cuanvil.enchant.bulk; +import io.delilaheve.CustomAnvil; import io.delilaheve.util.ItemUtil; import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.ItemMeta; @@ -16,16 +18,27 @@ public class BukkitEnchantBulkOperation implements BulkGetEnchantOperation, Bulk @Override public void bulkGet(@NotNull Map enchantmentMap, @NotNull ItemStack item, @NotNull ItemMeta meta) { if (ItemUtil.INSTANCE.isEnchantedBook(item)) { - ((EnchantmentStorageMeta)meta).getStoredEnchants().forEach((enchantment, level) -> - enchantmentMap.put(EnchantmentApi.getByKey(enchantment.getKey()), level) + ((EnchantmentStorageMeta) meta).getStoredEnchants().forEach((enchantment, level) -> + addEnchantment(enchantmentMap, enchantment, level) ); } else { item.getEnchantments().forEach((enchantment, level) -> - enchantmentMap.put(EnchantmentApi.getByKey(enchantment.getKey()), level) + addEnchantment(enchantmentMap, enchantment, level) ); } } + public void addEnchantment(@NotNull Map enchantmentMap, @NotNull Enchantment enchantment, int level) { + CAEnchantment enchant = EnchantmentApi.getByKey(enchantment.getKey()); + if (enchant == null) { + CustomAnvil.instance.getLogger().warning("Enchantment of key " + enchantment.getKey() + + " somehow not found in CustomAnvil ?"); + return; + } + + enchantmentMap.put(enchant, level); + } + @Override public void bulkClear(@NotNull ItemStack item) { if (item.getType() != Material.ENCHANTED_BOOK) {