981867644
嗯...让我仔细叙述一下我这边遇到的情况

首先我下载了海螺大佬们写的一个服务端

这个服务端是说了基于Bukkit写的,在装插件时出现了问题。先不急说问题,我继续说情况

我这边,紧接着均下载了最新构建的spigot、Paper,这些都是基于Bukkit改的没错吧?然后俩个环境下均装了Vault的1.7.3EssentialsX 2.19.2这个插件,运行,游戏内测试。都没问题。(注意重点,最新构建的spigot、Paper都没问题


重点来了。。当我试图用海螺大佬们写的那个服务端装入了这三个插件后,运行服务器时报错了
  1. [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.
  2. Exception Details:
  3.   Location:
  4.     ca/munchdev/simpledeathtax/listeners/PlayerDeathListener$arclight$27+0x0000000801ac4000.execute(Lorg/bukkit/event/Listener;Lorg/bukkit/event/Event;)V @16: invokespecial
  5.   Reason:
  6.     Error exists in the bytecode
  7.   Bytecode:
  8.     0000000: 2cc1 0013 9a00 04b1 2bc0 0008 2cc0 0013
  9.     0000010: b700 17a7 000d 4ebb 0019 592d b700 1cbf
  10.     0000020: b1
  11.   Exception Handler Table:
  12.     bci [0, 7] => handler: 22
  13.     bci [8, 19] => handler: 22
  14.   Stackmap Table:
  15.     same_frame(@8)
  16.     same_locals_1_stack_item_frame(@22,Object[#17])
  17.     same_frame(@32)

  18. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2053)
  19. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache.get(LocalCache.java:3966)
  20. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4863)
  21. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.createExecutor(JavaPluginLoaderMixin.java:649)
  22. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.createRegisteredListeners(JavaPluginLoaderMixin.java:635)
  23. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.plugin.SimplePluginManager.registerEvents(SimplePluginManager.java:615)
  24. [23:20:06 ERROR] [STDERR]:      at ca.munchdev.simpledeathtax.listeners.PlayerDeathListener.<init>(PlayerDeathListener.java:24)
  25. [23:20:06 ERROR] [STDERR]:      at ca.munchdev.simpledeathtax.SimpleDeathTax.onEnable(SimpleDeathTax.java:41)
  26. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPluginMixin.java:264)
  27. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoaderMixin.java:342)
  28. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480)
  29. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugin(CraftServerMixin.java:526)
  30. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugins(CraftServerMixin.java:440)
  31. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.handler$zbd000$arclight$enablePlugins(MinecraftServerMixin.java:2145)
  32. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_129815_(MinecraftServerMixin.java:400)
  33. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130006_(MinecraftServerMixin.java:313)
  34. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServerMixin.java:175)
  35. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130011_(MinecraftServerMixin.java:2027)
  36. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_177918_(MinecraftServerMixin.java:258)
  37. [23:20:06 ERROR] [STDERR]:      at java.base/java.lang.Thread.run(Thread.java:833)
  38. [23:20:06 ERROR] [STDERR]: Caused by: java.lang.VerifyError: Bad invokespecial instruction: current class isn't assignable to reference class.
  39. Exception Details:
  40.   Location:
  41.     ca/munchdev/simpledeathtax/listeners/PlayerDeathListener$arclight$27+0x0000000801ac4000.execute(Lorg/bukkit/event/Listener;Lorg/bukkit/event/Event;)V @16: invokespecial
  42.   Reason:
  43.     Error exists in the bytecode
  44.   Bytecode:
  45.     0000000: 2cc1 0013 9a00 04b1 2bc0 0008 2cc0 0013
  46.     0000010: b700 17a7 000d 4ebb 0019 592d b700 1cbf
  47.     0000020: b1
  48.   Exception Handler Table:
  49.     bci [0, 7] => handler: 22
  50.     bci [8, 19] => handler: 22
  51.   Stackmap Table:
  52.     same_frame(@8)
  53.     same_locals_1_stack_item_frame(@22,Object[#17])
  54.     same_frame(@32)

  55. [23:20:06 ERROR] [STDERR]:      at java.base/java.lang.ClassLoader.defineClass0(Native Method)
  56. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/io.izzel.arclight.api.Unsafe.defineAnonymousClass(Unsafe.java:306)
  57. [23:20:06 ERROR] [STDERR]:      at TRANSFORMER/[email protected]/org.bukkit.plugin.java.JavaPluginLoader.md4349c2$lambda$createExecutor$0$0(JavaPluginLoaderMixin.java:662)
  58. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4868)
  59. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
  60. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
  61. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
  62. [23:20:06 ERROR] [STDERR]:      at MC-BOOTSTRAP/[email protected]/com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
  63. [23:20:06 ERROR] [STDERR]:      ... 19 more
复制代码

我就是想来这里问下各位开发大佬们,明明用的都是Bukkit写的端,但是forge+Bukkit的端却出现了纯Bukkit端没出现的问题。请问这是forge的原因吗?还是单纯的因为大佬们构建[size=14.6667px]ArcLight服务端时漏了什么Bukkit的一些jar包?我来这里问的原因是因为这个插件开源并且也就12kb大小。。我想至少搞清楚情况,如果实力允许的话。不知道我能不能自己去改。但是我始终找不到问题所在。有点迷茫,各位大佬给点看法?

1582632407
我看不懂但我大受震撼

丿丶乐山
我也看不懂也感觉很震惊,主要是编程也不是人人都会哈哈 楼主加油~

贺兰兰
本帖最后由 贺兰兰 于 2022-1-24 15:31 编辑

Arclight 不是你口中那个意义的 Forge+Bukkit 端。他和市面上的 Hybrid 端是不一样的。
市面上的 Hybrid 端都是在 Spigot/Paper 上揉了一个 Forge 上去 Forge 上揉了一个 Spigot/Paper 上去,而 Arclight 则是在 Forge 上使用 Mixin 实现了 Bukkit 的接口
这种设计可以带来很优秀的代码可读性以及可维护性,但由于 Mixin(ASM) 本身的魔法性,在操作字节码时很可能出现问题,就比如你遇到的这个。如果你确认这不是一个由于你那个插件文件完整性导致的问题,那你应该将这个问题反馈到 Arclight

第一页 上一页 下一页 最后一页