diff --git a/nms/v1_21R1/src/main/kotlin/xyz/alexcrea/cuanvil/util/ModernPrepareAnvilCreator.kt b/nms/v1_21R1/src/main/kotlin/xyz/alexcrea/cuanvil/util/ModernPrepareAnvilCreator.kt new file mode 100644 index 0000000..0c51e0a --- /dev/null +++ b/nms/v1_21R1/src/main/kotlin/xyz/alexcrea/cuanvil/util/ModernPrepareAnvilCreator.kt @@ -0,0 +1,12 @@ +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) + } +} diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt index 39bfad7..c2d3019 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ExcellentEnchantsDependency.kt @@ -13,6 +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.Method import su.nightexpress.excellentenchants.api.EnchantRegistry as V5EnchantRegistry import su.nightexpress.excellentenchants.enchantment.impl.universal.CurseOfFragilityEnchant as LegacyCurseOfFragilityEnchant @@ -219,13 +220,16 @@ class ExcellentEnchantsDependency { } fun treatAnvilResult(event: CATreatAnvilResult2Event) { - val result = event.result - if (result == null) return + val result = event.result ?: return val first: ItemStack = treatInput(event.leftItem) val second: ItemStack = treatInput(event.rightItem) - - val fakeEvent = PrepareAnvilEvent(event.view, result) + val fakeEvent: PrepareAnvilEvent = try { + //TODO remove this on legacy removal + PrepareAnvilEvent(event.view, result) + } catch (_: NoSuchMethodError) { + ModernPrepareAnvilCreator.createPrepareAnvil(event.view, result) + } handleCombineMethod.invoke(this.usedAnvilListener, fakeEvent, first, second, result) event.result = fakeEvent.result