big cleanup & update legacy code

This commit is contained in:
alexcrea 2025-06-14 17:49:41 +02:00 committed by alexcrea
parent eaa9adf213
commit 6ede990987
Signed by: alexcrea
GPG key ID: E346CD16413450E3
38 changed files with 282 additions and 312 deletions

View file

@ -6,14 +6,14 @@ interface ExternGuiTester {
val wesjdAnvilGuiName: String?
fun getContainerClass(inventory: InventoryView): Class<Any>?
fun getContainerClass(view: InventoryView): Class<Any>?
fun testIfGui(inventory: InventoryView): Boolean {
fun testIfGui(view: InventoryView): Boolean {
// this mean we are on test
//TODO review why needed knowing previous mitigations should works
if(inventory.javaClass.name.endsWith("AnvilViewMock")) return false
if(view.javaClass.name.endsWith("AnvilViewMock")) return false
val clazz = getContainerClass(inventory) ?: return false
val clazz = getContainerClass(view) ?: return false
val clazzName = clazz.name
//TODO maybe instead of testing non default, better to be testing we are default ?

View file

@ -2,37 +2,12 @@ package xyz.alexcrea.cuanvil.dependency.datapack
import io.papermc.paper.datapack.Datapack
import org.bukkit.Bukkit
import org.bukkit.packs.DataPack
import java.util.*
object DataPackTester {
val legacyNames: List<String>
get() = Bukkit.getDataPackManager().dataPacks
.stream().filter { obj -> obj.isEnabled }
.map { pack -> pack.key.key }
.toList()
val enabledPacks: List<String>
get() {
try {
// will throw error if do not exist
Bukkit::class.java.getDeclaredMethod("getDatapackManager")
return Bukkit.getDatapackManager().enabledPacks
.stream().map { obj: Datapack -> obj.name }
.toList()
} catch (e: NoSuchMethodException) {
try {
DataPack::class.java.getDeclaredMethod("getKey")
} catch (e: NoSuchMethodException) {
System.err.println("Could not find compatible datapack manager")
System.err.println("If you are using a datapack that should be compatible with CustomAnvil. It will not get detected...")
return emptyList()
}
return legacyNames
} catch (e: Exception){
// Assume cause UnimplementedOperationException on mock server
return Collections.emptyList()
}
return Bukkit.getDatapackManager().enabledPacks
.stream().map { obj: Datapack -> obj.name }
.toList()
}
}

View file

@ -4,11 +4,11 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryView
import org.bukkit.inventory.InventoryView
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
class v1_21R1_ExternGuiTester: ExternGuiTester {
class v1_21R1_ExternGuiTester : ExternGuiTester {
override val wesjdAnvilGuiName = "Wrapper1_21_R1"
override fun getContainerClass(view: InventoryView): Class<Any>? {
if(view !is CraftInventoryView<*, *>) return null
if (view !is CraftInventoryView<*, *>) return null
val container = view.handle
return container.javaClass

View file

@ -4,11 +4,10 @@ import io.papermc.paper.threadedregions.scheduler.ScheduledTask
import org.bukkit.Bukkit
import org.bukkit.entity.Entity
import org.bukkit.plugin.Plugin
import java.util.function.Consumer
class FoliaScheduler : TaskScheduler {
override fun scheduleGlobally(plugin: Plugin, task: Runnable, time: Long): Any? {
if(time < 1){
override fun scheduleGlobally(plugin: Plugin, task: Runnable, time: Long): Any {
if (time < 1) {
return Bukkit.getGlobalRegionScheduler().run(
plugin
) { scheduledTask: ScheduledTask? -> task.run() }
@ -22,7 +21,7 @@ class FoliaScheduler : TaskScheduler {
override fun scheduleOnEntity(plugin: Plugin, entity: Entity, task: Runnable, time: Long): Any? {
if(time < 1){
if (time < 1) {
return entity.scheduler.run(
plugin,
{ scheduledTask: ScheduledTask? -> task.run() },
@ -36,5 +35,5 @@ class FoliaScheduler : TaskScheduler {
time
)
}
}

View file

@ -4,31 +4,14 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryView
import org.bukkit.inventory.InventoryView
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
class v1_21R2_ExternGuiTester: ExternGuiTester {
class v1_21R2_ExternGuiTester : ExternGuiTester {
override val wesjdAnvilGuiName = "Wrapper1_21_R2"
var tested = false;
var possible = false;
override fun getContainerClass(view: InventoryView): Class<Any>? {
// In case we are in a test environment
if(!tested) testClassExist()
if(!possible) return null
if(view !is CraftInventoryView<*, *>) return null
if (view !is CraftInventoryView<*, *>) return null
val container = view.handle
return container.javaClass
}
fun testClassExist(){
tested = true;
try {
Class.forName("org.bukkit.craftbukkit.inventory.CraftInventoryView")
possible = true
} catch (e: ClassNotFoundException){
possible = false
}
}
}

View file

@ -4,29 +4,29 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryView
import org.bukkit.inventory.InventoryView
import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester
class v1_21R4_ExternGuiTester: ExternGuiTester {
class v1_21R4_ExternGuiTester : ExternGuiTester {
override val wesjdAnvilGuiName = "Wrapper1_21_R4"
var tested = false;
var possible = false;
var tested = false
var possible = false
override fun getContainerClass(view: InventoryView): Class<Any>? {
// In case we are in a test environment
if(!tested) testClassExist()
if(!possible) return null
if (!tested) testClassExist()
if (!possible) return null
if(view !is CraftInventoryView<*, *>) return null
if (view !is CraftInventoryView<*, *>) return null
val container = view.handle
return container.javaClass
}
fun testClassExist(){
tested = true;
fun testClassExist() {
tested = true
try {
Class.forName("org.bukkit.craftbukkit.inventory.CraftInventoryView")
possible = true
} catch (e: ClassNotFoundException){
} catch (e: ClassNotFoundException) {
possible = false
}
}