diff --git a/build.gradle.kts b/build.gradle.kts index 04587bf..11dfb97 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,6 +27,9 @@ repositories { // EcoEnchants maven(url = "https://repo.auxilor.io/repository/maven-public/") + // ExcellentEnchants + maven(url = "https://repo.nightexpressdev.com/releases") + // ProtocoLib maven(url = "https://repo.dmulloy2.net/repository/public/") } @@ -48,8 +51,9 @@ dependencies { compileOnly("com.willfp:eco:6.74.5") // ExcellentEnchants - compileOnly(files("libs/nightcore-2.7.3.jar")) - compileOnly(files("libs/ExcellentEnchants-5.0.0.jar")) + compileOnly("su.nightexpress.excellentenchants:Core:5.1.0") { + exclude("org.spigotmc") + } // Disenchantment compileOnly(files("libs/Disenchantment-6.1.5.jar")) diff --git a/libs/ExcellentEnchants-4.3.3-striped.jar b/libs/ExcellentEnchants-4.3.3-striped.jar new file mode 100644 index 0000000..ff0656b Binary files /dev/null and b/libs/ExcellentEnchants-4.3.3-striped.jar differ diff --git a/libs/ExcellentEnchants-5.0.0.jar b/libs/ExcellentEnchants-5.0.0.jar deleted file mode 100644 index cd96e5d..0000000 Binary files a/libs/ExcellentEnchants-5.0.0.jar and /dev/null differ diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt index 9280de1..3d02cd3 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt @@ -5,15 +5,18 @@ import com.jankominek.disenchantment.events.DisenchantClickEvent import com.jankominek.disenchantment.events.DisenchantEvent import com.jankominek.disenchantment.events.ShatterClickEvent import com.jankominek.disenchantment.events.ShatterEvent +import com.jankominek.disenchantment.listeners.ShatterClickListener import io.delilaheve.CustomAnvil import org.bukkit.entity.HumanEntity +import org.bukkit.event.Listener import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.inventory.ItemStack import org.bukkit.inventory.view.AnvilView import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener import xyz.alexcrea.cuanvil.util.AnvilXpUtil - +import java.util.logging.Level +import kotlin.reflect.KClass @Suppress("unstableApiUsage") class DisenchantmentDependency { @@ -24,7 +27,25 @@ class DisenchantmentDependency { fun redirectListeners() { PrepareAnvilEvent.getHandlerList().unregister(Disenchantment.plugin) - InventoryClickEvent.getHandlerList().unregister(Disenchantment.plugin) + + // unregister only the feature click event and not all + // This is to avoid the disenchantment gui breaking + try { + unregisterStaticDisenchantmentListener(ShatterClickListener::class) + unregisterStaticDisenchantmentListener(InventoryClickEvent::class) + } catch (e: Exception) { + CustomAnvil.instance.logger.log( + Level.SEVERE, "Could not initialize disenchantment support" + + "please report this bug to the developer", e + ) + } + } + + private fun unregisterStaticDisenchantmentListener(clazz: KClass<*>) { + val field = clazz.java.getDeclaredField("listener") + field.isAccessible = true + val listener: Listener = field.get(null) as Listener + InventoryClickEvent.getHandlerList().unregister(listener) } fun testPrepareAnvil(event: PrepareAnvilEvent, player: HumanEntity): Boolean {