fix Excellent enchant compatibility (#96)

fix #93
This commit is contained in:
alexcrea 2025-11-06 23:08:53 +01:00 committed by GitHub
commit 0993b007a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 61 additions and 5 deletions

View file

@ -18,7 +18,7 @@ plugins {
}
group = "xyz.alexcrea"
version = "1.15.2"
version = "1.15.3"
val effectiveVersion = "$version" +
(if (System.getenv("SMALL_COMMIT_HASH") != null) "-dev-${System.getenv("SMALL_COMMIT_HASH")!!}" else "")
@ -52,6 +52,7 @@ dependencies {
compileOnly(project(":impl:LegacyEcoEnchant"))
// ExcellentEnchants
implementation(project(":impl:ExcellentEnchant5_3"))
compileOnly("su.nightexpress.excellentenchants:Core:5.1.0") {
exclude("org.spigotmc")
}

View file

@ -0,0 +1,21 @@
group = rootProject.group
version = rootProject.version
plugins {
kotlin("jvm") version "2.1.0"
}
repositories {
// ExcellentEnchants
maven(url = "https://repo.nightexpressdev.com/releases")
}
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")
}
}

View file

@ -0,0 +1,16 @@
package xyz.alexcrea.cuanvil.dependency.plugins;
import org.jetbrains.annotations.NotNull;
import su.nightexpress.excellentenchants.api.enchantment.CustomEnchantment;
import su.nightexpress.excellentenchants.enchantment.EnchantRegistry;
import java.util.Set;
public class ExcellentEnchant5_3Registry {
public static @NotNull Set<CustomEnchantment> getRegistered(){
return EnchantRegistry.getRegistered();
}
}

View file

@ -38,3 +38,5 @@ findProject(":nms:v1_21R6")?.name = "v1_21R6"
include(":impl:LegacyEcoEnchant")
findProject(":impl:LegacyEcoEnchant")?.name = "LegacyEcoEnchant"
include("impl:ExcellentEnchant5_3")
findProject(":impl:ExcellentEnchant5_3")?.name = "ExcellentEnchant5_3"

View file

@ -25,6 +25,7 @@ import su.nightexpress.excellentenchants.registry.EnchantRegistry as PreV5Enchan
class ExcellentEnchantsDependency {
enum class ListenerVersion(val classPath: String) {
V5_3("su.nightexpress.excellentenchants.enchantment.EnchantRegistry"),
V5("su.nightexpress.excellentenchants.manager.listener.AnvilListener"),
PRE_V5("su.nightexpress.excellentenchants.enchantment.listener.AnvilListener"),
LEGACY("su.nightexpress.excellentenchants.enchantment.listener.EnchantAnvilListener"),
@ -49,6 +50,8 @@ class ExcellentEnchantsDependency {
if (listenerVersion == null) {
CustomAnvil.instance.logger.severe("Found issue with listener of Excellent Enchants. compatiblity is broken. please contact CustomAnvil devs")
} else{
CustomAnvil.log("Support version: " + listenerVersion.name)
}
var isModernCurseOfFragility = true
@ -67,6 +70,13 @@ 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 -> {
for (enchantment in ExcellentEnchant5_3Registry.getRegistered()) {
EnchantmentApi.unregisterEnchantment(enchantment.bukkitEnchantment.key)
EnchantmentApi.registerEnchantment(CAEEV5Enchantment(enchantment))
}
}
ListenerVersion.V5 -> {
for (enchantment in V5EnchantRegistry.getRegistered()) {
EnchantmentApi.unregisterEnchantment(enchantment.bukkitEnchantment.key)
@ -119,7 +129,9 @@ class ExcellentEnchantsDependency {
}
when (listenerVersion) {
ListenerVersion.V5 -> {
ListenerVersion.V5,
ListenerVersion.V5_3
-> {
if (listener is V5AnvilListener) {
this.v5AnvilListener = listener
toUnregister.add(registeredListener)
@ -151,7 +163,9 @@ class ExcellentEnchantsDependency {
}
when (listenerVersion) {
ListenerVersion.V5 -> this.usedAnvilListener = v5AnvilListener!!
ListenerVersion.V5,
ListenerVersion.V5_3
-> this.usedAnvilListener = v5AnvilListener!!
ListenerVersion.PRE_V5 -> this.usedAnvilListener = preV5AnvilListener!!
ListenerVersion.LEGACY -> this.usedAnvilListener = legacyAnvilListener!!
null -> {}
@ -205,7 +219,9 @@ class ExcellentEnchantsDependency {
fun testAnvilResult(event: InventoryClickEvent): Any {
if (event.inventory.getItem(2) != null) {
when (listenerVersion) {
ListenerVersion.V5 -> v5AnvilListener!!.onClickAnvil(event)
ListenerVersion.V5,
ListenerVersion.V5_3
-> v5AnvilListener!!.onClickAnvil(event)
ListenerVersion.PRE_V5 -> preV5AnvilListener!!.onClickAnvil(event)
ListenerVersion.LEGACY -> legacyAnvilListener!!.onClickAnvil(event)
null -> {}