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.DisenchantEvent
import com.jankominek.disenchantment.events.ShatterClickEvent import com.jankominek.disenchantment.events.ShatterClickEvent
import com.jankominek.disenchantment.events.ShatterEvent import com.jankominek.disenchantment.events.ShatterEvent
import com.jankominek.disenchantment.listeners.ShatterClickListener
import io.delilaheve.CustomAnvil import io.delilaheve.CustomAnvil
import org.bukkit.entity.HumanEntity import org.bukkit.entity.HumanEntity
import org.bukkit.event.Listener
import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.AnvilInventory import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import xyz.alexcrea.cuanvil.util.AnvilXpUtil import xyz.alexcrea.cuanvil.util.AnvilXpUtil
import java.util.logging.Level
import kotlin.reflect.KClass
class DisenchantmentDependency { class DisenchantmentDependency {
@ -22,7 +26,25 @@ class DisenchantmentDependency {
fun redirectListeners() { fun redirectListeners() {
PrepareAnvilEvent.getHandlerList().unregister(Disenchantment.plugin) 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 { fun testPrepareAnvil(event: PrepareAnvilEvent, player: HumanEntity): Boolean {