1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Помощь", создана пользователем Luckwet, 1 дек 2021.

  1. Автор темы
    Luckwet

    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
     
  2. Sneyzi

    Sneyzi Активный участник Пользователь

    Баллы:
    76
    Код:
    StringBuffer sb = new StringBuffer();
    for (int i = 2; i < args.length; ++i) {
      sb.append(args[i]).append(" ");
    }
    
     
  3. Автор темы
    Luckwet

    Luckwet Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Luckwet
    А куда именно это нужно писать? Просто в яве недавно, только изучаю. То-есть вместо всех моих "if" написать это? А p.kickplayer потом куда? и писать не "+ r1" a "+ i" ?
     
  4. Sneyzi

    Sneyzi Активный участник Пользователь

    Баллы:
    76
    Код:
    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());
    }
    
     
    Последнее редактирование: 1 дек 2021
  5. Автор темы
    Luckwet

    Luckwet Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Luckwet
    бляха муха, благодарочка огромная, очень нужно было знать как создавать эти "мульти-аргументы", лучший
     

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