SlimefunGuguProject / Slimefun4

Slimefun4 (粘液科技) 汉化版 | Slimefun modified version
GNU General Public License v3.0
251 stars 55 forks source link

最新Insider版无法在paper1.18.2正常使用 #922

Closed mcchampions closed 1 month ago

mcchampions commented 1 month ago

问题描述

报错刷的满天飞 如

[Slimefun] Task #179 for Slimefun vebd90ae-Beta generated an exception
java.lang.NoSuchMethodError: 'java.lang.String com.mojang.authlib.properties.Property.name()'
        at io.github.thebusybiscuit.slimefun4.libraries.dough.skins.nms.PlayerHeadAdapterPaper.setGameProfile(PlayerHeadAdapterPaper.java:27) ~[Slimefun-ebd90ae-Beta.jar:?]
        at io.github.thebusybiscuit.slimefun4.libraries.dough.skins.PlayerHead.setSkin(PlayerHead.java:83) ~[Slimefun-ebd90ae-Beta.jar:?]
        at io.github.thebusybiscuit.slimefun4.implementation.tasks.CapacitorTextureUpdateTask.setTexture(CapacitorTextureUpdateTask.java:77) ~[Slimefun-ebd90ae-Beta.jar:?]
        at io.github.thebusybiscuit.slimefun4.implementation.tasks.CapacitorTextureUpdateTask.run(CapacitorTextureUpdateTask.java:61) ~[Slimefun-ebd90ae-Beta.jar:?]
        at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.18.2.jar:git-Paper-388]
        at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1532) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:483) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1456) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1226) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]
>

或者

Fatal error trying to convert Slimefun vebd90ae-Beta:io/github/thebusybiscuit/slimefun4/core/commands/subcommands/ReloadCommand.class
java.lang.IllegalArgumentException: Unsupported class file major version 65
        at org.objectweb.asm.ClassReader.<init>(ClassReader.java:199) ~[asm-9.2.jar:9.2]
        at org.objectweb.asm.ClassReader.<init>(ClassReader.java:180) ~[asm-9.2.jar:9.2]
        at org.objectweb.asm.ClassReader.<init>(ClassReader.java:166) ~[asm-9.2.jar:9.2]
        at org.bukkit.craftbukkit.v1_18_R2.util.Commodore.convert(Commodore.java:171) ~[paper-1.18.2.jar:git-Paper-388]
        at org.bukkit.craftbukkit.v1_18_R2.util.CraftMagicNumbers.processClass(CraftMagicNumbers.java:398) ~[paper-1.18.2.jar:git-Paper-388]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:174) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:593) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:108) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:103) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
        at io.github.thebusybiscuit.slimefun4.core.commands.subcommands.SlimefunSubCommands.getAllCommands(SlimefunSubCommands.java:44) ~[Slimefun-ebd90ae-Beta.jar:?]
        at io.github.thebusybiscuit.slimefun4.core.commands.SlimefunCommand.register(SlimefunCommand.java:51) ~[Slimefun-ebd90ae-Beta.jar:?]
        at io.github.thebusybiscuit.slimefun4.implementation.Slimefun.onPluginStart(Slimefun.java:404) ~[Slimefun-ebd90ae-Beta.jar:?]
        at io.github.thebusybiscuit.slimefun4.implementation.Slimefun.onEnable(Slimefun.java:262) ~[Slimefun-ebd90ae-Beta.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:541) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugin(CraftServer.java:560) ~[paper-1.18.2.jar:git-Paper-388]
        at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugins(CraftServer.java:474) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:665) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:432) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1164) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]

问题复现率

必现

复现步骤

使用paper-1.18.2-388或更低版本启动服务器时必现(更高版本不好说) 其中上面我列出来的第一个报错只有在paper系服务端会出现。 第二个报错未知

服务端类型

Paper

Minecraft 版本

1.18.x

Slimefun 版本

Paper git-Paper-388 (MC: 1.18.2) Slimefun ebd90ae-Beta Java-21

其他插件信息

No response

补充信息

第二个异常: bukkit在加载类的时候会检测然后转换一些东西(也许是转换一些弃用的类型变量什么的,没有仔细看),在这个检测中它new了一个org.objectweb.asm.ClassReader.这个类的初始化函数中有这样一段代码:

       if (checkClassVersion && this.readShort(classFileOffset + 6) > ***) {
            throw new IllegalArgumentException("Unsupported class file major version " + this.readShort(classFileOffset + 6));
        }

所以任何比Java21更早出现的我的世界服务端版本运行Insider版必然出现这个错误。 而且我还发现它竟然能成功的加载一些类,通过观察发现,没能成功加载的类都是上一个提交中修改过的类,这是否能验证构建站没有有效的清除之前构建的缓存,即#918 的原因出自构建站。

至于第一个异常: 正如我在Q群里说的,mojang修改了Property的类型,class->record,导致方法名不一致。

StarWishsama commented 1 month ago

asm太老了不支持 21

mcchampions commented 1 month ago

asm太老了不支持 21

这个asm是bukkit自己用的我也没办法