diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java index 6d94af17..d8ce2d58 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/DisplayOptions.java @@ -59,7 +59,13 @@ public class DisplayOptions extends PluginDependent { * Allow reading enchantments from lore-based plugins. */ @Getter - private boolean useLoreGetter = false; + private boolean usingLoreGetter = false; + + /** + * Allow reading enchantments from lore-based plugins aggressively. + */ + @Getter + private boolean usingAggressiveLoreGetter = false; /** * If the experimental hide fixer is being used. @@ -106,7 +112,8 @@ public class DisplayOptions extends PluginDependent { .collect(Collectors.toList())); sortedRarities.addAll(EnchantmentRarity.values().stream().filter(enchantmentRarity -> !sortedRarities.contains(enchantmentRarity)).collect(Collectors.toList())); - useLoreGetter = this.getPlugin().getConfigYml().getBool("advanced.lore-getter"); + usingLoreGetter = this.getPlugin().getConfigYml().getBool("advanced.lore-getter.enabled"); + usingAggressiveLoreGetter = this.getPlugin().getConfigYml().getBool("advanced.lore-getter.aggressive"); usingExperimentalHideFixer = this.getPlugin().getConfigYml().getBool("advanced.hide-fixer.enabled"); usingAggressiveExperimentalHideFixer = this.getPlugin().getConfigYml().getBool("advanced.hide-fixer.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 25c3aa79..33b11381 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 @@ -46,8 +46,34 @@ public class ItemConversions extends PluginDependent implements Listener { */ @EventHandler public void loreConverter(@NotNull final PlayerItemHeldEvent event) { + if (!((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().isUsingLoreGetter()) { + return; + } + ItemStack itemStack = event.getPlayer().getInventory().getItem(event.getNewSlot()); + convertLore(itemStack); + } + + /** + * On player hold item. + *

+ * Listener for lore conversion. + * + * @param event The event to listen for. + */ + @EventHandler + public void aggressiveLoreConverter(@NotNull final InventoryOpenEvent event) { + if (!((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().isUsingAggressiveLoreGetter()) { + return; + } + + for (ItemStack itemStack : event.getInventory().getContents()) { + convertLore(itemStack); + } + } + + private void convertLore(@Nullable final ItemStack itemStack) { if (itemStack == null) { return; } @@ -59,10 +85,6 @@ public class ItemConversions extends PluginDependent implements Listener { Map toAdd = new HashMap<>(); - if (!((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().isUseLoreGetter()) { - return; - } - List lore = meta.getLore(); if (lore == null) { @@ -146,7 +168,7 @@ public class ItemConversions extends PluginDependent implements Listener { * @param event The event to listen for. */ @EventHandler - public void hideFixer(@NotNull final InventoryOpenEvent event) { + public void aggressiveHideFixer(@NotNull final InventoryOpenEvent event) { if (!((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().isUsingAggressiveExperimentalHideFixer()) { return; } diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index 96e8a964..fad6ef62 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -112,10 +112,14 @@ drops: # Enabling this option makes all drops go through telekinesis listeners advanced: - lore-getter: false - # This converts enchantments with matching names from other enchantment plugins from lore into real enchantments. - # This is experimental not recommended to be used for extended periods of time: enchantments are automatically converted. - # Only use this if absolutely necessary as it may cause some bugs. + lore-getter: + # This converts enchantments with matching names from other enchantment plugins from lore into real enchantments. + # This is experimental not recommended to be used for extended periods of time: enchantments are automatically converted. + # Only use this if absolutely necessary as it may cause some bugs. + enabled: false + aggressive: false + # Aggressive mode converts all items in all inventories when opened. + # This will most likely have a significant performance penalty. hide-fixer: # Fixes some items obtained in older versions with a bug that caused enchantments to be hidden. # Works both in packets to display the enchants to the client as well as changing the server-side item too.