JSEngine 是一个为高版本 Java 环境提供 JavaScript 引擎支持的 Minecraft 服务端插件。由于 Oracle 从 Java 15 开始移除了 Nashorn JavaScript 引擎,导致依赖该引擎的插件无法运行。本插件通过打包并提供一个独立的 Nashorn 引擎(版本 15.4),解决了此兼容性问题,确保相关插件能正常工作。
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();
}
}通过 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();
}友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:2,642,858 | 历史访问人次:3,203,064
今日访问人数:18,046 | 今日访问人次:20,423
昨日访问人数:46,463 | 昨日访问人次:52,262
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6