Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Плагин [FUN/CHAT] FaceChat - Чат в лицах и красках! [BukkitDev]

fromgate

Старожил
Пользователь
Баллы
173
Имя в Minecraft
fromgate
FaceChat
v0.1.2

Этот плагин может немного "оживить" чат забавными сообщениями с изображением аватара игрока, построенным на основе его скина.

BukkitDev
Cкачать



facechat.png


Функционал
  • Отображается морду-лица при входе игрока на сервер
  • Отображает аватар (с сообщением) при помощи специальной команды
  • Отображается все сообщения игроков в чате в форме сообщения с аватаром (этот режим по умолчанию отключен)
Команды
Основная команда facechat (алиасы: fchat, face)

  • /facechat reload — перезагрузить конфигурацию
  • /facechat [player:<PlayerName>] <Message> — отобразить сообщение с аватаром (если указано имя игрока, то аватар будет формироваться для этого игрока)
Пермишены
  • facechat.reload — разрешает использовать команду /facechat reload
  • facechat.command — разрешает использоваться команду /facechat <Message>
  • facechat.command.player — разрешает использовать команду /facechat player:<PlayerName> <Message>
  • facechat.chat — у игроков с этим пермишеном в режиме face-chat'а сообщения будут отображаться с аватарами. Режим face-chat надо отдельно включать в config.yml
  • facechat.join — при входе на сервер игрока с таким пермишеном будет отображаться сообщение о входе на сервер с аватаром
Настройка
Код:
general:
  check-updates: true   # Проверка обновлений
face:
  skin-url: http://s3.amazonaws.com/MinecraftSkins/  # URL откуда грузить скины
  separator: '&8++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++' # Разделитель ('' - для отключения)
  cache-lifetime-(minutes): 30  # Время жизни кэша (в минутах)
  default-color: '&e'  # Цвет сообщения по умолчанию
  chat:
    enable-for-chat-messages: false   # Включение/отключене режима face-чата
    message-start-line: 3  # Начальная строка для сообщения (0-7)
    message:  # Шаблон для сообщения
    - '&6&l%player%'
    - +--------------------------------------------------+
    - ''
    - ''
    - ''
    - ''
    - +--------------------------------------------------+
    - '&6&lFaceChat plugin by fromgate'
  join:
    show-join-message: true  # Отображать сообщение при входе игрока на сервер
    remove-default-join-message: true  # Удалять стандартное сообщение
    message: # Шаблон сообщения
    - ''
    - +--------------------------------------------------+
    - ''
    - '&6&l%player%&ejoined the game!'
    - ''
    - ''
    - +--------------------------------------------------+
    - '&6&lFaceChat plugin by fromgate'


Проверка обновлений
FaceChat includes a update checker that use your server internet connection. Update checker will every hour check the dev.bukkit.org to find new released version of plugin and you can easy disable it: just set parameter "check-updates" to "false" in config.yml.
 
Последнее редактирование:
У меня был такой же плагин, только все это было в основе "моего" бота: ArcadeBot :D
В любом случае - прикольно :)
 
Идея

Можно ли запихать в описание предмета?
К примеру, грузишь скин на сервер, в конфиге указываешь: "lore2=host.ru/skin.png". А потом в описание просто забиваешь "lore2" и готово.
 
@Ablovka
Так есть же плагин @serega6531 на картинки в Lore (я кстати, в его плагине подсматривал на процедуру преобразования цвета в ChatColor, но в итоге сделал на основе MapPallete из bukkit). В этом плагине я точно такого делать не буду. Возможно добавляю пару условий для вывода сообщений, просили добавить команду для переключения режима чата, что-то там ещё по мелочам...
Что-то долго не аппровят.

Вот прямая ссылка: http://dev.bukkit.org/media/files/806/122/FaceChat.jar
Кстати, когда вместе с плагином, я писал видео с экрана. Решил запечатлеть момент с начала создания плагина до появления первого результата в виде изображения аватар.
В процессе естественно прерывался на "попить чай", "поговорить по телефону" и т.п. поэтому где-то непрерывность процесса нарушена.

Видео не является ни обучающим ни каким-то там ещё, сделано просто ради забавы и может применяться исключительно для медитации и отключения сознания от бренности бытия ;)

 
Последнее редактирование:
Если много игроков на сервере, не работает плагин(

Так плагин просто супер)
 
Последнее редактирование:
супер плагин респект Разрабу за плагин
 
Если много игроков на сервере, не работает плагин(

Так плагин просто супер)

Единственное узкое место - это закачка скинов с сервера mojang. Т.е. когда много игроков, то чаще пытается скачать все эти скины. Чтобы этого избежать нужно в конфиге поставить время жизни кэша побольше (по умолчанию там стоит 30 минут) — надо поставить несколько часов или даже сутки (1 час = 60, 5 часов = 300, сутки = 1440). Единственное если игрок сменит свой скин, то отобразится это изменение через какое-то время.

Ну и можно попробовать эту версию - тут принудительно кэшируется скин при заходе игрока (а не при первом сообщении):

https://dl.dropboxusercontent.com/u/64799811/FaceChat/FaceChat.jar
супер плагин респект Разрабу за плагин
Спасибо :)
 
есть баг в плагине анти пиар плагин не робит айпи кидаешь в чат и он отправляется
 
есть баг в плагине анти пиар плагин не робит айпи кидаешь в чат и он отправляется
Что за плагин? Почему-то мне кажется, что в том плагине напутаны приоритеты обработчиков событий.
 
да любой анти пиар когда в вашем плагине включаешь чат анти пиар два плагина ставил они просто не работают когда айпи кидаешь пишет к примеру не пиарь а айпи в чат кидается вот такой маленький баг есть в плагине сделай хотя бы для плагина ограничение в чете цифр то реал анти пиар с чатом просто не робит=(
вот я кинул айпи сервера в чат с анти пиар стоит уже два плагина так пробовал все ровно в чат пишет чужой айпи =*(
просто доработай чат сделай анти пиар добавь ограничение в цифрах и все а так плагин супер
а да сделай желательно что бы prefix в чате показывала есть некоторые не доработки а так супер
 

Вложения:

  • oOlsh95.png
    oOlsh95.png
    Размер файла
    34,3 КБ
    Просмотров
    49
да любой анти пиар когда в вашем плагине включаешь чат анти пиар два плагина ставил они просто не работают когда айпи кидаешь пишет к примеру не пиарь а айпи в чат кидается вот такой маленький баг есть в плагине сделай хотя бы для плагина ограничение в чете цифр то реал анти пиар с чатом просто не робит=(
вот я кинул айпи сервера в чат с анти пиар стоит уже два плагина так пробовал все ровно в чат пишет чужой айпи =*(
просто доработай чат сделай анти пиар добавь ограничение в цифрах и все а так плагин супер
а да сделай желательно что бы prefix в чате показывала есть некоторые не доработки а так супер

Можете показать откуда закачать Ваш антипиар? Просто интересно как он обращается с приоритетами событий.

Ну и насчет префикса - тут та же ситуация. Те плагины, которые добавляют префикс и при этом делают это правильно -- их префикс отображается, а если плагины делают это непонятно как, то.... ;)

Внедрять же антипиар или что-то ещё в этот плагин - смысла нет. Есть куча плагинов, которые написаны грамотно и которым FaceChat не помеха.
 
а анти пиар тут качал NumberLimit v1.0 вот как называется
 
@makssof
Если не выставлен - значит всё нормально должно быть. Т.е. это будет приоритет NORMAL, а у моего - HIGH. Т.е. мой плагин должен обрабатывать сообщения уже после твоего и соответственно получать измененное сообщение.

Сейчас скачаю, проверю у себя.
У меня там приоритет не выставлен вообще)
Так что это у меня там проблемка) Увы, сейчас немогу исправить - телефон.

Ага! Скорее всего вот в чем дело:

Ты обрабатываешь PlayerChatEvent, а это событие устарело, если я не ошибаюсь, где-то после выхода bukkit 1.3. Сейчас соответственно надо использовать AsyncPlayerChatEvent.

Скорее всего (это мои домыслы, надо проверять ;)) сначала обрабатывается AsyncPlayerChatEvent, а потом - для совместимости со старыми плагинами — PlayerChatEvent. Поскольку у тебя при обработке не проверяется отменено событие или нет (а надо бы - вдруг сообщение было изменено другим плагином и цифр в нём уже нет?!) то твой получает уже отмененное событие видит в нём цифры и ругается. Только вот мой плагин уже эти цифры отправил посредством простого player.sendMessage(...).

По логике у тебя обработчик должен быть таким:

Код:
   @EventHandler(priority=EventPriority.LOW ignoreCancelled = true)
   public void onPlayerSendMsg(AsyncPlayerChatEvent e) {
      String msg = e.getMessage();
      int count = 0;
      int a = 0;

      for(int b = msg.length(); a < b; ++a) {
         char c = msg.charAt(a);
         if(c == 48 || c == 49 || c == 50 || c == 51 || c == 52 || c == 53 || c == 54 || c == 55 || c == 56 || c == 57) {
            ++count;
         }
      }

      if(count > this.maxCount && !e.getPlayer().hasPermission("numlim.bypass")) {
         e.getPlayer().sendMessage(this.errMsg);
         e.setCancelled(true);
      }

   }

А вообще я сейчас проверю мои мысли касательно очередности обработки сообщений. Результат напишу здесь.
@makssof
В общем, я прав. Компилируем вот такой код:

Код:
@EventHandler(priority=EventPriority.LOW)
    public void onChat11(PlayerChatEvent event){
        event.getPlayer().sendMessage("PlayerChatEvent Pririty:LOW");
    }
    @EventHandler(priority=EventPriority.NORMAL)
    public void onChat12(PlayerChatEvent event){
        event.getPlayer().sendMessage("PlayerChatEvent Pririty:NORMAL");
    }
    @EventHandler(priority=EventPriority.HIGHEST)
    public void onChat13(PlayerChatEvent event){
        event.getPlayer().sendMessage("PlayerChatEvent Pririty:HIGHEST");
    }
 
    @EventHandler(priority=EventPriority.LOW)
    public void onChat01(AsyncPlayerChatEvent event){
        event.getPlayer().sendMessage("AsyncPlayerChatEvent Pririty:LOW");
    }
    @EventHandler(priority=EventPriority.NORMAL)
    public void onChat02(AsyncPlayerChatEvent event){
        event.getPlayer().sendMessage("AsyncPlayerChatEvent Pririty:NORMAL");
    }
    @EventHandler(priority=EventPriority.HIGHEST)
    public void onChat03(AsyncPlayerChatEvent event){
        event.getPlayer().sendMessage("AsyncPlayerChatEvent Pririty:HIGHEST");
    }

Запускаем и пишем в чате "test" получаем следующее:
playerchatevent.jpg


Так что тебе надо обрабатывать событие AsynPlayerChatEvent с приоритетом LOW или LOWEST
 
@makssof
Если не выставлен - значит всё нормально должно быть. Т.е. это будет приоритет NORMAL, а у моего - HIGH. Т.е. мой плагин должен обрабатывать сообщения уже после твоего и соответственно получать измененное сообщение.

Сейчас скачаю, проверю у себя.


Ага! Скорее всего вот в чем дело:

Ты обрабатываешь PlayerChatEvent, а это событие устарело, если я не ошибаюсь, где-то после выхода bukkit 1.3. Сейчас соответственно надо использовать AsyncPlayerChatEvent.

Скорее всего (это мои домыслы, надо проверять ;)) сначала обрабатывается AsyncPlayerChatEvent, а потом - для совместимости со старыми плагинами — PlayerChatEvent. Поскольку у тебя при обработке не проверяется отменено событие или нет (а надо бы - вдруг сообщение было изменено другим плагином и цифр в нём уже нет?!) то твой получает уже отмененное событие видит в нём цифры и ругается. Только вот мой плагин уже эти цифры отправил посредством простого player.sendMessage(...).

По логике у тебя обработчик должен быть таким:

Код:
   @EventHandler(priority=EventPriority.LOW ignoreCancelled = true)
   public void onPlayerSendMsg(AsyncPlayerChatEvent e) {
      String msg = e.getMessage();
      int count = 0;
      int a = 0;

      for(int b = msg.length(); a < b; ++a) {
         char c = msg.charAt(a);
         if(c == 48 || c == 49 || c == 50 || c == 51 || c == 52 || c == 53 || c == 54 || c == 55 || c == 56 || c == 57) {
            ++count;
         }
      }

      if(count > this.maxCount && !e.getPlayer().hasPermission("numlim.bypass")) {
         e.getPlayer().sendMessage(this.errMsg);
         e.setCancelled(true);
      }

   }

А вообще я сейчас проверю мои мысли касательно очередности обработки сообщений. Результат напишу здесь.
@makssof
В общем, я прав. Компилируем вот такой код:

Код:
@EventHandler(priority=EventPriority.LOW)
    public void onChat11(PlayerChatEvent event){
        event.getPlayer().sendMessage("PlayerChatEvent Pririty:LOW");
    }
    @EventHandler(priority=EventPriority.NORMAL)
    public void onChat12(PlayerChatEvent event){
        event.getPlayer().sendMessage("PlayerChatEvent Pririty:NORMAL");
    }
    @EventHandler(priority=EventPriority.HIGHEST)
    public void onChat13(PlayerChatEvent event){
        event.getPlayer().sendMessage("PlayerChatEvent Pririty:HIGHEST");
    }

    @EventHandler(priority=EventPriority.LOW)
    public void onChat01(AsyncPlayerChatEvent event){
        event.getPlayer().sendMessage("AsyncPlayerChatEvent Pririty:LOW");
    }
    @EventHandler(priority=EventPriority.NORMAL)
    public void onChat02(AsyncPlayerChatEvent event){
        event.getPlayer().sendMessage("AsyncPlayerChatEvent Pririty:NORMAL");
    }
    @EventHandler(priority=EventPriority.HIGHEST)
    public void onChat03(AsyncPlayerChatEvent event){
        event.getPlayer().sendMessage("AsyncPlayerChatEvent Pririty:HIGHEST");
    }

Запускаем и пишем в чате "test" получаем следующее:
playerchatevent.jpg


Так что тебе надо обрабатывать событие AsynPlayerChatEvent с приоритетом LOW или LOWEST
Воу. Спасибо за такое мини расследование. :)
Как починят в СЦ компьютер, сразу исправлю. :)
 
@FYNTIK1996
Попробуйте вот эту версию: http://dev.bukkit.org/bukkit-plugins/facechat/files/3-face-chat-v0-1-1/

NumberLimit v1.0 должен заработать.
Возможно исправится ситуация с префиксами/суффиксами (там проблема скорее всего такая же).
v0.1.1
  • Изменился URL скинов. Если Вы обновляетесь с предыдущей версии то либо добавьте в config.yml новый URL http://skins.minecraft.net/MinecraftSkins/ либо просто удалите config.yml - он будет пересоздано с новым адресом (правда настройки текста тоже потеряются)
  • Добавлена поддержка формата имени. Если Вы используете движок чата, который "поставляет" префиксы/суффиксы для имени игрока (что-то вроде [ADM]fromgate), то они будут отображаться и в сообщениях FaceChat
  • Для совместимости с плагинами, которые используют устаревшее событие PlayerChatEvent вместо нового AsyncPlayerChatEvent, плагин теперь также использует его.
 
@FYNTIK1996
Попробуйте вот эту версию: http://dev.bukkit.org/bukkit-plugins/facechat/files/3-face-chat-v0-1-1/

NumberLimit v1.0 должен заработать.
Возможно исправится ситуация с префиксами/суффиксами (там проблема скорее всего такая же).
v0.1.1
  • Изменился URL скинов. Если Вы обновляетесь с предыдущей версии то либо добавьте в config.yml новый URL http://skins.minecraft.net/MinecraftSkins/ либо просто удалите config.yml - он будет пересоздано с новым адресом (правда настройки текста тоже потеряются)
  • Добавлена поддержка формата имени. Если Вы используете движок чата, который "поставляет" префиксы/суффиксы для имени игрока (что-то вроде [ADM]fromgate), то они будут отображаться и в сообщениях FaceChat
  • Для совместимости с плагинами, которые используют устаревшее событие PlayerChatEvent вместо нового AsyncPlayerChatEvent, плагин теперь также использует его.
все отлично работает, спасибо за плагин, но есть одно НО (смотрите на скрине)
и еще: было бы круто, если бы с помощью этого плагина использовать вместо motd из essentials - т.е сообщение отправлялось только игроку который вошел
 

Вложения:

  • facechat.PNG
    facechat.PNG
    Размер файла
    61,8 КБ
    Просмотров
    52
все отлично работает, спасибо за плагин, но есть одно НО (смотрите на скрине)
и еще: было бы круто, если бы с помощью этого плагина использовать вместо motd из essentials - т.е сообщение отправлялось только игроку который вошел
Я за!

Но думаю будет большая нагрузка, каждый игрок заходит и наполняются много .png
 

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

Назад
Верх