add excellent enchant limit

This commit is contained in:
alexcrea 2026-03-23 23:54:38 +01:00
parent 8ded2ae9c6
commit f3c6526967
Signed by: alexcrea
GPG key ID: E346CD16413450E3
8 changed files with 56 additions and 16 deletions

View file

@ -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")
}

View file

@ -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")
}

View file

@ -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();
}
}

View file

@ -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"
include("impl:ExcellentEnchant5_4")
findProject(":impl:ExcellentEnchant5_4")?.name = "ExcellentEnchant5_4"

View file

@ -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<CAEnchantment, Integer> 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;
}
}

View file

@ -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 {

View file

@ -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)