JSEngine

JSEngine - JavaScript引擎封装

Nashorn JavaScript 引擎的封装
Bukkit / Spigot 作者 vk2gpz 支持版本 1.7 - 1.21
服务器使用量
未统计
服务玩家数
未统计
下载量
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 版本和插件需求决定是否安装。
  • 插件开发者可根据自己的集成习惯选择上述任意一种调用方式。
测试支持版本
1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.20.6 1.21
版本分布
基本信息
插件名称 JSEngine
作者 vk2gpz
平台 Bukkit / Spigot
支持版本 1.7 - 1.21
点赞数 2
最近版本
暂无数据 -

友情链接: 网易我的世界 | 泰拉瑞亚 | 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