从零开始教你编写Spigot插件(三)
上一期我们讲解了监听器,这一期我们讲解指令
这个可能有点不太理解,所以请认真看。
onCommand()
打开我们的idea,然后在主类里写一个onCommand方法下面时代码
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return true;
}
这个应该很简单吧,我就不讲解了,不明白的私聊我,或者在下面评论。
注册
我们知道监听器主类都需要注册,命令也同样需要,不过这个有点和他们不一样,这个需要在plugin.yml里面,
commands:
cmd:
description: 这是一个命令.
cmd时你想要的命令,你可以替换成你的,description是对命令的介绍,
开始写命令
回到 onCommand().
首先我们要从sender这获取到他使用的是什么命令.
Command类下的getName()可以直接获取到这条命令的名称.
String cmd = null;
cmd = command.getName();
if (cmd.equalsIgnoreCase("cmd")) {
sender.sendMessage("Hello World");
}
在onCommand方法里写这个命令
这个意思时如果输入cmd,那么将会发送Hello World。
这个应该时你的全部代码
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
String cmd = null;
cmd = command.getName();
if (cmd.equalsIgnoreCase("cmd")) {
sender.sendMessage("Hello World");
}
return true;
尝试
输入help+插件名字,就可以看到插件的命令。
拓展
1.我们把命令写在主类有点不方便,所以我们要新建一个类。
然后给这个类implements CommandExecutor,
在下面写入我们的代码
public class cmd implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
String cmd = null;
cmd = command.getName();
if (cmd.equalsIgnoreCase("cmd")) {
sender.sendMessage("Hello World");
}
return true;
}
}
这是全部代码
然后回到主类注册,记得把主类之前的删除,然后
在onEnable方法中写入
Bukkit.getPluginCommand("cmd").setExecutor(new cmd());
再次尝试
2.我们的指令不一定需要cmd,所以还需要玩家。下面我来教大家怎么判断玩家
我们可以用if-----else
只需要加入
if (sender instanceof Player) {
sender.sendMessage("Hello World"); //所要执行的内容
}else{
sender.sendMessage("你必须时一个玩家"); //所要执行的内容
}
再次尝试
好了这一期就到这里,感谢您认真看完,下期再见!!!