BlocklyNukkit WIKI

这里是BN百科

章节导览


添加指令

指令是插件与玩家交互很重要的方式。笔者将在本章节中为大家介绍关于BN中的创建指令的用法。
在BN中,我们可以通过manager.newCommand()创建指令,例如我要创建一个shout指令

function fun(sender,args){  
}  
//fun函数,用于回调指令操作,BN会传入两个变量,sender(发送者)和args(参数列表,即为/shout 参数1 参数2)  
manager.newCommand("shout","喊话",fun);  
//manager.newCommand(command,detail,callback);  
//意思是创建新指令,名称为shout(无需输入/),描述为喊话,并且回调函数。  

我们现在要根据喊话内容生成发给其他玩家的喊话信息

message=play.getName()+"喊道"+args[0];  

注意:js的列表索引是从0开始的
我们还要获取在线的所有玩家列表,以便发给所有玩家

plist=manager.getOnlinePlayers();  
//注:该写法可能在当前版本BN中会出现类型转换问题,建议使用let plist=Java.type("cn.nukkit.Server").getInstance().getOnlinePlayers().values().toArray();  

还要加上检测返回数据list的长度以防止玩家只输入/shout
然后最终的代码就是这样

function fun(sender, args) {  
    if (args.length != 1) {  
    //特殊判断,是否为空,空的话会有null  
        let message = sender.getName() + "喊道" + args[0];  
        //养成良好习惯,局部变量定义使用let  
        let plist=manager.getOnlinePlayers();  
        //注:该写法可能在当前版本BN中会出现类型转换问题,建议使用let plist=Java.type("cn.nukkit.Server").getInstance().getOnlinePlayers().values().toArray();  
        //获取在线列表  
        for (let i = 0; i < plist.length; i++) {  
            plist[i].sendMessage(message);  
        }  
        //向每个玩家发送喊话内容  
    }  
}  
manager.createCommand("shout", "喊话", fun);  
//创建指令  

新知辨析

回调函数
回调函数在BN插件开发中经常会见到,在窗口和指令领域有着机器重要的作用。你可以在编写的时候把回调函数理解为一个事件。例如,当满足玩家输入这个指令的时候,相当于触发了这个事件。只是指令的回调会有两个传回的变量。第一个是玩家(并非玩家类型)还有一个是参数列表。
manager.newCommand()
创建新指令(指令名,描述,回调函数)。

拓展任务

编写一个函数,使用指令,完成tpa插件。


不满意?前往编辑此页面

导航