欢迎来到 HiMCBBS 论坛~

想在这里休息会么?和我们共度美好时光吧~

加入QQ群:879016948 获得最新公告,并与群友们一起聊天吹水!

注册 登录
JSEngineNK

插件 JSEngineNK 1.14.1

版权类型
转载
版权链接
https://cloudburstmc.org/resources/jsenginenk.939/
资源语言
  1. 英语

JSEngineNK - 在 Nukkit 中加载 JavaScript!​


JSEngineNK 是一款 Nukkit 插件,能够加载 JavaScript 模块!借助 Nashorn 引擎的强大功能,创建系统变得非常简单!

Nukkit 插件功能:​


如何使用?​


已加载的基本 JavaScript API:​

JavaScript:
扩展 折叠 复制
var server; return getServer();
var plugin; return JSEngineNK Plugin MainClass;
var global; return JSEngineNK Plugin MainClass;
var self; return JSEngineNK Plugin MainClass;
var manager; return FunctionManager Class, 用于创建命令和循环
var script; return 注册脚本和事件的类
var logger; return 控制台日志输入
var console; return 控制台日志输入
var window; return 控制台日志输入
var players; return 所有在线玩家

创建基本命令:​

JavaScript:
扩展 折叠 复制
manager.createCommand("name", "description", "functionUsed", "usage", ["aliase1", "aliase2"], "perm.nk");

function functionUsed(sender, args, label, manageCMD){
    if(args.length < 1){ // 检查参数是否存在
        sender.sendMessage('使用方式错误!');
        return;
    }
    let name = args[0];
    sender.sendMessage("你输入了: " + name); // 向发送者发送消息
    // sender.sendMessage(manager.format("你输入了: %s", name)); // 格式化消息
}

创建基本任务(第二个参数为等待的 Minecraft 刻数):​

JavaScript:
扩展 折叠 复制
manager.createTask("tasknormal", 20);

manager.createLoopTask("taskloop", 20); // 如果需要传递参数,可以在时间参数后添加

manager.createAsyncTask("taskAsync"); // 如果需要传递参数,也可以在定义函数名后添加

function tasknormal(currentTick){
    print('我是 tasknormal!');
}

function taskloop(currentTick){
    print('我是 taskloop');
}

function taskAsync(){
    print('我是 taskasync');
}

运行事件:​

JavaScript:
扩展 折叠 复制
script.addEventListener("PlayerJoinEvent", function(event){
    let player = event.getPlayer();
    player.sendMessage("欢迎来到服务器!");
});
// 完成,启动服务器并测试!

创建配置文件:​

JavaScript:
扩展 折叠 复制
var config = manager.createConfig(manager.getFile("folder", "archive"), 2); // 2 = Config.YAML

config.set("key", "value");
config.save();

注册脚本:​

JavaScript:
扩展 折叠 复制
script.registerScript({
    name: "TestScript",
    version: "1.0",
    description: "测试脚本!",
    website: "https://github.com/Trollhunters501/JSEngineNK/",
    authors: ["Creadores Program & RedstoneAlmeida"]
});
// 您可以注册脚本,使其出现在 `/scripts` 命令的脚本列表中,或通过 `/version script` 或 `/ver script` 命令查看。
// 必填参数:author 或 authors、name、version 和 description,可选参数:website。

使用 Nukkit 和 Java Vanilla 的包:​

JavaScript:
扩展 折叠 复制
var playertest = Java.type("cn.nukkit.Player");
// 您可以在 Nukkit 官方文档中查看如何使用 Player 文件!(建议使用难以复制的变量,因为其他脚本可能使用相同的变量)
var IOExeptionTest = Java.type("java.io.IOException");
// Java Vanilla
var ContentType = Packages.org.apache.http.entity.ContentType;
// 非 Java Vanilla 或 Nukkit 的包(需要安装这些包)

按名称查看脚本(建议在所有脚本加载完成后使用):​

JavaScript:
扩展 折叠 复制
script.getScriptByName("脚本名称");

隔离或私有函数(变量或函数不会全局化,无法注册事件或任务):​

JavaScript:
扩展 折叠 复制
(function(){
  // 代码...
})();

通过 Maven 导入 Java 外部库:​

JavaScript:
扩展 折叠 复制
// 定义脚本的 Maven 依赖
var MAVEN_DEPENDENCIES = ['com.h2database:h2:1.4.192', 'org.apache.commons:commons-dbcp2:2.1.1'];
// 创建类加载器实例
var L = new NnClassLoader({ maven: MAVEN_DEPENDENCIES });
// 查看类加载器解析的实际 jar 列表
for each(var url in L.getUrls()) print(url);
// 类似于 Java.type 导入类
var BasicDataSource = L.type('org.apache.commons.dbcp2.BasicDataSource');
// 像往常一样使用导入的类
var ds = new BasicDataSource();
// ...

通过 URL 导入 JavaScript 外部库:​

JavaScript:
扩展 折叠 复制
// 如何从网页导入 JavaScript 文件:
load("https://example.com/exam.js");
// 完成!

查看所有 manager 函数:​

请访问:https://github.com/Trollhunters501/JSEngineNK/blob/master/Manager info/ManagerFunc.md

如何创建 JavaScript 类:​

JavaScript:
扩展 折叠 复制
// 您必须使用 Class() 函数创建一个 const 变量,并带有 2 个参数。变量名称将是您的类名!

// 第一个参数始终是 Object,除非您想扩展另一个 JavaScript 类。在这种情况下,只需将 Object 更改为类名(该类应已定义)。
// 第二个参数是类函数!(如果扩展任何类,请不要将函数命名为与扩展类相同的名称(JavaScript 引擎会混淆并崩溃))
const Says = Class(Object, {
  say: function(){
      console.info('Hello');
   }
});
// 创建类的实例:
var Hey = new Says();
// 调用函数:
Hey.say();
// 输出:Hello

// 扩展类:
// 扩展之前的类
const Greeting = Class(Says, {
  // 确保函数不重复,此处不能重复 say()
  hi: function(){
    // 调用扩展类:
    this.say();
    // 额外代码
    console.info('Console!');
  }
});
// 像之前一样调用类
var HiCon = new Greeting();
HiCon.hi();
// 输出:Hello
// Console!

// 完成!

扩展 Java 类:​

JavaScript:
扩展 折叠 复制
var ClassExample = Java.type("class.extend.java");
var extendC = Java.extend(ClassExample); // 也适用于使用 Nnclassloader 库导入的类
var myclassextend = new extendC(){
  onEnable: function(){
     aFunctionOfTheExtendedClass("hello!");
  } // 适用于在 JSEngineNK 中使用 @ 而不直接在 Java 中编码并保持类为空的情况!
}

插件中的默认库:​

作者
眠悠子Miyoz
下载
29
查看
120
首次发布
最后更新

评论

0.00 星 0 星

来自眠悠子Miyoz的更多资源

分享资源

后退
顶部