mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
bring back old gui tester
This commit is contained in:
parent
161ef6ba91
commit
fe2196626a
4 changed files with 55 additions and 25 deletions
|
|
@ -16,7 +16,7 @@ import xyz.alexcrea.cuanvil.api.event.listener.CAPreAnvilBypassEvent
|
|||
import xyz.alexcrea.cuanvil.api.event.listener.CATreatAnvilResultEvent
|
||||
import xyz.alexcrea.cuanvil.config.ConfigHolder
|
||||
import xyz.alexcrea.cuanvil.dependency.datapack.DataPackDependency
|
||||
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
|
||||
import xyz.alexcrea.cuanvil.dependency.gui.GenericExternGuiTester
|
||||
import xyz.alexcrea.cuanvil.dependency.gui.GuiTesterSelector
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManager
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerSelector
|
||||
|
|
@ -34,7 +34,7 @@ object DependencyManager {
|
|||
|
||||
lateinit var scheduler: TaskScheduler
|
||||
lateinit var packetManager: PacketManager
|
||||
var externGuiTester: ExternGuiTester? = null
|
||||
var externGuiTester: GenericExternGuiTester? = null
|
||||
|
||||
var enchantmentSquaredCompatibility: EnchantmentSquaredDependency? = null
|
||||
var ecoEnchantCompatibility: EcoEnchantDependency? = null
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.gui
|
||||
|
||||
import org.bukkit.inventory.InventoryView
|
||||
import xyz.alexcrea.cuanvil.dependency.MinecraftVersionUtil
|
||||
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil
|
||||
import java.lang.reflect.Method
|
||||
|
||||
class GenericExternGuiTester: ExternGuiTester {
|
||||
class GenericExternGuiTester {
|
||||
|
||||
companion object {
|
||||
private const val ANVIL_CLASS_NAME = "org.bukkit.craftbukkit.inventory.view.CraftAnvilView"
|
||||
private const val INV_CLASS_NAME = "org.bukkit.craftbukkit.inventory.CraftInventoryView"
|
||||
private const val HANDLE_METHOD_NAME = "getHandle"
|
||||
|
||||
private const val CANONICAL_PAPER_ANVIL_MENU = "net.minecraft.world.inventory.AnvilMenu"
|
||||
}
|
||||
|
||||
var testExist = false
|
||||
|
|
@ -17,11 +21,7 @@ class GenericExternGuiTester: ExternGuiTester {
|
|||
var testedClass: String? = null
|
||||
lateinit var getHandleMethod: Method
|
||||
|
||||
override fun getContainerClass(view: InventoryView): Class<Any>? {
|
||||
// In case we are in a test environment
|
||||
if(!testExist) testClassExist()
|
||||
if(inTesting) return view.javaClass //TEMPORARY
|
||||
|
||||
private fun getContainerClass(view: InventoryView): Class<Any>? {
|
||||
if(!testedClass.contentEquals(view.javaClass.name))
|
||||
return null
|
||||
|
||||
|
|
@ -58,4 +58,50 @@ class GenericExternGuiTester: ExternGuiTester {
|
|||
inTesting = true
|
||||
}
|
||||
|
||||
// Try if were in another plugin anvil inventory
|
||||
fun testIfGui(inventory: InventoryView): Boolean {
|
||||
// In case we are in a test environment
|
||||
if(!testExist) testClassExist()
|
||||
if(inTesting) return false
|
||||
|
||||
val clazz = getContainerClass(inventory) ?: return false
|
||||
|
||||
val clazzName = clazz.name
|
||||
if(!PlatformUtil.isPaper){
|
||||
// Blacklist gui causing issue
|
||||
if (expectWesjd(clazzName)) return true
|
||||
if (expectXenondevUI(clazzName)) return true
|
||||
if (expectVanePortal(clazzName)) return true
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// Only allow cannonical anvil menu class
|
||||
return !CANONICAL_PAPER_ANVIL_MENU.equals(clazzName, true)
|
||||
}
|
||||
|
||||
// Known custom implementations
|
||||
fun expectWesjd(name: String): Boolean {
|
||||
val expectedWesjdGuiPath = "anvilgui.version.Wrapper${MinecraftVersionUtil.craftbukkitVersion}"
|
||||
|
||||
return name.contains(expectedWesjdGuiPath)
|
||||
}
|
||||
|
||||
private val XenondevUIPrefix: String
|
||||
get() = "xyz.xenondevs.inventoryaccess."
|
||||
private val XenondevUISufix: String
|
||||
get() = ".AnvilInventoryImpl"
|
||||
|
||||
fun expectXenondevUI(name: String): Boolean {
|
||||
return name.startsWith(XenondevUIPrefix)
|
||||
&& name.endsWith(XenondevUISufix)
|
||||
}
|
||||
|
||||
fun expectVanePortal(name: String): Boolean {
|
||||
val expected = "org.oddlama.vane.core.menu.AnvilMenu\$AnvilContainer"
|
||||
|
||||
return name == expected
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@ import xyz.alexcrea.cuanvil.update.UpdateUtils
|
|||
|
||||
object GuiTesterSelector {
|
||||
|
||||
val selectGuiTester: ExternGuiTester?
|
||||
val selectGuiTester: GenericExternGuiTester?
|
||||
get() {
|
||||
val versionParts = UpdateUtils.currentMinecraftVersionArray()
|
||||
if (versionParts[0] != 1) return null
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue