Added aggressive option to lore getter

This commit is contained in:
Auxilor 2021-03-03 14:17:16 +00:00
parent dbdce95220
commit c45a9e3aa4
3 changed files with 44 additions and 11 deletions

View File

@ -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");

View File

@ -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.
* <p>
* 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<Enchantment, Integer> toAdd = new HashMap<>();
if (!((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().isUseLoreGetter()) {
return;
}
List<String> 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;
}

View File

@ -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.