diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt index e906a4a..4c8e9f6 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt @@ -101,6 +101,9 @@ object DependencyManager { if (pluginManager.isPluginEnabled("ToolStats")) genericDependencies.add(ToolStatsDependency(pluginManager.getPlugin("ToolStats")!!)) + if (pluginManager.isPluginEnabled("ItemsAdder")) + genericDependencies.add(GenericPluginDependency(pluginManager.getPlugin("ItemsAdder")!!)) + for (dependency in genericDependencies) dependency.redirectListeners() diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/GenericPluginDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/GenericPluginDependency.kt index 775a057..85b66d5 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/GenericPluginDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/GenericPluginDependency.kt @@ -5,20 +5,14 @@ import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.plugin.Plugin import org.bukkit.plugin.RegisteredListener -abstract class GenericPluginDependency(protected val plugin: Plugin) { +open class GenericPluginDependency(protected val plugin: Plugin) { - protected val preAnvil = ArrayList() - protected val postAnvil = ArrayList() + private val preAnvil = ArrayList() + private val postAnvil = ArrayList() open fun redirectListeners() { - // get PreAnvil and PostAnvil listeners - for (registeredListener in PrepareAnvilEvent.getHandlerList().registeredListeners) { - - if (registeredListener.plugin != plugin) continue - preAnvil.add(registeredListener) - } - - postAnvil.addAll(postAnvilEvents()) + fillPreAnvil(preAnvil) + fillPostAnvil(postAnvil, preAnvil) // get required PrepareAnvilEvent listener for (listener in preAnvil) { @@ -28,10 +22,22 @@ abstract class GenericPluginDependency(protected val plugin: Plugin) { for (listener in postAnvil) { InventoryClickEvent.getHandlerList().unregister(listener) } - } - protected abstract fun postAnvilEvents(): Collection + open fun fillPreAnvil(preAnvil: ArrayList){ + // get PreAnvil and PostAnvil listeners + for (registeredListener in PrepareAnvilEvent.getHandlerList().registeredListeners) { + + if (registeredListener.plugin != plugin) continue + preAnvil.add(registeredListener) + } + } + + protected open fun fillPostAnvil( + postAnvil: ArrayList, + preAnvil: ArrayList) { + + } open fun testPrepareAnvil(event: PrepareAnvilEvent): Boolean { val previousResult = event.result diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ToolStatsDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ToolStatsDependency.kt index 513038b..255f737 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ToolStatsDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/ToolStatsDependency.kt @@ -11,7 +11,7 @@ import java.lang.reflect.Method class ToolStatsDependency(plugin: Plugin) : GenericPluginDependency(plugin) { - // Sadly, getTokens function is private, so I need to do that + // Sadly, getTokens function is private, so I need to do some reflectino private val getTokenMethod: Method = ItemChecker::class.java.getDeclaredMethod("getTokens", ItemStack::class.java); @@ -19,10 +19,6 @@ class ToolStatsDependency(plugin: Plugin) : GenericPluginDependency(plugin) { getTokenMethod.trySetAccessible() } - override fun postAnvilEvents(): Collection { - return listOf() - } - private fun ItemChecker.getTokenSafe(item: ItemStack?): Array { if (item == null) return arrayOf() return getTokenMethod.invoke(this, item) as Array