try fixing the issue

This commit is contained in:
alexcrea 2025-05-13 13:14:20 +02:00
parent d4bc6716d3
commit 55e3034161
No known key found for this signature in database
GPG key ID: 027DD67D2D3280C5
3 changed files with 39 additions and 3 deletions

View file

@ -84,11 +84,12 @@ object DependencyManager {
}
// "Generic" dependencies
if (pluginManager.isPluginEnabled("ToolStats"))
genericDependencies.add(ToolStatsDependency(pluginManager.getPlugin("ToolStats")!!))
for (dependency in genericDependencies) {
for (dependency in genericDependencies)
dependency.redirectListeners()
}
}
fun handleCompatibilityConfig() {

View file

@ -0,0 +1,35 @@
package xyz.alexcrea.cuanvil.dependency.plugins
import lol.hyper.toolstats.tools.ItemChecker
import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.inventory.ItemStack
import org.bukkit.plugin.Plugin
import org.bukkit.plugin.RegisteredListener
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import java.lang.reflect.Method
class ToolStatsDependency(plugin: Plugin) : GenericPluginDependency(plugin) {
// Sadly, getTokens function is private, so I need to do that
private val getTokenMethod: Method =
ItemChecker::class.java.getDeclaredMethod("getTokens", ItemStack::class.java);
init {
getTokenMethod.trySetAccessible()
}
override fun postAnvilEvents(): Collection<RegisteredListener> {
return listOf()
}
override fun testAnvilResult(event: InventoryClickEvent): Boolean {
// Check if token changes from left with result
val left = event.inventory.getItem(PrepareAnvilListener.ANVIL_INPUT_LEFT)
val result = event.inventory.getItem(PrepareAnvilListener.ANVIL_OUTPUT_SLOT)
val leftTokens = getTokenMethod.invoke(left) as Array<String>
val resultToken = getTokenMethod.invoke(result) as Array<String>
return !leftTokens.contentDeepEquals(resultToken);
}
}