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

  • Автор темы Автор темы imDaniX
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

imDaniX

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

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

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

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

Заранее спасибо.
Может так?
JavaScript:
public void on(AsyncPlayerChatEvent e)
{

     String msg = e.getMessage();
     System.out.println(msg);
     e.setCancelled(true);
}
Не уверен, что сработает, но попробовать можно.
Скажи, как работает DynMap и зачем тебе выводить сообщение и куда? А то я не в курсе
 
Здрасте!
Понадобилась помощь - нужно скрыть сообщение из чата для всех игроков но так, чтобы бы факту оно отправлялось, и было виднО в консоли.
e.setCancelled() сразу отпадает. При очистке e.getRecipients() происходит тоже самое, что при отмене ивента.
Может, можно сделать какого-то фейкового игрока для e.getRecipients()? Если да, то как такое реализовать?

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

Заранее спасибо.
перебирать получателей, и отправлять каждому отдельно, если получатель не игрок
 
Может так?
JavaScript:
public void on(AsyncPlayerChatEvent e)
{

     String msg = e.getMessage();
     System.out.println(msg);
     e.setCancelled(true);
}
Не уверен, что сработает, но попробовать можно.
Скажи, как работает DynMap и зачем тебе выводить сообщение и куда? А то я не в курсе

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

перебирать получателей, и отправлять каждому отдельно, если получатель не игрок

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

Java:
    @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"}", без иных получателей не-игроков
 
Один фиг это лишь вывод в консоль.
DynMap - веб-карта сервера. Она также позволяет показывать игроков на этой самой карте, а также чат сервера. Т.е. если какой-нибудь Вася ввел "дратути фсем", то и на карте покажется "Вася > дратути фсем"



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

Java:
    @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"}", без иных получателей не-игроков
Код:
@EventHandler
public void onChat(final AsyncPlayerChatEvent e) {
e.getRecipments().clear():
e.getRecipments().add(Bukkit.getConsoleSender());
}
 
Код:
@EventHandler
public void onChat(final AsyncPlayerChatEvent e) {
e.getRecipments().clear():
e.getRecipments().add(Bukkit.getConsoleSender());
}
Recipients - Set<Player>, впихнуть туда консольку не выйдет.
Bukkit.getConsoleSender().sendMessage(e.getPlayer().getName()+"> "+e.getMessage())
 
А в чём проблема? Поидее очищаешь список получателей, и на дунмап это никак не должно влиять.
 
А в чём проблема? Поидее очищаешь список получателей, и на дунмап это никак не должно влиять.
Видимо я ещё тот жёпорук, и забыл убрать отмену события из кода, когда проверял плагин с очисткой списка...
Спасибо за наводку, ото ж ещё неделю тупил бы, как это реализовать :D
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх