Войти или зарегистрироваться

[Решено] Изолировать игрока от чата

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

Reality_SC

Старожил
Пользователь
Баллы
123
Имя в Minecraft
Reality_SC
Доброго времени суток, я пытаюсь немного доработать свой плагин виртуальных туров (демо-полётов) так, чтобы игроки, для которых происходит проигрывание демо-пути, были изолированы от чата (вне зависимости от используемого плагина чата).

Имею взгляды на:
  • Реализовать фильтрацию при помощи ProtocolLib?
  • Другие, более простые варианты?!?
Помогите выбрать правильный путь.
 
Мне кажется оно действует, когда игрок пишет сообщение.
Да, я это уже отлавливаю:
Java:
@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent event)
{
    final Player player = event.getPlayer();
    if(demoPlayersList.containsKey(player))
        event.setCancelled(true);
}
, но я хочу, чтобы он не получал никаких лишний сообщений от чатящихся онлайн игроков.
 
Мне кажется оно действует, когда игрок пишет сообщение.
Да, я это уже отлавливаю:
Java:
@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent event)
{
    final Player player = event.getPlayer();
    if(demoPlayersList.containsKey(player))
        event.setCancelled(true);
}
, но я хочу, чтобы он не получал никаких лишний сообщений от чатящихся онлайн игроков.
Немного погуглил, нашел это: https://forums.bukkit.org/threads/block-a-player-from-receiving-all-chat.146672/
 
протокол либ простой и наверное, единственный адекватный вариант.
Удалять игрока из recipients нет смысла, ибо игроку будут выводится системные сообщения и любые другие, которые не относятся к чату игроков.
 
Удалять игрока из recipients нет смысла, ибо игроку будут выводится системные сообщения и любые другие, которые не относятся к чату игроков.
Java:
@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent event)
{
    if(playing.containsKey(event.getPlayer()))
        event.setCancelled(true);
    else
        event.getRecipients().removeAll(demoPlayersList.keySet());
}
Всё-таки пока сделал такое. Потестирую сегодня как оно работает на моём сервере (я использую HeroChat), но позже всё-таки придётся реализовать опциональную поддержку ProtocolLib...
 
разве в WorldGuard нету флага chat-receive? или это не то?
 
В моём случае траектория полета может быть проложена по разным мирам, соответственно, речь про регионы WG тут мало в чём уместна. Только глобальные решения =)
Всем спасибо, тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх