Luohuayu / CatServer

高性能和高兼容性的1.12.2/1.16.5/1.18.2版本Forge+Bukkit+Spigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version Forge+Bukkit+Spigot server)
https://catmc.org
GNU Lesser General Public License v3.0
1.98k stars 211 forks source link

[1.16.5] 通过Bukkit类获取Jar包路径 返回异常 #484

Closed 502647092 closed 2 years ago

502647092 commented 2 years ago

运行环境

Minecraft版本(1.16.5): 构建版本(从/version指令获取): 相关模组/插件:

描述这个BUG 导致的问题r

无法获取 Bukkit 所在的Jar 没办法进行扫包

复现方法

Bukkit.class.getProtectionDomain().getCodeSource().getLocation()
// 返回结果为 modjar://forge
// 正常应该返回类似于 file:./spigot/bundler/libraries/spigot-api-1.19-R0.1-SNAPSHOT.jar

截图/视频

Luohuayu commented 2 years ago

应该没法修..Bukkit是打包在forge里面的, forge通过modlauncher加载, modlauncher加载方式太玄学了

Luohuayu commented 2 years ago

可以用这个获取Bukkit所在的Jar包 net.minecraftforge.fml.ModList.INSTANCE.getModFileById("forge").getFile().getFilePath()

502647092 commented 2 years ago

可以用这个获取Bukkit所在的Jar包 net.minecraftforge.fml.ModList.INSTANCE.getModFileById("forge").getFile().getFilePath()

好 我试试

502647092 commented 2 years ago
net.minecraftforge.fml.ModList.INSTANCE 不行
但是我通过
net.minecraftforge.fml.ModList.get().getModFileById("forge").getFile().getFilePath()
获取到了
./libraries/net/minecraftforge/forge/1.16.5-36.2.35/forge-1.16.5-36.2.35-universal.jar

目前看来可以扫到事件类了

Kotori0629 commented 2 years ago

如果已解决 麻烦请关闭下Issues