嗯...让我仔细叙述一下我这边遇到的情况
首先我下载了海螺大佬们写的一个服务端
这个服务端是说了基于Bukkit写的,在装插件时出现了问题。先不急说问题,我继续说情况
我这边,紧接着均下载了最新构建的spigot、Paper,这些都是基于Bukkit改的没错吧?然后俩个环境下均装了Vault的1.7.3,EssentialsX 2.19.2和这个插件,运行,游戏内测试。都没问题。(注意重点,最新构建的spigot、Paper都没问题)
重点来了。。当我试图用海螺大佬们写的那个服务端装入了这三个插件后,运行服务器时报错了
复制代码
我就是想来这里问下各位开发大佬们,明明用的都是Bukkit写的端,但是forge+Bukkit的端却出现了纯Bukkit端没出现的问题。请问这是forge的原因吗?还是单纯的因为大佬们构建[size=14.6667px]ArcLight服务端时漏了什么Bukkit的一些jar包?我来这里问的原因是因为这个插件开源并且也就12kb大小。。我想至少搞清楚情况,如果实力允许的话。不知道我能不能自己去改。但是我始终找不到问题所在。有点迷茫,各位大佬给点看法?
首先我下载了海螺大佬们写的一个服务端
这个服务端是说了基于Bukkit写的,在装插件时出现了问题。先不急说问题,我继续说情况
我这边,紧接着均下载了最新构建的spigot、Paper,这些都是基于Bukkit改的没错吧?然后俩个环境下均装了Vault的1.7.3,EssentialsX 2.19.2和这个插件,运行,游戏内测试。都没问题。(注意重点,最新构建的spigot、Paper都没问题)
重点来了。。当我试图用海螺大佬们写的那个服务端装入了这三个插件后,运行服务器时报错了
- [23:20:06 ERROR] [STDERR]: com.google.common.util.concurrent.ExecutionError: java.lang.VerifyError: Bad invokespecial instruction: current class isn't assignable to reference class.
- Exception Details:
- Location:
- ca/munchdev/simpledeathtax/listeners/PlayerDeathListener$arclight$27+0x0000000801ac4000.execute(Lorg/bukkit/event/Listener;Lorg/bukkit/event/Event;)V @16: invokespecial
- Reason:
- Error exists in the bytecode
- Bytecode:
- 0000000: 2cc1 0013 9a00 04b1 2bc0 0008 2cc0 0013
- 0000010: b700 17a7 000d 4ebb 0019 592d b700 1cbf
- 0000020: b1
- Exception Handler Table:
- bci [0, 7] => handler: 22
- bci [8, 19] => handler: 22
- Stackmap Table:
- same_frame(@8)
- same_locals_1_stack_item_frame(@22,Object[#17])
- same_frame(@32)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2053)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache.get(LocalCache.java:3966)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4863)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.createExecutor(JavaPluginLoaderMixin.java:649)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.createRegisteredListeners(JavaPluginLoaderMixin.java:635)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.plugin.SimplePluginManager.registerEvents(SimplePluginManager.java:615)
- [23:20:06 ERROR] [STDERR]: at ca.munchdev.simpledeathtax.listeners.PlayerDeathListener.<init>(PlayerDeathListener.java:24)
- [23:20:06 ERROR] [STDERR]: at ca.munchdev.simpledeathtax.SimpleDeathTax.onEnable(SimpleDeathTax.java:41)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPluginMixin.java:264)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoaderMixin.java:342)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugin(CraftServerMixin.java:526)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugins(CraftServerMixin.java:440)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.handler$zbd000$arclight$enablePlugins(MinecraftServerMixin.java:2145)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_129815_(MinecraftServerMixin.java:400)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130006_(MinecraftServerMixin.java:313)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServerMixin.java:175)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130011_(MinecraftServerMixin.java:2027)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_177918_(MinecraftServerMixin.java:258)
- [23:20:06 ERROR] [STDERR]: at java.base/java.lang.Thread.run(Thread.java:833)
- [23:20:06 ERROR] [STDERR]: Caused by: java.lang.VerifyError: Bad invokespecial instruction: current class isn't assignable to reference class.
- Exception Details:
- Location:
- ca/munchdev/simpledeathtax/listeners/PlayerDeathListener$arclight$27+0x0000000801ac4000.execute(Lorg/bukkit/event/Listener;Lorg/bukkit/event/Event;)V @16: invokespecial
- Reason:
- Error exists in the bytecode
- Bytecode:
- 0000000: 2cc1 0013 9a00 04b1 2bc0 0008 2cc0 0013
- 0000010: b700 17a7 000d 4ebb 0019 592d b700 1cbf
- 0000020: b1
- Exception Handler Table:
- bci [0, 7] => handler: 22
- bci [8, 19] => handler: 22
- Stackmap Table:
- same_frame(@8)
- same_locals_1_stack_item_frame(@22,Object[#17])
- same_frame(@32)
- [23:20:06 ERROR] [STDERR]: at java.base/java.lang.ClassLoader.defineClass0(Native Method)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/io.izzel.arclight.api.Unsafe.defineAnonymousClass(Unsafe.java:306)
- [23:20:06 ERROR] [STDERR]: at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.md4349c2$lambda$createExecutor$0$0(JavaPluginLoaderMixin.java:662)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4868)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
- [23:20:06 ERROR] [STDERR]: at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
- [23:20:06 ERROR] [STDERR]: ... 19 more
我就是想来这里问下各位开发大佬们,明明用的都是Bukkit写的端,但是forge+Bukkit的端却出现了纯Bukkit端没出现的问题。请问这是forge的原因吗?还是单纯的因为大佬们构建[size=14.6667px]ArcLight服务端时漏了什么Bukkit的一些jar包?我来这里问的原因是因为这个插件开源并且也就12kb大小。。我想至少搞清楚情况,如果实力允许的话。不知道我能不能自己去改。但是我始终找不到问题所在。有点迷茫,各位大佬给点看法?
我看不懂但我大受震撼
我也看不懂也感觉很震惊,主要是编程也不是人人都会哈哈 楼主加油~
本帖最后由 贺兰兰 于 2022-1-24 15:31 编辑
Arclight 不是你口中那个意义的 Forge+Bukkit 端。他和市面上的 Hybrid 端是不一样的。
市面上的 Hybrid 端都是在Spigot/Paper 上揉了一个 Forge 上去 Forge 上揉了一个 Spigot/Paper 上去,而 Arclight 则是在 Forge 上使用 Mixin 实现了 Bukkit 的接口
这种设计可以带来很优秀的代码可读性以及可维护性,但由于 Mixin(ASM) 本身的魔法性,在操作字节码时很可能出现问题,就比如你遇到的这个。如果你确认这不是一个由于你那个插件文件完整性导致的问题,那你应该将这个问题反馈到 Arclight
Arclight 不是你口中那个意义的 Forge+Bukkit 端。他和市面上的 Hybrid 端是不一样的。
市面上的 Hybrid 端都是在
这种设计可以带来很优秀的代码可读性以及可维护性,但由于 Mixin(ASM) 本身的魔法性,在操作字节码时很可能出现问题,就比如你遇到的这个。如果你确认这不是一个由于你那个插件文件完整性导致的问题,那你应该将这个问题反馈到 Arclight