- Баллы
- 66
/
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
package me.пользователь.commands;
/**
* @author пользователь
*
*/
public class CommandHandler implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
String message = replaceColors(concatArgs(args));
Bukkit.broadcastMessage(message);
return true;
}
}
if (!sender.hasPermission("broadcast.send")){
sender.sendMessage(ChatColor.RED + "You have no permission");
return true;
}
// Если CommandSender sender не является игроком ...
if (!(sender instanceof Player)) {
// .. отправить сообщение об ошибке и вернуть true
sender.sendMessage(ChatColor.RED + "Only player command");
return true;
}
Ну вообще надо делать как раз таки sender instanceof consolecommandsender, потому что сендер это интерфейс и им вообще кто угодно быть можетПо умолчанию классы-обработчики команд не делают каких-либо проверок на исполнителя
PHP:package me.пользователь.commands; /** * @author пользователь * */ public class CommandHandler implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { String message = replaceColors(concatArgs(args)); Bukkit.broadcastMessage(message); return true; } }
Но чтобы команду могли использовать не все пользователи добавляются проверки по правам и прочим параметрам пользователей
И так как объект типа CommandSender по умолчанию не является Player'ом, чтобы узнать, игрок ли исполнил эту команду - необходимо сделать проверку принадлежности исполнителя к объекту PlayerPHP:if (!sender.hasPermission("broadcast.send")){ sender.sendMessage(ChatColor.RED + "You have no permission"); return true; }
А теперь к сути вопроса: если Вы хотите, чтобы обработчики команд Вашего плагина спокойной исполнялись из консоли - не добавляйте проверку instanceof.PHP:// Если CommandSender sender не является игроком ... if (!(sender instanceof Player)) { // .. отправить сообщение об ошибке и вернуть true sender.sendMessage(ChatColor.RED + "Only player command"); return true; }
Он и так ее выполнит. Будь то игрок, консоль, или ркон.Здравствуйте, у меня возник вопрос, как позволить консоли выполнять определенную команду в плагине, проверяя кол-во аргументов, не выдавая ошибок при попытке его выполнения?
Вопрос был "Как позволить?", а ответ - позволять не надо, т.к.:Ну вообще надо делать как раз таки sender instanceof consolecommandsender, потому что сендер это интерфейс и им вообще кто угодно быть может
По умолчанию классы-обработчики команд не делают каких-либо проверок на исполнителя