Помогите все переменные выше 0 в команде

  • Автор темы Автор темы Qbert
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Qbert

Активный участник
Пользователь
Баллы
66
Хочу сделать команду "/chat [Player] [Message]". Но вот проблема, как сделать чтобы за того кто указан в команде( args[0] ) писало сообщение ( все аргументы выше 0 )?

if (cmd.getName().equalsIgnoreCase("chat")) {
Player p = (Player)sender;
Player target = sender.getWorld().getPlayer(args[0]);
target.chat(args[всё выше нуля]);
}
 
Один из вариантов сделать через цикл:
Код:
String temp = "";
for (int = 1; i < args.length; i++)
    temp += args[i] + " ";
target.chat(temp);
 
Последнее редактирование:
Один из вариантов сделать через цикл:
Код:
String temp = "";
for (int = 1; i < args.length; i++)
    temp += args[i] + " ";
target.chat(temp);
Ничего не понял, выдало много ошибок, исправил, написало что в "int" что-то не так (for int = 1; i < args.length; i++))
 
Один из вариантов сделать через цикл:
Код:
String temp = "";
for (int = 1; i < args.length; i++)
    temp += args[i] + " ";
target.chat(temp);
Можешь помочь тогда, сделать чтобы были ВСЕ аргументы? Тоесть Bukkit.broadcastMessage(args[все аргументы]);
 
Код:
    public String buildMessage(String[] args, int index){
        String message[];
        if(args.length > index){
            message = parse(args, index);
        }else{
            message = args;
        }

        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < message.length; i++) {
            if(i >= (message.length -1)){
                builder.append(message[i]);
            }else{
                builder.append(message[i]).append(" ");
            }
        }
        return builder.toString();
    }

    public String[] parse(String[] args, int index){
        if(args.length > index){
            String[] toReturn = new String[args.length - index];
            for (int i = index; i < args.length; i++) {
                toReturn[i - index] = args[i];
            }
            return toReturn;
        }else{
            return args;
        }
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (command.getName().equalsIgnoreCase("chat")) {
            Player a = Bukkit.getPlayerExact(args[0]);
            if (args.length >= 2) {
                if (a != null) {
                    String messages = buildMessage(args, 1);
                    a.sendMessage(ChatColor.translateAlternateColorCodes('&', messages));
                } else {
                    sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cИгрок " + args[0] + " не найден"));
                }
            } else {
                sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c/" + label + " <nick> <messages..>"));
            }
        }
        return false;
    }
}
 
Один из вариантов сделать через цикл:
Код:
String temp = "";
for (int = 1; i < args.length; i++)
    temp += args[i] + " ";
target.chat(temp);
Если я не путаю, то в цикле for была допущена небольшая ошибка. То есть, не было задано имя переменной int.

Вроде бы, вот правильный вариант с тем кодом:
Код:
String temp = "";
for (int i = 1; i < args.length; i++)
    temp += args + " ";
target.chat(temp);
 
Можешь помочь тогда, сделать чтобы были ВСЕ аргументы? Тоесть Bukkit.broadcastMessage(args[все аргументы]);
Код:
Bukkit.broadcastMessage(String.join(" ", args));
Если я не путаю, то в цикле for была допущена небольшая ошибка. То есть, не было задано имя переменной int.

Вроде бы, вот правильный вариант с тем кодом:
Код:
String temp = "";
for (int i = 1; i < args.length; i++)
    temp += args + " ";
target.chat(temp);
Действительно, пропустил имя переменной
 
PHP:
String[] sliced = Arrays.copyOfRange(args, 1, args.length);
В чём проблемма создать копию args пропуская 1 элемент и отправлять его?
PHP:
String message = String.join(" ", sliced);
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх