better excellent enchant fake event [skip ci]

This commit is contained in:
alexcrea 2026-06-16 03:09:41 +02:00
parent 593527241a
commit 151666fd21
Signed by: alexcrea
GPG key ID: E346CD16413450E3
2 changed files with 5 additions and 19 deletions

View file

@ -1,12 +0,0 @@
package xyz.alexcrea.cuanvil.util
import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.view.AnvilView
object ModernPrepareAnvilCreator {
fun createPrepareAnvil(view: InventoryView, item: ItemStack?): PrepareAnvilEvent {
return PrepareAnvilEvent(view as AnvilView, item)
}
}

View file

@ -13,7 +13,7 @@ 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 xyz.alexcrea.cuanvil.util.ModernPrepareAnvilCreator
import java.lang.reflect.Constructor
import java.lang.reflect.Method
import su.nightexpress.excellentenchants.api.EnchantRegistry as V5EnchantRegistry
import su.nightexpress.excellentenchants.enchantment.impl.universal.CurseOfFragilityEnchant as LegacyCurseOfFragilityEnchant
@ -118,6 +118,8 @@ class ExcellentEnchantsDependency {
private lateinit var handleRechargeMethod: Method
private lateinit var handleCombineMethod: Method
private val prepareAnvilConstructor = PrepareAnvilEvent::class.java.constructors.first() as Constructor<PrepareAnvilEvent>
fun redirectListeners() {
val toUnregister = ArrayList<RegisteredListener>()
// get required PrepareAnvilEvent listener
@ -224,12 +226,8 @@ class ExcellentEnchantsDependency {
val first: ItemStack = treatInput(event.leftItem)
val second: ItemStack = treatInput(event.rightItem)
val fakeEvent: PrepareAnvilEvent = try {
//TODO remove this on legacy removal
PrepareAnvilEvent(event.view, result)
} catch (_: NoSuchMethodError) {
ModernPrepareAnvilCreator.createPrepareAnvil(event.view, result)
}
val fakeEvent = prepareAnvilConstructor.newInstance(event.view, result)
handleCombineMethod.invoke(this.usedAnvilListener, fakeEvent, first, second, result)
event.result = fakeEvent.result