核心功能参考自NetJSR
感谢@liuxiaohua维护的BDSNetRunner,极大地降低了插件开发成本
相比NetJSR变更或新增的方法:
-
let id = add*ActListener("onLoadName",e => {});
-
//示例功能:移除当前脚本的所有"onLoadName"监听 //参数个数:1个 //参数类型:字符串 //参数释义:key - 注册用关键字 //返回值:移除的监听数量 //备注:现NetJsr方法,但返回值与现Netjsr不同 let count = remove*ActListener("onLoadName");
function aListener(e){//定义一个非匿名函数 log(e); } add*ActListener("onLoadName",aListener);//添加监听 //示例功能:通过非匿名函数移除一个"onLoadName"监听 //参数个数:2个 //参数类型:字符串;方法 //参数释义:key - 注册用关键字;fun - 监听器的非匿名函数 //返回值:移除的监听数量 //备注:不兼容最新netjsr,兼容旧的NetJSR或原JSR let count = remove*ActListener("onLoadName",aListener);
let id = add*ActListener("onLoadName",e => {}); //示例功能:通过id移除一个"onLoadName"监听 //参数个数:1个 //参数类型:字符串 //参数释义:id - add*ActListener得到的ID //备注:不兼容netjsr remove*ActListener(id);
//另有(不再赘述): //#1 let count = remove*ActListener(aListener); //#2 remove*ActListener("onLoadName",id);
-
//创建一个Timeout,把该timeout的id存入变量 let id = setTimeout("xxx();",1000); log("当前Timeout的ID:" + id);
-
//取消一个TimeOut clearTimeout(id);
-
- 参数个数:2个
- 参数类型:字符串/函数,整型
- 参数详解:code - 待延时执行的指令字符串/函数对象,millisec - 循环毫秒数
//创建一个计时器,把该计时器的id存入变量 let id = setInterval("xxx();",1000); log("当前计时器的ID:" + id);
-
//清除一个计时器 clearInterval(id);
更多增加功能
-
- 示例
const Console = importNamespace("System").Console; Console.Clear(); Console.WriteLine("已清屏");
- 示例
-
- 比如csr目录下有个PFEssentials.csr.dll,那么可以通过如下的方式调用程序集内部的方法
const PFConsole = importNamespace("PFEssentials").Console//导入PFEssentials命名空间的静态类Console PFConsole.SharedWriteLine("测试插件", "输出内容")//调用SharedWriteLine方法 const pfessApi = importNamespace("PFEssentials.PublicApi").V2; //导入"PFEssentials"的命名空间("PublicApi"是静态类名,当命名空间导入),V2是类名 //其他程序集如何导入需要具体分析 addAfterActListener("onInputCommand", function (_e) { const e = JSON.parse(_e); if (e.cmd.toLowerCase().trim() === "/querymoney") {//匹配命令 const money = pfessApi.GetMoney(e.playername);//调用已经导入的类的静态方法来获取money pfessApi.FeedbackTellraw(e.playername, "你的Money:" + money); } /*参考(具体方法可以通过反编译程序集来查看) pfessApi.AddMoney pfessApi.RemoveMoney pfessApi.GetMoney pfessApi.GetUUID pfessApi.HasOpPermission pfessApi.FeedbackTellraw pfessApi.SendActionbar pfessApi.AddCommandDescribe pfessApi.DelCommandDescribe pfessApi.ExecuteCmd pfessApi.ExecuteCmdAs" */ });
- 比如csr目录下有个PFEssentials.csr.dll,那么可以通过如下的方式调用程序集内部的方法
原版脚本引擎(VanillaScripts)与JSR联动
-
- 使用UnlockScripting或对地图开启实验玩法以启用官方脚本
- 将名称为
*.v.js
的文件置于对应目录,即可加载(目录参见plugins\PFJSR\config.json
)
-
JSRErunScript(a1:string);
- a1 : JS文本
- 说明:官方脚本内调用JSR引擎执行脚本
- 示例:
JSRErunScript('log(''VanillaScript调用JSR输出信息'')')