mirror of
https://github.com/Auxilor/EcoEnchants.git
synced 2025-02-25 06:01:40 +01:00
Added hide fixer
This commit is contained in:
parent
b56eea6aaa
commit
dbdce95220
@ -24,7 +24,7 @@ import com.willfp.ecoenchants.enchantments.support.merging.grindstone.Grindstone
|
||||
import com.willfp.ecoenchants.enchantments.support.obtaining.EnchantingListeners;
|
||||
import com.willfp.ecoenchants.enchantments.support.obtaining.LootPopulator;
|
||||
import com.willfp.ecoenchants.enchantments.support.obtaining.VillagerListeners;
|
||||
import com.willfp.ecoenchants.enchantments.util.HoldItemListener;
|
||||
import com.willfp.ecoenchants.enchantments.util.ItemConversions;
|
||||
import com.willfp.ecoenchants.enchantments.util.WatcherTriggers;
|
||||
import com.willfp.ecoenchants.integrations.essentials.EssentialsManager;
|
||||
import com.willfp.ecoenchants.integrations.essentials.plugins.IntegrationEssentials;
|
||||
@ -191,7 +191,7 @@ public class EcoEnchantsPlugin extends AbstractEcoPlugin {
|
||||
new AnvilListeners(this),
|
||||
new WatcherTriggers(this),
|
||||
new VillagerListeners(this),
|
||||
new HoldItemListener(this)
|
||||
new ItemConversions(this)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -242,6 +242,10 @@ public class EnchantDisplay extends DisplayModule {
|
||||
hideEnchants = false;
|
||||
}
|
||||
|
||||
if (options.isUsingExperimentalHideFixer() && meta.hasItemFlag(ItemFlag.HIDE_ENCHANTS) && meta.hasItemFlag(ItemFlag.HIDE_POTION_EFFECTS)) {
|
||||
hideEnchants = false;
|
||||
}
|
||||
|
||||
return new Object[]{hideEnchants};
|
||||
}
|
||||
}
|
||||
|
@ -61,6 +61,18 @@ public class DisplayOptions extends PluginDependent {
|
||||
@Getter
|
||||
private boolean useLoreGetter = false;
|
||||
|
||||
/**
|
||||
* If the experimental hide fixer is being used.
|
||||
*/
|
||||
@Getter
|
||||
private boolean usingExperimentalHideFixer = false;
|
||||
|
||||
/**
|
||||
* If the aggressive experimental hide fixer is being used.
|
||||
*/
|
||||
@Getter
|
||||
private boolean usingAggressiveExperimentalHideFixer = false;
|
||||
|
||||
/**
|
||||
* Instantiate new display options.
|
||||
*
|
||||
@ -95,6 +107,8 @@ public class DisplayOptions extends PluginDependent {
|
||||
sortedRarities.addAll(EnchantmentRarity.values().stream().filter(enchantmentRarity -> !sortedRarities.contains(enchantmentRarity)).collect(Collectors.toList()));
|
||||
|
||||
useLoreGetter = this.getPlugin().getConfigYml().getBool("advanced.lore-getter");
|
||||
usingExperimentalHideFixer = this.getPlugin().getConfigYml().getBool("advanced.hide-fixer.enabled");
|
||||
usingAggressiveExperimentalHideFixer = this.getPlugin().getConfigYml().getBool("advanced.hide-fixer.aggressive");
|
||||
|
||||
boolean byType = this.getPlugin().getConfigYml().getBool("lore.sort-by-type");
|
||||
boolean byLength = this.getPlugin().getConfigYml().getBool("lore.sort-by-length");
|
||||
|
@ -6,15 +6,19 @@ import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import com.willfp.ecoenchants.display.EnchantDisplay;
|
||||
import com.willfp.ecoenchants.enchantments.EcoEnchant;
|
||||
import com.willfp.ecoenchants.enchantments.EcoEnchants;
|
||||
import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@ -23,13 +27,13 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class HoldItemListener extends PluginDependent implements Listener {
|
||||
public class ItemConversions extends PluginDependent implements Listener {
|
||||
/**
|
||||
* Instantiate HoldItemListener.
|
||||
* Instantiate item conversions.
|
||||
*
|
||||
* @param plugin Instance of EcoEnchants.
|
||||
*/
|
||||
public HoldItemListener(@NotNull final AbstractEcoPlugin plugin) {
|
||||
public ItemConversions(@NotNull final AbstractEcoPlugin plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@ -41,7 +45,7 @@ public class HoldItemListener extends PluginDependent implements Listener {
|
||||
* @param event The event to listen for.
|
||||
*/
|
||||
@EventHandler
|
||||
public void onHoldItem(@NotNull final PlayerItemHeldEvent event) {
|
||||
public void loreConverter(@NotNull final PlayerItemHeldEvent event) {
|
||||
ItemStack itemStack = event.getPlayer().getInventory().getItem(event.getNewSlot());
|
||||
|
||||
if (itemStack == null) {
|
||||
@ -115,4 +119,61 @@ public class HoldItemListener extends PluginDependent implements Listener {
|
||||
meta.setLore(lore);
|
||||
itemStack.setItemMeta(meta);
|
||||
}
|
||||
|
||||
/**
|
||||
* On player hold item.
|
||||
* <p>
|
||||
* Listener for hide fixer.
|
||||
*
|
||||
* @param event The event to listen for.
|
||||
*/
|
||||
@EventHandler
|
||||
public void hideFixer(@NotNull final PlayerItemHeldEvent event) {
|
||||
if (!((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().isUsingExperimentalHideFixer()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack itemStack = event.getPlayer().getInventory().getItem(event.getNewSlot());
|
||||
|
||||
hideFixItem(itemStack);
|
||||
}
|
||||
|
||||
/**
|
||||
* On player hold item.
|
||||
* <p>
|
||||
* Listener for hide fixer.
|
||||
*
|
||||
* @param event The event to listen for.
|
||||
*/
|
||||
@EventHandler
|
||||
public void hideFixer(@NotNull final InventoryOpenEvent event) {
|
||||
if (!((EnchantDisplay) this.getPlugin().getDisplayModule()).getOptions().isUsingAggressiveExperimentalHideFixer()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (ItemStack itemStack : event.getInventory().getContents()) {
|
||||
hideFixItem(itemStack);
|
||||
}
|
||||
}
|
||||
|
||||
private void hideFixItem(@Nullable final ItemStack itemStack) {
|
||||
if (itemStack == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!EnchantmentTarget.ALL.getMaterials().contains(itemStack.getType())) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemMeta meta = itemStack.getItemMeta();
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (meta.hasItemFlag(ItemFlag.HIDE_ENCHANTS) && meta.hasItemFlag(ItemFlag.HIDE_POTION_EFFECTS)) {
|
||||
meta.removeItemFlags(ItemFlag.HIDE_ENCHANTS, ItemFlag.HIDE_POTION_EFFECTS);
|
||||
}
|
||||
|
||||
itemStack.setItemMeta(meta);
|
||||
}
|
||||
}
|
@ -115,4 +115,12 @@ 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.
|
||||
# Only use this if absolutely necessary as it may cause some bugs.
|
||||
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.
|
||||
# Only use this option if you've encountered this bug as it may strip HideEnchants from items that you might not expect it to.
|
||||
enabled: false
|
||||
aggressive: false
|
||||
# Aggressive mode converts all items in all inventories whenever revealed.
|
||||
# This may impact performance.
|
Loading…
Reference in New Issue
Block a user