Wil*_*ren 2 java jar minecraft bukkit
使用bukkit API,是否可以进行类似以下伪代码的调用:
Bukkit.getPluginManager().getPlugin("PluginName").getJarFile();
Run Code Online (Sandbox Code Playgroud)
对于像MobBountyReloaded这样的插件,它会返回plugins/MobBountyReloaded_v235.jar.
我尝试使用众所周知的命名方案来寻找文件,例如只是附加.jar或<version>.jar插件的名称,但这并不总能产生正确的结果.上面的例子失败了,因为plugin.yml文件中的版本号只是235和不是_v235,而一些插件使用的方案<PluginName>-<Version>-<buildnumber>.jar.
有没有一种简单的方法来实现这一目标?每个加载的插件的文件信息必须在内存中的某个位置,不是吗?
如果您从插件加载了类,则可以使用代码源功能来获取加载类的jar.
Bukkit.getPluginManager().getPlugin("PluginName").getClass().getProtectionDomain().getCodeSource().getLocation();
Run Code Online (Sandbox Code Playgroud)