From f3c6526967f594b27398a3c194d49da175c04b06 Mon Sep 17 00:00:00 2001 From: alexcrea Date: Mon, 23 Mar 2026 23:54:38 +0100 Subject: [PATCH] add excellent enchant limit --- build.gradle.kts | 2 +- .../build.gradle.kts | 8 ++--- .../plugins/ExcellentEnchant5_3Registry.java | 0 .../ExcellentEnchant5_4EnchantSettings.java | 12 ++++++++ settings.gradle.kts | 4 +-- .../enchant/wrapped/CAEEV5_4Enchantment.java | 29 +++++++++++++++++++ .../packet/PacketManagerSelector.kt | 2 -- .../plugins/ExcellentEnchantsDependency.kt | 15 ++++++---- 8 files changed, 56 insertions(+), 16 deletions(-) rename impl/{ExcellentEnchant5_3 => ExcellentEnchant5_4}/build.gradle.kts (57%) rename impl/{ExcellentEnchant5_3 => ExcellentEnchant5_4}/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_3Registry.java (100%) create mode 100644 impl/ExcellentEnchant5_4/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_4EnchantSettings.java create mode 100644 src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CAEEV5_4Enchantment.java diff --git a/build.gradle.kts b/build.gradle.kts index 2a7e922..6006fdc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -71,7 +71,7 @@ dependencies { compileOnly(project(":impl:LegacyEcoEnchant")) // ExcellentEnchants - implementation(project(":impl:ExcellentEnchant5_3")) + implementation(project(":impl:ExcellentEnchant5_4")) compileOnly("su.nightexpress.excellentenchants:Core:5.1.0") { exclude("org.spigotmc") } diff --git a/impl/ExcellentEnchant5_3/build.gradle.kts b/impl/ExcellentEnchant5_4/build.gradle.kts similarity index 57% rename from impl/ExcellentEnchant5_3/build.gradle.kts rename to impl/ExcellentEnchant5_4/build.gradle.kts index 7004edf..21335d5 100644 --- a/impl/ExcellentEnchant5_3/build.gradle.kts +++ b/impl/ExcellentEnchant5_4/build.gradle.kts @@ -11,11 +11,7 @@ repositories { } dependencies { - // Spigot api - compileOnly("org.spigotmc:spigot-api:1.18-R0.1-SNAPSHOT") - // Excellent Enchant - compileOnly("su.nightexpress.excellentenchants:Core:5.3.0") { - exclude("org.spigotmc") - } + compileOnly("su.nightexpress.excellentenchants:Core:5.4.1") + compileOnly("su.nightexpress.nightcore:main:2.14.1") } \ No newline at end of file diff --git a/impl/ExcellentEnchant5_3/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_3Registry.java b/impl/ExcellentEnchant5_4/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_3Registry.java similarity index 100% rename from impl/ExcellentEnchant5_3/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_3Registry.java rename to impl/ExcellentEnchant5_4/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_3Registry.java diff --git a/impl/ExcellentEnchant5_4/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_4EnchantSettings.java b/impl/ExcellentEnchant5_4/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_4EnchantSettings.java new file mode 100644 index 0000000..49dde3e --- /dev/null +++ b/impl/ExcellentEnchant5_4/src/main/java/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchant5_4EnchantSettings.java @@ -0,0 +1,12 @@ +package xyz.alexcrea.cuanvil.dependency.plugins; + +import su.nightexpress.excellentenchants.EnchantsAPI; + +public class ExcellentEnchant5_4EnchantSettings { + + + public static int anvilLimit() { + return EnchantsAPI.getEnchantManager().getSettings().getAnvilEnchantsLimit(); + } + +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 81418f0..9de7d8c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,5 +18,5 @@ for (nmsPart in reobfNMS) { // compatibility subprojects include(":impl:LegacyEcoEnchant") findProject(":impl:LegacyEcoEnchant")?.name = "LegacyEcoEnchant" -include("impl:ExcellentEnchant5_3") -findProject(":impl:ExcellentEnchant5_3")?.name = "ExcellentEnchant5_3" \ No newline at end of file +include("impl:ExcellentEnchant5_4") +findProject(":impl:ExcellentEnchant5_4")?.name = "ExcellentEnchant5_4" \ No newline at end of file diff --git a/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CAEEV5_4Enchantment.java b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CAEEV5_4Enchantment.java new file mode 100644 index 0000000..335430f --- /dev/null +++ b/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CAEEV5_4Enchantment.java @@ -0,0 +1,29 @@ +package xyz.alexcrea.cuanvil.enchant.wrapped; + +import org.bukkit.Material; +import org.jetbrains.annotations.NotNull; +import su.nightexpress.excellentenchants.api.enchantment.CustomEnchantment; +import xyz.alexcrea.cuanvil.dependency.plugins.ExcellentEnchant5_4EnchantSettings; +import xyz.alexcrea.cuanvil.enchant.CAEnchantment; + +import java.util.Map; + +public class CAEEV5_4Enchantment extends CAEEV5Enchantment { + + public CAEEV5_4Enchantment(@NotNull CustomEnchantment enchantment) { + super(enchantment); + } + + @Override + public boolean isEnchantConflict(@NotNull Map enchantments, @NotNull Material itemMat) { + if(super.isEnchantConflict(enchantments, itemMat)) return true; + + var limit = ExcellentEnchant5_4EnchantSettings.anvilLimit(); + var count = enchantments.keySet().stream() + .filter(key -> key instanceof CAEEV5_4Enchantment) + .count(); + + return count > limit; + } + +} diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt index 775d197..4c3d680 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.kt @@ -1,10 +1,8 @@ package xyz.alexcrea.cuanvil.dependency.packet import org.bukkit.Bukkit -import su.nightexpress.nightcore.bridge.paper.PaperBridge import xyz.alexcrea.cuanvil.dependency.MinecraftVersionUtil import xyz.alexcrea.cuanvil.dependency.packet.versions.* -import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil import xyz.alexcrea.cuanvil.update.UpdateUtils object PacketManagerSelector { diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt index ebc4ad9..54ea2f4 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt @@ -11,6 +11,7 @@ import xyz.alexcrea.cuanvil.api.EnchantmentApi import xyz.alexcrea.cuanvil.api.event.listener.CATreatAnvilResultEvent import xyz.alexcrea.cuanvil.enchant.wrapped.CAEEPreV5Enchantment import xyz.alexcrea.cuanvil.enchant.wrapped.CAEEV5Enchantment +import xyz.alexcrea.cuanvil.enchant.wrapped.CAEEV5_4Enchantment import xyz.alexcrea.cuanvil.enchant.wrapped.CALegacyEEEnchantment import java.lang.reflect.Method import su.nightexpress.excellentenchants.api.EnchantRegistry as V5EnchantRegistry @@ -25,6 +26,7 @@ import su.nightexpress.excellentenchants.registry.EnchantRegistry as PreV5Enchan class ExcellentEnchantsDependency { enum class ListenerVersion(val classPath: String) { + V5_4("su.nightexpress.excellentenchants.enchantment.EnchantSettings"), V5_3("su.nightexpress.excellentenchants.enchantment.EnchantRegistry"), V5("su.nightexpress.excellentenchants.manager.listener.AnvilListener"), PRE_V5("su.nightexpress.excellentenchants.enchantment.listener.AnvilListener"), @@ -70,14 +72,14 @@ class ExcellentEnchantsDependency { // As excellent enchants is loaded before custom anvil and register enchantment to registry, we need to unregister old "vanilla" enchant. when (listenerVersion) { - ListenerVersion.V5_3 -> { + ListenerVersion.V5_4 -> { for (enchantment in ExcellentEnchant5_3Registry.getRegistered()) { EnchantmentApi.unregisterEnchantment(enchantment.bukkitEnchantment.key) - EnchantmentApi.registerEnchantment(CAEEV5Enchantment(enchantment)) + EnchantmentApi.registerEnchantment(CAEEV5_4Enchantment(enchantment)) } } - ListenerVersion.V5 -> { + ListenerVersion.V5, ListenerVersion.V5_3 -> { for (enchantment in V5EnchantRegistry.getRegistered()) { EnchantmentApi.unregisterEnchantment(enchantment.bukkitEnchantment.key) EnchantmentApi.registerEnchantment(CAEEV5Enchantment(enchantment)) @@ -130,7 +132,8 @@ class ExcellentEnchantsDependency { when (listenerVersion) { ListenerVersion.V5, - ListenerVersion.V5_3 + ListenerVersion.V5_3, + ListenerVersion.V5_4, -> { if (listener is V5AnvilListener) { this.v5AnvilListener = listener @@ -165,6 +168,7 @@ class ExcellentEnchantsDependency { when (listenerVersion) { ListenerVersion.V5_3, ListenerVersion.V5, + ListenerVersion.V5_4, -> this.usedAnvilListener = v5AnvilListener!! ListenerVersion.PRE_V5 -> this.usedAnvilListener = preV5AnvilListener!! ListenerVersion.LEGACY -> this.usedAnvilListener = legacyAnvilListener!! @@ -228,7 +232,8 @@ class ExcellentEnchantsDependency { if (event.inventory.getItem(2) != null) { when (listenerVersion) { ListenerVersion.V5, - ListenerVersion.V5_3 + ListenerVersion.V5_3, + ListenerVersion.V5_4, -> v5AnvilListener!!.onClickAnvil(event) ListenerVersion.PRE_V5 -> preV5AnvilListener!!.onClickAnvil(event) ListenerVersion.LEGACY -> legacyAnvilListener!!.onClickAnvil(event)