From 8bf70bb0fcc1cdb611f6ac1847a8873280b8a911 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 28 Aug 2021 21:27:41 +0100 Subject: [PATCH] Lots of painful requirement display changes --- .../ecoenchants/display/EnchantDisplay.java | 11 ++-- .../ecoenchants/display/EnchantmentCache.java | 54 ++++++++++--------- .../display/options/RequirementsOptions.java | 2 +- .../ecoenchants/enchantments/EcoEnchant.java | 6 +-- 4 files changed, 41 insertions(+), 32 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java index 79a6d1be..986dbde8 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java @@ -8,9 +8,11 @@ import com.willfp.eco.core.display.DisplayPriority; import com.willfp.eco.core.fast.FastItemStack; import com.willfp.eco.util.StringUtils; import com.willfp.ecoenchants.display.options.DisplayOptions; +import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget; import com.willfp.ecoenchants.enchantments.util.ItemConversionOptions; import lombok.Getter; +import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; @@ -76,7 +78,6 @@ public class EnchantDisplay extends DisplayModule { EnchantmentCache.update(); } - @SuppressWarnings("checkstyle:OperatorWrap") @Override protected void display(@NotNull final ItemStack itemStack, @Nullable final Player player, @@ -135,9 +136,13 @@ public class EnchantDisplay extends DisplayModule { } } - if (player != null) { - requirementLore.addAll(StringUtils.formatList(EnchantmentCache.getEntry(enchantment).getRequirementLore(), player)); + if (player != null && enchantment instanceof EcoEnchant ecoEnchant) { + if (!ecoEnchant.doesPlayerMeetRequirements(player)) { + requirementLore.addAll(StringUtils.formatList(EnchantmentCache.getEntry(enchantment).getRequirementLore(), player)); + } } + + Bukkit.getLogger().info((player == null) + " name: " + name + " requirementLore " + requirementLore); }); if (options.getShrinkOptions().isEnabled() && (enchantments.size() > options.getShrinkOptions().getThreshold())) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantmentCache.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantmentCache.java index ee2d8d6e..943a82a6 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantmentCache.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantmentCache.java @@ -20,6 +20,7 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.EnchantmentWrapper; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Arrays; @@ -207,6 +208,9 @@ public class EnchantmentCache { @Getter private final EnchantmentType type; + /** + * The requirement lore. + */ @Getter private final List requirementLore; @@ -251,38 +255,38 @@ public class EnchantmentCache { } /** - * Get the name with the level for a player. + * Get the name with the level. * * @param level The level. - * @param player The player. - * @return The name with the level for the player. + * @return The name with the level. */ - public String getNameWithLevel(final int level, - @NotNull final Player player) { - String name = getNameWithLevel(level); - if (enchantment instanceof EcoEnchant enchant) { - boolean meets = enchant.doesPlayerMeetRequirement(player); - if (meets) { - return name; - } - - String color = PLUGIN.getDisplayModule().getOptions().getRequirementsOptions().getRequirementColor(); - if (color.contains("{}")) { - name = name.replace("{}", name); - } else { - name = color + name; - } - } - return name; + public String getNameWithLevel(final int level) { + return getNameWithLevel(level, null); } /** * Get enchantment with level. * * @param level The level. + * @param player The player. * @return The name with the level. */ - public String getNameWithLevel(final int level) { + public String getNameWithLevel(final int level, + @Nullable final Player player) { + String unformattedName = rawName; + String formattedName = name; + if (enchantment instanceof EcoEnchant enchant && player != null) { + if (!enchant.doesPlayerMeetRequirements(player)) { + String color = PLUGIN.getDisplayModule().getOptions().getRequirementsOptions().getRequirementColor(); + if (color.contains("{}")) { + unformattedName = color.replace("{}", unformattedName); + formattedName = color.replace("{}", formattedName); + } else { + unformattedName = color + unformattedName; + formattedName = color + formattedName; + } + } + } if (!(enchantment.getMaxLevel() == 1 && level == 1)) { String numberString = " "; @@ -303,9 +307,9 @@ public class EnchantmentCache { numberString = color + numberString; } - return name + StringUtils.format(numberString); + return formattedName + StringUtils.format(numberString); } else { - String clone = rawName; + String clone = unformattedName; String color = PLUGIN.getDisplayModule().getOptions().getMaxLevelOptions().getAboveMaxLevelFormat(); if (color.contains("{}")) { clone = color.replace("{}", clone); @@ -315,10 +319,10 @@ public class EnchantmentCache { return StringUtils.format(clone + numberString); } } else { - return name + numberString; + return formattedName + numberString; } } else { - return name; + return formattedName; } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/RequirementsOptions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/RequirementsOptions.java index 7b73e6ff..31b464de 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/RequirementsOptions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/options/RequirementsOptions.java @@ -27,6 +27,6 @@ public class RequirementsOptions extends PluginDependent { * Update the options. */ public void update() { - requirementColor = this.getPlugin().getLangYml().getString("missing-requirements-format", false); + requirementColor = this.getPlugin().getLangYml().getBukkitHandle().getString("missing-requirements-format", ""); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java index acc2a2cb..8f2c8b20 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java @@ -255,10 +255,10 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Watche continue; } - this.requirements.put(requirement, split.subList(1, split.size() - 1)); + this.requirements.put(requirement, split.subList(1, split.size())); } requirementLore.clear(); - requirementLore.addAll(config.getStrings("requirements.not-met-lore", false)); + requirementLore.addAll(config.getStrings(EcoEnchants.GENERAL_LOCATION + "requirements.not-met-lore", false)); postUpdate(); this.register(); @@ -294,7 +294,7 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Watche * @param player The player. * @return If the requirements are met. */ - public boolean doesPlayerMeetRequirement(@NotNull final Player player) { + public boolean doesPlayerMeetRequirements(@NotNull final Player player) { if (cachedRequirements.containsKey(player.getUniqueId())) { return cachedRequirements.get(player.getUniqueId()); }