From c00834fd62631b64d8e2ae4066b09981097b2ac4 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 12 Jun 2021 10:47:55 +0100 Subject: [PATCH] Added flags --- .../ecoenchants/enchantments/EcoEnchant.java | 16 +++++++++++---- .../support/merging/anvil/AnvilMerge.java | 20 +++++++++++++++++-- 2 files changed, 30 insertions(+), 6 deletions(-) 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 abbc07a7..49c25e20 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 @@ -142,6 +142,11 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Watche @Getter private boolean enabled; + /** + * Custom option flags for the enchantment. + */ + private final List flags = new ArrayList<>(); + /** * Create a new EcoEnchant. * @@ -215,6 +220,8 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Watche targets.addAll(config.getTargets()); targets.forEach(enchantmentTarget -> targetMaterials.addAll(enchantmentTarget.getMaterials())); enabled = config.getBool("enabled"); + flags.clear(); + flags.addAll(config.getStrings(EcoEnchants.GENERAL_LOCATION + "flags")); EnchantmentUtils.registerPlaceholders(this); postUpdate(); @@ -253,12 +260,13 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Watche } /** - * Get enchantment cast to {@link Enchantment}. + * If enchantment has specified flag. * - * @return The enchantment. + * @param flag The flag. + * @return If the enchantment has the flag. */ - public Enchantment getEnchantment() { - return this; + public boolean hasFlag(@NotNull final String flag) { + return this.flags.contains(flag); } /** diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilMerge.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilMerge.java index 05b5b37f..4fdd5d1a 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilMerge.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/anvil/AnvilMerge.java @@ -144,7 +144,15 @@ public class AnvilMerge { if (PLUGIN.getConfigYml().getBool("anvil.hard-cap.enabled")) { if (!player.hasPermission("ecoenchants.anvil.bypasshardcap")) { - if (outEnchants.size() >= PLUGIN.getConfigYml().getInt("anvil.hard-cap.cap")) { + if (outEnchants.keySet() + .stream() + .filter(enchant -> { + if (enchant instanceof EcoEnchant) { + return !((EcoEnchant) enchant).hasFlag("hard-cap-ignore"); + } + + return true; + }).count() >= PLUGIN.getConfigYml().getInt("anvil.hard-cap.cap")) { return; } } @@ -182,7 +190,15 @@ public class AnvilMerge { if (PLUGIN.getConfigYml().getBool("anvil.hard-cap.enabled")) { if (!player.hasPermission("ecoenchants.anvil.bypasshardcap")) { - if (outEnchants.size() >= PLUGIN.getConfigYml().getInt("anvil.hard-cap.cap")) { + if (outEnchants.keySet() + .stream() + .filter(enchant -> { + if (enchant instanceof EcoEnchant) { + return !((EcoEnchant) enchant).hasFlag("hard-cap-ignore"); + } + + return true; + }).count() >= PLUGIN.getConfigYml().getInt("anvil.hard-cap.cap")) { doesConflict.set(true); } }