Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Reality_SC, 25 сен 2014.

Статус темы:
Закрыта.
  1. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

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

    Имею взгляды на:
    • Реализовать фильтрацию при помощи ProtocolLib?
    • Другие, более простые варианты?!?
    Помогите выбрать правильный путь.
     
  2. Хостинг MineCraft
    <
  3. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    AsyncPlayerChatEvent ?
     
  4. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Мне кажется оно действует, когда игрок пишет сообщение.
    Да, я это уже отлавливаю:
    Код:
    @EventHandler
    public void onPlayerChat(AsyncPlayerChatEvent event)
    {
        final Player player = event.getPlayer();
        if(demoPlayersList.containsKey(player))
            event.setCancelled(true);
    }
    
    , но я хочу, чтобы он не получал никаких лишний сообщений от чатящихся онлайн игроков.
     
  5. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Немного погуглил, нашел это: https://forums.bukkit.org/threads/block-a-player-from-receiving-all-chat.146672/
     
  6. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    протокол либ простой и наверное, единственный адекватный вариант.
    Удалять игрока из recipients нет смысла, ибо игроку будут выводится системные сообщения и любые другие, которые не относятся к чату игроков.
     
  7. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Код:
    @EventHandler
    public void onPlayerChat(AsyncPlayerChatEvent event)
    {
        if(playing.containsKey(event.getPlayer()))
            event.setCancelled(true);
        else
            event.getRecipients().removeAll(demoPlayersList.keySet());
    }
    
    Всё-таки пока сделал такое. Потестирую сегодня как оно работает на моём сервере (я использую HeroChat), но позже всё-таки придётся реализовать опциональную поддержку ProtocolLib...
     
  8. Hilgert

    Hilgert Старожил Пользователь

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    разве в WorldGuard нету флага chat-receive? или это не то?
     
  9. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Скорее всего этот флаг делает тоже самое - банально трет recipients
     
  10. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    В моём случае траектория полета может быть проложена по разным мирам, соответственно, речь про регионы WG тут мало в чём уместна. Только глобальные решения =)
    Всем спасибо, тема закрыта.
     
Статус темы:
Закрыта.

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