mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 08:14:00 +02:00
temporarly disable all ItemsAdder pre anvil event to fix an issue
This commit is contained in:
parent
092daa9306
commit
283a65b74a
4 changed files with 24 additions and 19 deletions
|
|
@ -18,7 +18,7 @@ plugins {
|
|||
}
|
||||
|
||||
group = "xyz.alexcrea"
|
||||
version = "1.14.2"
|
||||
version = "1.14.3"
|
||||
|
||||
val effectiveVersion = "$version" +
|
||||
(if (System.getenv("SMALL_COMMIT_HASH") != null) "-dev-${System.getenv("SMALL_COMMIT_HASH")!!}" else "")
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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<RegisteredListener>()
|
||||
protected val postAnvil = ArrayList<RegisteredListener>()
|
||||
private val preAnvil = ArrayList<RegisteredListener>()
|
||||
private val postAnvil = ArrayList<RegisteredListener>()
|
||||
|
||||
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<RegisteredListener>
|
||||
open fun fillPreAnvil(preAnvil: ArrayList<RegisteredListener>){
|
||||
// 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<RegisteredListener>,
|
||||
preAnvil: ArrayList<RegisteredListener>) {
|
||||
|
||||
}
|
||||
|
||||
open fun testPrepareAnvil(event: PrepareAnvilEvent): Boolean {
|
||||
val previousResult = event.result
|
||||
|
|
|
|||
|
|
@ -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<RegisteredListener> {
|
||||
return listOf()
|
||||
}
|
||||
|
||||
private fun ItemChecker.getTokenSafe(item: ItemStack?): Array<String> {
|
||||
if (item == null) return arrayOf()
|
||||
return getTokenMethod.invoke(this, item) as Array<String>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue