NKScript - 简化Nk插件的开发模式,使用脚本化编程,无需编译直接运行
NKScript 脚本化编程方案 NKScript的目的是以简化开发为主,并且更好的调试插件。
对于项目结构和调用文件NKScript主要分为5个模块 - info.ns
- main.ns
- listener
- command
- other
info.ns类似于nukkit的plugin.yml,其内容和plugin.yml也基本类似。 其中特殊的元素为id元素,是为了防止多个插件冲突而设计的,它会作为注册文件的类根目录。 在调用脚本时,格式就是id.脚本文件名称 例如id为net.noyark,则脚本hello.ns写作 调用的时候
当然在写主类和监听器的时候,package和class可以省略 如main.ns - @Override
- void onLoad(){
- //...
- }
复制代码
listener.ns - @EventHandler
- void onJoin(PlayerJoinEvent e){
-
- }
复制代码脚本的主文件必须为main.ns,调用主文件的时候,则是import 你的id.插件名 如插件名为Hello,id为net.noyark - //导入主类
- import net.noyark.Hello
复制代码 info.ns书写
- info{
- name "Hello" //插件名称,必须有
- version "1.0.0" //版本,可不写,不写默认为1.0.0
- author "MagicLu" //作者名 可不写
- listeners ["listener.ns"] //注册的监听器 如果没有可不写
- commandsMap ["command.ns"] //注册的指令 如果没有可不写
- id "net.noyark.www" //id号,意义如同前面所讲
- description "" //介绍,可不写
- permissions ([
- "FirstPlugin.fp" : [
- description : "",
- default : "op"
- ]
- ]) //和nk插件的plugin.yml结构相同
- commands ([
- fp : [
- "usage" : "/fp help",
- "description" : "指令介绍",
- "permission" : "FirstPlugin.fp"
- ]
- ]) //和nk插件的plugin.yml结构相同
- }
- depends{ //依赖
- softDepend ([])
- depend ([])
- loadBefore([])
- }
复制代码
具体使用方法参见README.md
基本和NK相同,采用groovy语法,并且支持java的写法,注册监听器和指令同样可以 使用原来的方法。 默认的指令则是使用了SimpleCommand,使用可以参见example文件
脚本的文件夹直接丢到NKScript的配置文件夹下即可加载
其他问题: Groovy脚本效率很低怎么办? 您可以抛弃动态类型,因为Groovy依然是强类型的,它可以使用@CompileStatic注解使得您的代码静态编译,但是需要您抛弃动态类型,类似于这样 - @Command(name = "hello",description = "233",usageMessage = "/hello")
- @Arguments(max = 10,min = 0)
- @CompileStatic
- boolean onHelloCommand(CommandSender sender, String label, String[] args){
- //这里写指令处理代码
- base.logger.info("hello,world")
- return true
- }
复制代码
更新 v1.0.1
支持脚本前置,修复大量bug,且其他类可以省略包名,支持预加载类
参见 https://github.com/MagicLu550/nkscript/releases/tag/1.0.1
更新 v1.0.2
支持自动主类注入和默认静态对象方法,具体参见README新增
参见 https://github.com/MagicLu550/nkscript/releases/tag/1.0.2
更新 v1.0.3
参见 https://github.com/MagicLu550/nkscript/releases/tag/1.0.3
在脚本根文件夹下libs文件夹下添加jar包即可被加载,具体参见README
更新 v1.0.4
使用了静态编译,插件运行效率提高: @CompileStatic
参见 https://github.com/MagicLu550/nkscript/releases/tag/1.0.4
更新 v1.0.5
对于命令.ns和监听器.ns支持了自动包名检测
参见 https://github.com/MagicLu550/nkscript/releases/tag/1.0.4
更新 v1.0.6
info.retain设置为true,可以对主类不进行套壳编译。
参见 https://github.com/MagicLu550/nkscript/releases/tag/1.0.6
|