如果用户有权限,我想执行命令。
我在哪里将permission check
放在我的插件命令代码中?
public class wingsOff implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(label.equalsIgnoreCase("disableflight")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Sorry! Only players can do this.");
return false;
}
Player player = (Player) sender;
player.sendMessage(ChatColor.GOLD + "Flight mode disabled!");
player.setAllowFlight(false);
return true;
}
return false;
}
}
答案 0 :(得分:0)
您可以在任何可能的地方进行权限检查。如果您的命令是通过plugin.yml
注册的,并且您已经为其分配了权限,则会在命令处理程序实际被调用之前调用Command#testPermission(CommandSender)
。
如果你的示例代码很短,那么使用StackOverflow的代码标签来节省双方的时间是值得的。
答案 1 :(得分:0)
与Connor一样,您基本上可以在代码中的任何位置放置权限检查。
以下是有关如何实施权限检查的示例:
if(label.equalsIgnoreCase("disableflight")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Sorry! Only players can do this.");
return false;
}
Player player = (Player) sender;
if(player.hasPermission("flight.use")) {
// execute code like normal
player.sendMessage(ChatColor.GOLD + "Flight mode disabled!");
player.setAllowFlight(false);
} else {
// notify player or whatever you'd like
player.sendMessage(ChatColor.RED + "You don't have permission!");
}
return true;
}
基本上只需检查播放器是否拥有player.hasPermission()
的权限,并确保在plugin.yml
中注册。