服务器使用量
未统计
服务玩家数
未统计
下载量
6,838
插件详细介绍
JSEngine 是一个为高版本 Java 环境提供 JavaScript 引擎支持的 Minecraft 服务端插件。由于 Oracle 从 Java 15 开始移除了 Nashorn JavaScript 引擎,导致依赖该引擎的插件无法运行。本插件通过打包并提供一个独立的 Nashorn 引擎(版本 15.4),解决了此兼容性问题,确保相关插件能正常工作。
使用前提
- 如果你的服务器使用 Java 15 或更高版本,并且有插件依赖 JavaScript 引擎,则需要 安装此插件。
- 如果你的服务器使用 Java 11 或更低版本,则 不需要 此插件,因为系统自带了 JavaScript 引擎。
如何调用引擎
JSEngine 提供了多种方式供其他插件调用内置的 JavaScript 引擎。
作为库文件调用
将 JSEngine.jar 作为依赖库引入你的插件项目,然后通过以下代码获取引擎实例:
import com.vk2gpz.jsengine.JSEngine;
...
public class Foo {
void bar() {
ScriptEngine engine = JSEngine.getNewEngine();
try {
engine.eval("your script");
} catch (javax.script.ScriptException ex) {
ex.printStackTrace();
}
...
}
}作为插件调用
在你的插件中,通过 Bukkit 的插件管理器获取 JSEngine 插件实例,并从中获取引擎。
Plugin plugin = Bukkit.getPluginManager().getPlugin("JSEngine");
if (plugin != null) {
engine = (ScriptEngine) ((JSEngine) plugin).getSharedEngine();
// 或者使用:engine = (ScriptEngine) ((JSEngine) plugin).getNewEngine();
}
...
if (engine != null) {
try {
engine.eval("...your script");
} catch (javax.script.ScriptException ex) {
ex.printStackTrace();
}
}通过 ServicesManager 调用
通过 Bukkit 的服务管理器注册并获取 ScriptEngineManager,这是一种更标准化的集成方式。
ServicesManager servicesManager = getServer().getServicesManager();
if (!servicesManager.isProvidedFor(ScriptEngineManager.class)) {
ScriptEngineManager manager = new ScriptEngineManager();
servicesManager.register(ScriptEngineManager.class, manager, this, ServicePriority.Highest);
}
RegisteredServiceProvider<ScriptEngineManager> servicesManager = Bukkit.getServer().getServicesManager().getRegistration(ScriptEngineManager.class);
ScriptEngineManager scriptEngineManager = servicesManager.getProvider();
ScriptEngine engine = scriptEngineManager.getEngineByName("js");
try {
engine.eval("your script");
} catch (javax.script.ScriptException ex) {
ex.printStackTrace();
}注意事项
- 本插件内置的 Nashorn 引擎版本为 15.4。
- 请根据你的 Java 版本和插件需求决定是否安装。
- 插件开发者可根据自己的集成习惯选择上述任意一种调用方式。
测试支持版本
版本分布
基本信息
插件名称
JSEngine
作者
vk2gpz
平台
Bukkit / Spigot
支持版本
1.7 - 1.21
点赞数
2
最近版本
暂无数据
-