Как убрать отображение первого аргумента?

TelePuzik

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
op03
Приветствую вас.

При компиляции выдает ошибку:
Не удается конвертировать тип данных String в Player.


Код:
package adminreport.main;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class Reply implements CommandExecutor{

    private Object plugin;

    public Reply(AdminReport adminReport) {
        this.plugin = plugin;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(!sender.hasPermission("report.reply")) {
            sender.sendMessage(ChatColor.DARK_RED + "[Ошибка] "+ ChatColor.WHITE +"У Вас нет прав.");
            return true;
        }
        if(args.length < 2) {
            sender.sendMessage(ChatColor.DARK_RED + "[Ошибка] "+ ChatColor.WHITE +"Недостаточно аргументов.");
            return true;
        }

        Player user = args[0];
        String username = user.getName();
        String adminname = sender.getName();
        String message = String.join(" ", args);
        if(sender.hasPermission("report.reply")) {
        sender.sendMessage(ChatColor.GREEN+"[PM] "+ChatColor.WHITE+"Администратор "+ChatColor.GREEN+adminname+ChatColor.WHITE+" для "+ChatColor.GREEN+username+ChatColor.WHITE+":");
        sender.sendMessage("- "+message);
    
        user.sendMessage(ChatColor.GREEN+"[PM] "+ChatColor.WHITE+"Администратор "+ChatColor.GREEN+adminname+ChatColor.WHITE+" ответил "+ChatColor.GREEN+"Вам"+ChatColor.WHITE+":");
        user.sendMessage("- "+message);
        return true;
        }
        return false;
      
    }
}

Мне нужно было сделать так, чтобы переменная username была указана на выводе сообщения:
[PM] Администратор adminname для username:
C этим я разобрался

Но если указать эту переменную (username) в функции sendMessage, то это вызывало ошибку.
Для устранения мне понадобилось указать вместо username указать user, это помогло избавиться от проблемы, как сразу возникла следующая:
Description Resource Path Location Type
Type mismatch: cannot convert from String to Player Reply.java /AdminReport/src/adminreport/main line 29 Java Problem






 
Последнее редактирование:
Все, разобрался.

Поправил эти строки:

Код:
String user = args[0];
        Player username = Bukkit.getPlayer(user);
        String adminname = sender.getName();
        String message = String.join(" ", args);
        if(sender.hasPermission("report.reply")) {
        sender.sendMessage(ChatColor.GREEN+"[PM] "+ChatColor.WHITE+"Администратор "+ChatColor.GREEN+adminname+ChatColor.WHITE+" для "+ChatColor.GREEN+user+ChatColor.WHITE+":");
        sender.sendMessage("- "+message);
   
        username.sendMessage(ChatColor.GREEN+"[PM] "+ChatColor.WHITE+"Администратор "+ChatColor.GREEN+adminname+ChatColor.WHITE+" ответил "+ChatColor.GREEN+"Вам"+ChatColor.WHITE+":");
        username.sendMessage("- "+message);

Но теперь возникла новая проблема. Её описал чуть ниже
 
Последнее редактирование:
При отправке сообщения игроку от имени администратора, текст содержит первый, второй и все дальнейшие аргументы, но мне нужно, чтобы в строке с текстом не отображался только первый.

Моя голова не додумалась, каким образом это можно реализовать.
Видео для наглядности выложил в том числе:
 
Код:
StringBuilder sb=new StringBuilder();
for (int fora=1; fora<args.lenght; fora++) {
 sb.append(args[fora]);
message=sb.toString();
 
Последнее редактирование:
Извиняюсь, так и хотел сделать, задумался о своем. :whistle:
 
Это конечно все замечательно, но у меня появилось новая ошибка

Description Resource Path Location Type
lenght cannot be resolved or is not a field Reply.java /AdminReport2/src/adminreport/main line 34 Java Problem

Строка:
Код:
for (int fora=0; fora<args.lenght; fora++)

Что обозначает fora++?
fora - это переменная, а два плюса?
 
Все, вроде разобрался, тестирую
 
Это конечно все замечательно, но у меня появилось новая ошибка



Строка:
Код:
for (int fora=0; fora<args.lenght; fora++)

Что обозначает fora++?
fora - это переменная, а два плюса?
После чтения переменная увеличивается на 1.
 
Все заработало, благодарю всех за великую помощь!
Не представляю даже, как бы я без вас справился : )

Если кто-то может, посоветуйте руководство по Java
 
Все заработало, благодарю всех за великую помощь!
Не представляю даже, как бы я без вас справился : )

Если кто-то может, посоветуйте руководство по Java
Я начинал с "Java 8. Руководство для начинающих" Герберта Шилдта.
 
Благодарю за советы!
 
И снова приветствую всех)

При тестировании плагина, я заметил, что слова слипаются с друг-другом
Пытался провести опыт с этими строчками, но ничего из этого не вышло
Код:
        sb.append(args[fora]);
        }
        }
        String message=sb.toString();


Вот видео для наглядности, что именно происходит при отправке сообщения:

 
И снова приветствую всех)

При тестировании плагина, я заметил, что слова слипаются с друг-другом
Пытался провести опыт с этими строчками, но ничего из этого не вышло
Код:
        sb.append(args[fora]);
        }
        }
        String message=sb.toString();


Вот видео для наглядности, что именно происходит при отправке сообщения:

sb.append(args[fora]).append(" ") // Добавляем пробел после каждого аргумента
String message=sb.substring(0, sb.length() - 1)) // Удаляем последний пробел
 
Если в дальнейшем первый аргумент не будет браться из args, то можно args[0]=""; И отправлять аргс, чтобы меньше парева.
 
Все, пока вопросов не осталось!
Подпишусь на вас, как благодарность, по иному даже не знаю, как я могу еще отблагодарить
И за одно темы ваши посмотрю
 
Назад
Верх