fix disenchantment gui being broken

This commit is contained in:
alexcrea 2025-08-16 14:30:36 +02:00
parent 54801a07e6
commit aa86030f01
Signed by: alexcrea
GPG key ID: E346CD16413450E3

View file

@ -5,14 +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.AnvilInventory
import org.bukkit.inventory.ItemStack
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import xyz.alexcrea.cuanvil.util.AnvilXpUtil
import java.util.logging.Level
import kotlin.reflect.KClass
class DisenchantmentDependency {
@ -22,7 +26,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 {