Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Как сделать что-бы аргумент в команде /kick принимал несколько значений?

Luckwet

Ньюби
Баллы
1
Имя в Minecraft
Luckwet
Я пытаюсь создать команду /kick (player) (reason)
где player - ник игрока которого нужно кикнуть
reason - причина кика которая отобразиться у кикнутого.
Я не понимаю как сделать так, что бы обрабатывались все значения введеные отправителем в "reason"
Что бы после ввода например: "/kick Steve Нарушение правил сервера" кикнутому игроку выходила причина "Нарушение правил сервера", а выходит только первое значение, то-есть "Нарушение".
Я пробовал играться с методами, вертеть их туда сюда, присваивать аргументы строке, но получается только, что выводится либо самое первое значение, либо два(но в этом случае при вводе одного значения команда выдаёт ошибку)

Вот весь код:
Помогите, мучаюсь два дня уже над этим.


public class CommandKick implements CommandExecutor {


@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(args.length == 0) {
sender.sendMessage(ChatColor.RED + "/kick <ник игрока> <причина>");
return true;
}
if(args.length == 1) {
sender.sendMessage(ChatColor.RED + "/kick <ник игрока> <причина>");
return true;
}

String name = args[0];
@SuppressWarnings ("deprecation")
Player p = Bukkit.getPlayer(name);
if(p == null) {
sender.sendMessage(ChatColor.RED + "" + ChatColor.UNDERLINE + name + ChatColor.RESET + "" + ChatColor.RED + " " + "сейчас нет на сервере.");
return true;
}
if(args.length > 2 || args.length < 3) {
String r1 = args[1];
p.kickPlayer(ChatColor.RED + "" + ChatColor.BOLD + "Администратор " + ChatColor.UNDERLINE + sender.getName() + ChatColor.RESET + "" + ChatColor.RED + "" + ChatColor.BOLD + " кикнул вас с сервера. Причина: " + r1);
}
if(args.length > 3 || args.length < 4) {
String r1 = args[1];
String r2 = args[2]
p.kickPlayer(ChatColor.RED + "" + ChatColor.BOLD + "Администратор " + ChatColor.UNDERLINE + sender.getName() + ChatColor.RESET + "" + ChatColor.RED + "" + ChatColor.BOLD + " кикнул вас с сервера. Причина: " + r1 + r2);

return true;
}



В виде фото:

Screenshot_1.png
 
Код:
StringBuffer sb = new StringBuffer();
for (int i = 2; i < args.length; ++i) {
  sb.append(args[i]).append(" ");
}
 
Код:
StringBuffer sb = new StringBuffer();
for (int i = 2; i < args.length; ++i) {
  sb.append(args[i]).append(" ");
}
А куда именно это нужно писать? Просто в яве недавно, только изучаю. То-есть вместо всех моих "if" написать это? А p.kickplayer потом куда? и писать не "+ r1" a "+ i" ?
 
Код:
if (args.length >= 2) {
Player p = Bukkit.getPlayerExact(args[0]);

StringBuffer reason = new StringBuffer();
for (int i = 1; i < args.length; ++i) {
  reason.append(args[i]).append(" ");
}
p.kickPlayer("Причина " + reason.toString());
}
 
Последнее редактирование:
Код:
if (args.length >= 2) {
Player p = Bukkit.getPlayerExact(args[0]);

StringBuffer reason = new StringBuffer();
for (int i = 1; i < args.length; ++i) {
  reason.append(args[i]).append(" ");
}
p.kickPlayer("Причина " + reason.toString());
}
бляха муха, благодарочка огромная, очень нужно было знать как создавать эти "мульти-аргументы", лучший
 

Поделиться этой страницей

Назад
Верх