From 050d8bec8f7ea803fa07cc68a572238c5340e3e6 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 24 Dec 2024 09:49:12 +0100 Subject: [PATCH] Make the singular type enchantment work as expected --- .../willfp/ecoenchants/enchantments/EcoEnchant.java | 4 ++++ .../enchantments/meta/EnchantmentType.java | 9 +++++++++ .../cuanvil/enchant/wrapped/CALegacyEcoEnchant.java | 11 +++++++++++ 3 files changed, 24 insertions(+) create mode 100644 impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentType.java diff --git a/impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java b/impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java index 3d02666..edfe1e9 100644 --- a/impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java +++ b/impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java @@ -1,6 +1,7 @@ package com.willfp.ecoenchants.enchantments; import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget; +import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; import org.bukkit.enchantments.Enchantment; import org.jetbrains.annotations.NotNull; @@ -19,4 +20,7 @@ public class EcoEnchant { return null; } + public EnchantmentType getType() { + return null; + } } diff --git a/impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentType.java b/impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentType.java new file mode 100644 index 0000000..183ec74 --- /dev/null +++ b/impl/LegacyEcoEnchant/src/main/java/com/willfp/ecoenchants/enchantments/meta/EnchantmentType.java @@ -0,0 +1,9 @@ +package com.willfp.ecoenchants.enchantments.meta; + +public class EnchantmentType { + + public boolean isSingular() { + return false; + } + +} diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CALegacyEcoEnchant.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CALegacyEcoEnchant.java index 1c07a05..3b4242d 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CALegacyEcoEnchant.java +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CALegacyEcoEnchant.java @@ -2,6 +2,7 @@ package xyz.alexcrea.cuanvil.enchant.wrapped; import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget; +import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; @@ -25,11 +26,21 @@ public class CALegacyEcoEnchant extends CABukkitEnchantment implements Additiona public boolean isEnchantConflict(@NotNull Map enchantments, @NotNull Material itemMat) { if (enchantments.isEmpty()) return false; + EnchantmentType type = this.ecoEnchant.getType(); + boolean isSingular = type.isSingular(); + for (CAEnchantment other : enchantments.keySet()) { if (other instanceof CABukkitEnchantment otherVanilla && this.ecoEnchant.conflictsWith(otherVanilla.getEnchant())) { return true; } + + if (isSingular && + other != this && + (other instanceof CALegacyEcoEnchant otherEco) && + type.equals(otherEco.ecoEnchant.getType())) { + return true; + } } return false;