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

Помогите Сокрытие сообщения лишь из чата / решено

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

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

    imDaniX Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    imDaniX
    Здрасте!
    Понадобилась помощь - нужно скрыть сообщение из чата для всех игроков но так, чтобы бы факту оно отправлялось, и было виднО в консоли.
    e.setCancelled() сразу отпадает. При очистке e.getRecipients() происходит тоже самое, что при отмене ивента.
    Может, можно сделать какого-то фейкового игрока для e.getRecipients()? Если да, то как такое реализовать?

    Кроме консоли, сообщение требуется для DynMap. Как и в случае с консолью - при очистке получателей или отмене события сообщение не отправляется на веб-карту. Поэтому, если я просто напишу сообщение через логи, то от этого не будет толку для веб-карты.

    Заранее спасибо.
     
  2. Хостинг MineCraft
    <
  3. MasterCapeXD

    MasterCapeXD Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    MasterCapeXD
    Может так?
    Код:
    public void on(AsyncPlayerChatEvent e)
    {
    
         String msg = e.getMessage();
         System.out.println(msg);
         e.setCancelled(true);
    }
    
    Не уверен, что сработает, но попробовать можно.[DOUBLEPOST=1492252251,1492252144][/DOUBLEPOST]Скажи, как работает DynMap и зачем тебе выводить сообщение и куда? А то я не в курсе
     
  4. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    перебирать получателей, и отправлять каждому отдельно, если получатель не игрок
     
  5. Автор темы
    imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    imDaniX
    Один фиг это лишь вывод в консоль.
    DynMap - веб-карта сервера. Она также позволяет показывать игроков на этой самой карте, а также чат сервера. Т.е. если какой-нибудь Вася ввел "дратути фсем", то и на карте покажется "Вася > дратути фсем"

    Не уверен, что понял вас. Что-то типа такого?

    Код:
        @EventHandler(priority = EventPriority.HIGHEST)
        public void playerChat(AsyncPlayerChatEvent e) {
            for(Player pl : e.getRecipients()){
                if(!(pl instanceof Player))
                    pl.sendMessage(e.getPlayer().getName()+"> "+e.getMessage());
            }
        }
    Но e.getRecipients() вроде возвращает лишь список игроков, да и e.getRecipients().toString() возвращает что-то типа "CraftPlayer:{name="Vasya"}", без иных получателей не-игроков
     
  6. DonDays

    DonDays Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Код:
    @EventHandler
    public void onChat(final AsyncPlayerChatEvent e) {
    e.getRecipments().clear():
    e.getRecipments().add(Bukkit.getConsoleSender());
    }
     
  7. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Recipients - Set<Player>, впихнуть туда консольку не выйдет.
    Bukkit.getConsoleSender().sendMessage(e.getPlayer().getName()+"> "+e.getMessage())
     
  8. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    А в чём проблема? Поидее очищаешь список получателей, и на дунмап это никак не должно влиять.
     
  9. Автор темы
    imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    imDaniX
    Видимо я ещё тот жёпорук, и забыл убрать отмену события из кода, когда проверял плагин с очисткой списка...
    Спасибо за наводку, ото ж ещё неделю тупил бы, как это реализовать :D
     
    Последнее редактирование: 15 апр 2017
Статус темы:
Закрыта.

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