自定义指令
注册指令的几个步骤:
- 在
plugin.yml
中声明 - 在插件类使用
getCommand
获取 - 写
commandExecutor
节课的实现类 - 将得到的
Command
对象与Executor
实现类绑定
指令的描述可以在源码:PluginDescriptionFile
中进行查看
定义指令:
commands:
suicide:
description: 自杀
# /<command> 会被自动替换为 /suicide
usage: /<command>
aliases: [s1,s2,s3]
permission: yunfei.suicide
# 权限不足时候的提示信息
permission-message: 哦,你好像没有使用该指令的权限~
god:
description: 上帝模式
usage: /<command> <on/off>
aliases: [g1,g2,g3]
permission: yunfei.god
permission-message: 哦,你好像还不能成为上帝~
permissions:
yunfei.suicide:
description: 自杀权限
# true:全部玩家都可以使用 false:op使用
default: true
yunfei.god:
description: 成为上帝
default: op
实现自杀功能:
/**
* @author houyunfei
*/
public class SuicideCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if ("suicide".equalsIgnoreCase(label)) {
if (sender instanceof Player) {
Player player = (Player) sender;
// 向全体玩家广播消息
player.getServer().broadcastMessage(ChatColor.YELLOW + "再见了,世界!" + "\n" + ChatColor.BLUE + player.getDisplayName() + ChatColor.YELLOW + "去世了!");
player.setHealth(0);
// return true 是为了防止服务器 给sender返回指令的usage信息
return true;
} else {
sender.sendMessage(ChatColor.YELLOW + "只有玩家才能使用这个指令!");
return true;
}
}
//返回false,调用plugin.yml设置的commands.suicide.usage 给发送者
return false;
}
}
实现上帝无敌功能:
public class GodCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if ("god".equalsIgnoreCase(label)) {
if (sender instanceof Player) {
Player player = (Player) sender;
// 如果玩家已经是无敌状态,则取消无敌状态 ,否则设置为无敌状态
player.setInvulnerable(!player.isInvulnerable());
String temp = player.isInvulnerable() ? ChatColor.GREEN + "是" : ChatColor.RED + "不是";
player.sendMessage(ChatColor.WHITE + "现在你就" + temp + ChatColor.WHITE + "上帝模式了");
} else {
sender.sendMessage(ChatColor.YELLOW + "只有玩家才能使用这个命令");
return true;
}
}
return false;
}
}
主类注册指令:
@Override
public void onEnable() {
// Plugin startup logic
// this.getServer().getPluginManager().registerEvents(new MyEventHandler(), this);
Bukkit.getPluginManager().registerEvents(new MyEventHandler(), this);
// 注册指令
this.getCommand("suicide").setExecutor(new SuicideCommand());
this.getCommand("god").setExecutor(new GodCommand());
}
测试:
上帝模式: