| |
BC指令101 |
| |
什么是指令? 根据上一章节里本灵魂画师绘制的bc流程图,不难推理出玩家在客户端用/打出的指令会先经过BC,再由BC发送给玩家所在的服务器,而这时候就出现了很神奇的东西:BC可以对玩家指令数据包作出更改,比如如果玩家使用的指令BC认识,那么就直接在BC处理掉而不要发送任何数据到服务器,这样可以做到在不同服务器使用同一个指令(因为你连到的是同一个BC) 当然,如果你在单独的服务端后台使用这些指令时无法正常使用的(因为你的服务端压根就没有这个指令,而这个指令时注册在BC的) 虽然听起来好像非常高大上,可是实际使用却非常有限,因为大部分玩家玩的时服务端里的内容而不是BC (我还真见过只玩BC的玩家) 所以BC指令无法直接干涉比如:
还有一点需要注意的就是BC并没有Player类,而取代它的是net.md_5.bungee.api.connection.ProxiedPlayer (代理玩家) |
| |
不像bukkit插件需要在plugin.yml里写上commands: BungeeCord创建指令并不需要修改bungee.yml, 但是你仍然需要注册一个指令: 在主类的onEnable()方法下添加以下代码:
到这里你可能会问了,就这样注册指令的我怎么知道什么指令呢? 别急,往后看 指令处理器是一个继承了net.md_5.bungee.api.plugin.Command的类,并且有一个构造器使用了父类的(String)构造器: 为了方便理解我们这里写一个栗子:
至此,你的IDE肯定会疯狂给你报错告诉你少了点什么,而我们缺少的就是实际处理指令的地方所以我们添加一个方法:
args代表了指令后空格的参数,而s则代表了使用这个指令的人(后台or玩家) 写道这里,BC指令创建完成,剩下的就是在execute方法内添加自己希望指令做的事情了 你可能注意到了BC的指令返回值是VOID, 这是(大概)因为md_5发现在写bukkit指令中返回的boolean非常麻烦而且还没有多少人使用,所以移除掉了 |
| |
这个BC插件检测玩家的/bcisosm指令并且如果是玩家的话向玩家发送一个标题
|