Плагин [CHAT] MessageFilter - фильтруем базар, рынок и вокзал! [BukkitDev]

fromgate

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

Этот плагин вносит дополнительный контроль над сообщениями в чате (от любых источников). Вы можете скрывать надоедливые повторяющиеся соообщения, добавлять им кулдаун и полностью заменять (а значит, если потребуется, осуществлять таким образом перевод плагина).

BukkitDev / Spigot
Скачать

Видео-демонстрация


Для чего это нужно?

  • Чтобы скрывать однотипные повторяющиеся сообщения, которые достали всех и каждого;
  • Чтобы заменять одного сообщение другим;
  • Чтобы переводить сообщения от плагинов, которые не предусматривают файла с сообщениями (и не ждать на рубакките два года, пока переведут Ваш любимый плагин 😉)

Функционал
  • Удаление сообщений
  • Замена сообщений "на лету"
  • Установка лимита по времени для отображения сообщения (к примеру 1 раз в 10 секунд)
  • Поддержка регулярных выражений (и других способов установления соответствия строк)
Как это работает?
Для каждого сообщения (с которым нужно что-то сделать) создается правило. Все правильна хранятся в директории "MessageFilter/rules". Вы можете добавлять, изменять, удалять правил как используя команду так и редактируя сами файлы с правилами.

У каждого правила есть ряд параметров:
  • Type — Тип. Определяет метод, который будет использоваться для определения соответствия строки. Всего пять типов:
    • EQUAL — Сравнение (от регистра не зависит). (Пример: "Aaaa Bbbb" будет равно "aaaa bbbb")
    • CONTAINS — поиск подстроки
    • START — проверят начинается ли сообщение с указанного в параметрах текста
    • END — проверяет завершает ли, указанный в параметрах текст, строку в чате
    • REGEX — используются регулярные выражения
  • message-mask — текст, который будет использоваться для определения соответствия сообщения правилу
  • replace-to — текст на который будет произведена замена. Здесь можно использовать плейсхолдеры %word1% ... %wordN%, которые указывают на соответствующие слова в оригинальном сообщении. Пример: Сообщение "fromgate joins server", здесь: word1 - fromgate, word2 = joins, word3 - server
  • cooldown-time — лимит времени, которые задается в формате описания времени из плагина ReActions. Этот параметр используется для того чтобы указать период в течение которого оригинальное сообщение будет отображено лишь один раз. В остальное время будет выполняться замена.
Когда какой-то плагин (или иной источник) отправляет сообщение, то перед тем как его увидит игрок оно обрабатывается силами MessageFilter, который при наличии соответствующего правила изменяет текст сообщения. Игрок увидит уже измененное сообщение вместо оригинального. Это позволяет не просто скрывать сообщения, но даже переводить плагины, которые изначально этого не поддерживают (т.е. в которых сообщения намертво зашиты в коде плагина и без перекомпиляции которых ничего путного не сделать).
Добавлять и изменять правила можно непосредственно в файле (вот пример) либо при помощи команд

Команды
Главная команда плагина msgfilter (алиасы: mfilter, filter).

  • /msgfilter help — ээээ...
  • /msgfilter test — Проверяет работает MessageFilter или нет. Если пишет, что работает — значит 100% работает! Если пишет, что тест не пройден - обновите ProtocolLib и/или сам плагин.
  • /msgfilter add <RuleId> [GroupId] — создать новое правило. Группа - это по сути имя файла, в который будет сохраняться правило.
  • /msgfilter set <RuleId> type|input|output|cooldown|group <Value> — задать параметр (type, input mask, output mask, cooldown time or group) равным <Value>
  • /msgfilter remove <RuleId> — удалить правило
  • /msgfilter list [Mask] [PageNumber] — отобразить список правил
  • /msgfilter info <RuleId> — отобразить подробную информацию по правилу
  • /mfilter reload — перезагрузить правила из файла
Пермишены
messagefilter.config — только один пермишен - для доступа к командам
messagefilter.test — проводить проверку работы MessageFilter при входе игрока на сервер

Зависимости
Для работы данного плагина необходим ProtocoLib. Без него работать не будет!
 
Последнее редактирование:
Круто 👍
Надеюсь другие плагины не будут конфликтовать по поводу этого.
 
@Quickston
Вообще ни как не должно конфликтовать. Плагин отправляя сообщение игроку - отправляет его и всё. Что с ним дальше происходит - его никак не касается и не проверяется.
Т.е. для плагина выглядит так - он отправил сообщение и (условно) считается, что оно отобразилось.
После этого клиенту отправляется пакет с этим сообщением, который и перехватывается (при помощи ProtocolLib) и уже в нём происходит модификация текста.
 
Отличный плагин! Я его навернт раньше всех еще увидел (на Ютубе), но сейчас ты наконец-то создал тему 🙂
 
Отличная вещь! Это ведь можно легко убрать лишние сообщения, а так же переводить многие плагины без изменения классов.
Было бы неплохо добавить возможность пропуска слов и чисел в сообщении. Например: "Online: 148 players" - "Онлайн: %int% игроков".
 
Для поиска - в таких случаях надо использовать регулярные выражения.

Вот пример правила, которое отловит и "переведёт" такую строку:

Код:
online:
  type: REGEX
  message-mask: 'Online: \d+ players'
  replace-to: 'В игре %word2% игроков'
  cooldown-time: ''
 
Отличный плагин! 👍
Посмотрел видио не понял о чём плагин, прочитал описание все сразу понятно стало.
👍
 
Для поиска - в таких случаях надо использовать регулярные выражения.

Вот пример правила, которое отловит и "переведёт" такую строку:

Код:
online:
  type: REGEX
  message-mask: 'Online: \d+ players'
  replace-to: 'В игре %word2% игроков'
  cooldown-time: ''
Где можно почитать про регулярные выражения?
 
Где можно почитать про регулярные выражения?

http://ru.wikipedia.org/wiki/Регулярные_выражения


А вообще я пользуюсь шпаргалками:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
http://regexlib.com/CheatSheet.aspx

И очень помогают разного рода онлайн-тестеры:
http://regex101.com/
http://www.freeformatter.com/regex-tester.html


Очередной шедевр
Спасибо 🙂
 
Замечательный плагин. А на 1.7.2 будет работать?
 
По идее да. А вот на 1.6 и более старых точно не будет
 
На 1.6.4. отлично работает с ProtocolLib 3.3.1.
Еще бы замену сообщений в GUI и тогда плагин будет глобальным переводчиком любого плагина без изменения его кода :3
Ах да, плагин как всегда превосходен.
 
Последнее редактирование:
На 1.6.4. отлично работает с ProtocolLib 3.3.1.
Еще бы замену сообщений в GUI и тогда плагин будет глобальным переводчиком любого плагина без изменения его кода :3
Ах да, плагин как всегда превосходен.

О! Значит, автор ProtocolLib не оставил без внимание мою просьбу 😉
Про GUI - это имеется в виду что? 😉 Интерфейсе майнкрафтов/модов этого естественно не будет. А вот в названиях предметов - я уже подумывал. Это не сложно, принципе тот же. Просто лень одолевает 😉
 
Про GUI - это имеется в виду что? 😉 Интерфейсе майнкрафтов/модов этого естественно не будет. А вот в названиях предметов - я уже подумывал. Это не сложно, принципе тот же. Просто лень одолевает 😉
Названия окон и предметов (и их описаний) в GUI от каких-либо плагинов.
 
Назад
Верх