mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +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"
|
group = "xyz.alexcrea"
|
||||||
version = "1.14.2"
|
version = "1.14.3"
|
||||||
|
|
||||||
val effectiveVersion = "$version" +
|
val effectiveVersion = "$version" +
|
||||||
(if (System.getenv("SMALL_COMMIT_HASH") != null) "-dev-${System.getenv("SMALL_COMMIT_HASH")!!}" else "")
|
(if (System.getenv("SMALL_COMMIT_HASH") != null) "-dev-${System.getenv("SMALL_COMMIT_HASH")!!}" else "")
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,9 @@ object DependencyManager {
|
||||||
if (pluginManager.isPluginEnabled("ToolStats"))
|
if (pluginManager.isPluginEnabled("ToolStats"))
|
||||||
genericDependencies.add(ToolStatsDependency(pluginManager.getPlugin("ToolStats")!!))
|
genericDependencies.add(ToolStatsDependency(pluginManager.getPlugin("ToolStats")!!))
|
||||||
|
|
||||||
|
if (pluginManager.isPluginEnabled("ItemsAdder"))
|
||||||
|
genericDependencies.add(GenericPluginDependency(pluginManager.getPlugin("ItemsAdder")!!))
|
||||||
|
|
||||||
for (dependency in genericDependencies)
|
for (dependency in genericDependencies)
|
||||||
dependency.redirectListeners()
|
dependency.redirectListeners()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,14 @@ import org.bukkit.event.inventory.PrepareAnvilEvent
|
||||||
import org.bukkit.plugin.Plugin
|
import org.bukkit.plugin.Plugin
|
||||||
import org.bukkit.plugin.RegisteredListener
|
import org.bukkit.plugin.RegisteredListener
|
||||||
|
|
||||||
abstract class GenericPluginDependency(protected val plugin: Plugin) {
|
open class GenericPluginDependency(protected val plugin: Plugin) {
|
||||||
|
|
||||||
protected val preAnvil = ArrayList<RegisteredListener>()
|
private val preAnvil = ArrayList<RegisteredListener>()
|
||||||
protected val postAnvil = ArrayList<RegisteredListener>()
|
private val postAnvil = ArrayList<RegisteredListener>()
|
||||||
|
|
||||||
open fun redirectListeners() {
|
open fun redirectListeners() {
|
||||||
// get PreAnvil and PostAnvil listeners
|
fillPreAnvil(preAnvil)
|
||||||
for (registeredListener in PrepareAnvilEvent.getHandlerList().registeredListeners) {
|
fillPostAnvil(postAnvil, preAnvil)
|
||||||
|
|
||||||
if (registeredListener.plugin != plugin) continue
|
|
||||||
preAnvil.add(registeredListener)
|
|
||||||
}
|
|
||||||
|
|
||||||
postAnvil.addAll(postAnvilEvents())
|
|
||||||
|
|
||||||
// get required PrepareAnvilEvent listener
|
// get required PrepareAnvilEvent listener
|
||||||
for (listener in preAnvil) {
|
for (listener in preAnvil) {
|
||||||
|
|
@ -28,10 +22,22 @@ abstract class GenericPluginDependency(protected val plugin: Plugin) {
|
||||||
for (listener in postAnvil) {
|
for (listener in postAnvil) {
|
||||||
InventoryClickEvent.getHandlerList().unregister(listener)
|
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 {
|
open fun testPrepareAnvil(event: PrepareAnvilEvent): Boolean {
|
||||||
val previousResult = event.result
|
val previousResult = event.result
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import java.lang.reflect.Method
|
||||||
|
|
||||||
class ToolStatsDependency(plugin: Plugin) : GenericPluginDependency(plugin) {
|
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 =
|
private val getTokenMethod: Method =
|
||||||
ItemChecker::class.java.getDeclaredMethod("getTokens", ItemStack::class.java);
|
ItemChecker::class.java.getDeclaredMethod("getTokens", ItemStack::class.java);
|
||||||
|
|
||||||
|
|
@ -19,10 +19,6 @@ class ToolStatsDependency(plugin: Plugin) : GenericPluginDependency(plugin) {
|
||||||
getTokenMethod.trySetAccessible()
|
getTokenMethod.trySetAccessible()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun postAnvilEvents(): Collection<RegisteredListener> {
|
|
||||||
return listOf()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun ItemChecker.getTokenSafe(item: ItemStack?): Array<String> {
|
private fun ItemChecker.getTokenSafe(item: ItemStack?): Array<String> {
|
||||||
if (item == null) return arrayOf()
|
if (item == null) return arrayOf()
|
||||||
return getTokenMethod.invoke(this, item) as Array<String>
|
return getTokenMethod.invoke(this, item) as Array<String>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue