mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 08:14:00 +02:00
Merge branch 'v1.x.x' into feature/1.21.9
This commit is contained in:
commit
e508f3fdf5
3 changed files with 23 additions and 18 deletions
|
|
@ -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