跳到主要内容

指令注册

EnderDragon expansion提供了简化的指令注册方式,具体参考以下示例:

package expansion.groovy.Example

import org.bukkit.Bukkit
import pers.xanadu.enderdragon.config.Lang
import pers.xanadu.enderdragon.script.tool.ScriptCommand as Command//可不加,因为已预先导入

static void enable(){
Lang.info("I am a CommandTest script written in groovy.")
def executor = {
sender, cmd, label, args ->{
sender.sendMessage("I'm a test command")//向指令执行者发送一句话
return true
}
}
new Command("hello")//新建一个"hello"指令
.setAliases(["666","he"])//设置指令别名
.setExecutor(executor)//指令执行逻辑
//指令tab补全
.setTabCompleter({//你也可以像setExecutor一样预先定义一个闭包再传入,这没有区别
sender, cmd, label, args ->{
return ["tab1","tab2"]
}
})
.setPermission("hello.test")//设置指令权限
.setPermissionMessage("§4You don't have permission to do that!")//设置权限不足时提示
.setNamespace("xanadu")//设置指令命名空间,/hello:hello -> /xanadu:hello
.setDescription("test command")//设置指令描述
.setUsage("A command register example")//设置指令用法
//.register() //注册指令,默认未注册
}

static void test(){
Bukkit.broadcastMessage("you runs test()")
}

上述代码实现了注册一个简单的/hello指令,你也可以通过/666, /he执行,指令的执行需要权限"hello.test"。

再写一个更简单的例子:

def executor = {
sender, cmd, label, args ->{
sender.sendMessage("I'm a test command")
return true
}
}
new Command("hello")
.setExecutor(executor)
.register()