Помогите Отправить ошибку на языке клиента.

Статус
Закрыто для дальнейших ответов.

keltkelt

Активный участник
Пользователь
Баллы
68
Игрок шепчет определенному игроку командой /tell, а ему должна прийти ошибка "такой игрок не найден".
Однако, просто послать ему строку не могу, я же не знаю на каком языке его клиент. Как послать игроку эту ошибку, или закрыть игрока для приватных мессаг?

Причины не играют роли, мне нужно выполнить именно эту задачу.
 
Игрок шепчет определенному игроку командой /tell, а ему должна прийти ошибка "такой игрок не найден".
Однако, просто послать ему строку не могу, я же не знаю на каком языке его клиент. Как послать игроку эту ошибку, или закрыть игрока для приватных мессаг?

Причины не играют роли, мне нужно выполнить именно эту задачу.
Ты уж определись, какая у тебя задача.
Локализация и скрытие игрока - два разных вопроса.
По поводу локализации. Вроде как в Майне нет сообщений "Игрок такой-то не найден". Если только при работе с командными блоками каким-нибудь. Соответственно, если такого сообщения на клиенте нет, тебе самостоятельно прописать сообщения для всех языков в конфиге.
Можешь послать игроку нужное сообщение, благо клиент при заходе сам свой язык отправляет.
 
Ты уж определись, какая у тебя задача.
Локализация и скрытие игрока - два разных вопроса.
По поводу локализации. Вроде как в Майне нет сообщений "Игрок такой-то не найден". Если только при работе с командными блоками каким-нибудь. Соответственно, если такого сообщения на клиенте нет, тебе самостоятельно прописать сообщения для всех языков в конфиге.
Можешь послать игроку нужное сообщение, благо клиент при заходе сам свой язык отправляет.

Я о сообщении, которое выдается, если набрать /tell с несуществующим игроком. Дело в том, что я скрыл игрока из автоподстановки в чате, но можно по-прежнему отправить ему сообщение вручную. А я делаю невидимку.
 
Игрок шепчет определенному игроку командой /tell, а ему должна прийти ошибка "такой игрок не найден".
Однако, просто послать ему строку не могу, я же не знаю на каком языке его клиент. Как послать игроку эту ошибку, или закрыть игрока для приватных мессаг?

Причины не играют роли, мне нужно выполнить именно эту задачу.

https://www.spigotmc.org/wiki/the-chat-component-api/#client-side-translations
Честно говоря - не знаю, как именно работает плейсхолдер в строке с переводом(там содержится "%s").
Предположение во второй строке.

Код:
TranslatableComponent tellMsg = new TranslatableComponent( "commands.generic.player.notFound" );
tellMsg.addWith(args[0]);
player.spigot().sendMessage(tellMsg);
 
https://www.spigotmc.org/wiki/the-chat-component-api/#client-side-translations
Честно говоря - не знаю, как именно работает плейсхолдер в строке с переводом(там содержится "%s").
Предположение во второй строке.

Код:
TranslatableComponent tellMsg = new TranslatableComponent( "commands.generic.player.notFound" );
tellMsg.addWith(args[0]);
player.spigot().sendMessage(tellMsg);

Благодарю за ответ! Судя по args[0], выполнение предполагалось в onCommand?
Странная штука творится. Пока что, вместо args[0] вписал ник. Если делать код в onPlayerJoin:
Код:
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
    TranslatableComponent tellMsg = new TranslatableComponent( "commands.generic.player.notFound" );
    tellMsg.addWith("TestPlayer");
    event.getPlayer().spigot().sendMessage(tellMsg);
Сообщение выводится и переводится.
Однако, если я располагаю его в onCommand:
Код:
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    TranslatableComponent tellMsg = new TranslatableComponent( "commands.generic.player.notFound" );
    tellMsg.addWith("TestPlayer");
    sender.spigot().sendMessage(tellMsg);
По идее, при любой команде он должен выполниться, но не выполняется.

p.s. Попробовал sender в Player переделать, но не сработало.
Код:
Player pl = Bukkit.getPlayer(sender.getName());
pl.spigot().sendMessage(tellMsg);

P.P.S Кажется /tell обрабатывается иначе, чем например, мои кастомные команды. При вводе кастомной - срабатывает сообщение, а при вводе tell - нет, будто его вообще не onCommand обрабатывает.
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх