Плагин mcChat - Чат по новому в Майнкрафт - Обновления
mcChat - Чат по новому

Плагин mcChat - Чат по новому 1.0.7


- Небольшие исправления внутри кода.
- Список плохих слов модуля "BAD_WORD" вынесены в отдельный файл.
- Добавлено авто-обновление списка плохих слов (можно выключить).
- Сообщения отправляемые в донат-чат были видны всем, а не только донатерам. Исправлено.
- Сообщения отправляемые в персонал-чат были видны всем, а не только персоналу. Исправлено.
- Добавлен шпионский чат активирующийся по команде при наличии разрешения.
- В конфигурацию добавлены следующие секции (учитывайте это при обновлении на эту версию).

message:
spy_chat_enabled: "&eШпионский чат &aактивирован&e!"
spy_chat_disabled: "&eШпионский чат &cвыключен&e!"
help:
- '&e/chat spy &7- включить/выключить шпионский чат'

permission:
spy: chat.spy # Разрешение на включение/выключение шпионского чата.

chat_module_list:

...

bad_word_module:
chat_module_type: BAD_WORD

# Путь до файла/места хранения плохих слов в папке плагина (не "plugins", а "plugins/mcChat/N", где N и есть путь до файла).
#
# По умолчанию будет распакован файл по умолчанию который хранит в себе
# плохие слова в формате, где каждая новая строка это плохое слово, например:
# плохое слово 1
# плохое слово 2
#
# Файл можно редактировать добавляя или удаляя плохие слова.
#
# Примечание:
# Регистр (верхний нижний не важен) - "Жопа" и "жопа" не важен, дадут один и тот же результат.
# Наличие пробелов - "Ж о п а" и "жопа" не важно, даст один и тот же результат.
# Наличие переносов "\r", табуляции "\t" - "жо\rп\tа" и "жопа" не важно, даст один и тот же результат.
# Наличие кодов цвета (HEX тоже) "жоп &fа" не важно, даст один и тот же результат.
bad_words_txt_file: "bad_words.txt"

# Проверять наличие обновленной версии списка плохих слов?
#
# Обратите внимание:
# Если будет найдено валидное обновление, то текущий файл "bad_words_txt_file" будет перезаписан.
#
# Примечание:
# Если текущий файл "bad_words_txt_file" был модифицирован вами вручную, то его временная
# метка изменения, что что может привести к недопониманию, обновление есть, но не скачивается.
# Например:
# На сервере есть файл "bad_words_txt_url" залитый в 16:30, в 16:32 вы меняете файл "bad_words_txt_file"
# и влючаете сервер с проверкой наличия обновлений, обновление не установится, тк. 16:32 более актуальная дата
# модификации файла чем 16:30 на сервере.
# Такая ситуация невозможна при первой распаковке файла "bad_words_txt_file", тк. ему программно присваивается
# временная метка "0" последней модификации (условно, "никогда не модифицировался").
check_for_updates: false

# URL получения обновленной версии плохих слов "bad_words_txt_file".
#
# Примечание:
# Проверка новизны происходит по заголовку ответа "Last-Modified", который
# автоматически добавляется веб-серверами если файл находится на диске.
# Например в случае с Apache HTTP Server достаточно положить файл в папку "www" и
# Apache HTTP Server сам определит последнюю дату модификации файла и укажет ее в
# заголовке ответа.
bad_words_txt_url: "Ссылка скрыта, пожалуйста Войдите или Зарегистрируйтесь "

...

chat_module:
chat_module_type: CHAT

# Префикс перед сообщениями когда включен "/chat spy" чат (шпионский чат).
# Это явно покажет что сейчас вы в режиме шпионского чата и можете прослушивать все сообщения.
# Оставьте значение пустым 'spy_prefix: ""' чтобы отключить префикс.
spy_prefix: "&7[Шпион] &r"
- Добавлена поддержка регулярных выражений во все модули которые работают с командами + 2 примера по умолчанию "просто для команды" и "для команды с аргументами (влючая 0 аргументов)".
- В конфигурацию добавлены/изменены следующие секции (учитывайте это при обновлении на эту версию).

# Регулярные выражения.
# Плагин использует регулярные выражения в качестве инструмента конфигурации.
# Пожалуйста ознакомьтесь с примерами ниже, подобные выражения неоднократно
# использованы в конфигурации по умолчанию.
#
# В данном примере регулярное выражение распространяется на команду и все подкоманды.
#
# Протестировать регулярное выражение онлайн.
# Ссылка скрыта, пожалуйста Войдите или Зарегистрируйтесь
# Выбранные галочки:
# - (FLAVOR) Java 8
# - (FUNCTION) Match
#
# Регулярное выражение "(?i)^/afk(\\s+.*)?$" и его валидность:
# "/afk" = валидно
# "/afk " = валидно
# "/aFk" = валидно
# "/AFK" = валидно
# "/afk argument1" = валидно
# "/afk argument1 argument2 argument3" = валидно
# "afk argument1" = нет
# "/af" = нет
# "/afkargument1" = нет
#
# "(?i)" - Делает нечувствительным к регистру.
# "^" — Указывает на начало строки.
# "/afk" — Буквально соответствует строке /afk.
# "(\\s+.*)?" — Это группа, которая может присутствовать или отсутствовать. Она состоит из:
# "\\s+" — Один или несколько пробелов.
# ".*" — Любое количество (включая ноль) любых символов.
# "?" — Указывает, что вся группа может присутствовать ноль или один раз.
# "$" — Указывает на конец строки.
sample_regular_expression_1: "(?i)^/afk(\\s+.*)?$"

# В данном примере регулярное выражение распространяется только на команду без подкоманд/аргументов.
#
# Протестировать регулярное выражение онлайн.
# Ссылка скрыта, пожалуйста Войдите или Зарегистрируйтесь
# Выбранные галочки:
# - (FLAVOR) Java 8
# - (FUNCTION) Match
#
# Регулярное выражение "(?i)^/kit\\s*$" и его валидность:
# "/kit" = валидно
# "/kit " = валидно
# "/kiT" = валидно
# "/KIT" = валидно
# "/kit argument1" = нет
# "/kit argument1 argument2 argument3" = нет
# "kit argument1" = нет
# "/ki" = нет
# "/kitargument1" = нет
#
# "(?i)" - Делает нечувствительным к регистру.
# "^" — Указывает на начало строки.
# "/kit" — Буквально соответствует строке /kit.
# "\\s*" — 0 и более пробелов.
# "$" — Указывает на конец строки.
sample_regular_expression_2: "(?i)^/kit\\s*$"

chat_module_list:

# Пример модуля на невозможность использования команд (в виде регулярных выражений) до
# достижения игроком указанного проведенного времени в игре.
newbie_command_delay_module:
chat_module_type: NEWBIE_COMMAND_DELAY
command_regular_expression_list: # Список команд которые нельзя использовать пока игрок не проведет в игре "delay_seconds" секунд.
- "(?i)^/spawn(\\s+.*)?$" # Я не понимаю, что это? Пожалуйста посмотрите примеры регулярных выражений вверху этого файла.
- "(?i)^/afk\\s*$"
message:
access_denied:
time_color:
number: AQUA
abbreviation: RED
text: "&cВоспользоваться этой командой можно будет через %delay%"

# Пример модуля на вайтлист команд (в виде регулярных выражений).
# Только команды (в виде регулярных выражений) из этого списка будут разрешены к использованию.
command_whitelist_module:
chat_module_type: COMMAND_WHITELIST
bypass_permission: chat.command_whitelist_module.bypass # Разрешение на игнорирование работы этого модуля игроком.
command_regular_expression_list: # Список команд которые можно использовать (другие нельзя, тк. это вайтлист).
- "(?i)^/spawn(\\s+.*)?$" # Я не понимаю, что это? Пожалуйста посмотрите примеры регулярных выражений вверху этого файла.
- "(?i)^/afk\\s*$"
message:
access_denied: "&cЭтой команды нет в списке разрешенных, она запрещена к использованию."

# Пример модуля на блеклист команд (в виде регулярных выражений).
# Все команды (в виде регулярных выражений) кроме указанных в списке будут разрешены к использованию.
command_blacklist_module:
chat_module_type: COMMAND_BLACKLIST
bypass_permission: chat.command_blacklist_module.bypass # Разрешение на игнорирование работы этого модуля игроком.
command_regular_expression_list: # Список регулярных выражений команд которые нельзя использовать (другие можно, тк. это блеклист).

# В качестве примера конфигурации по умолчанию, устроим пересечение ограничений вайтлиста и блеклиста, доступной останется только команда "/spawn".
# Я не понимаю, что это? Пожалуйста посмотрите примеры регулярных выражений вверху этого файла.
- "(?i)^/afk(\\s+.*)?$"

# Пример модуля на задержки выполнения команд (в виде регулярных выражений).
# Команды (в виде регулярных выражений) из этого списка при повторном выполнении не выполнятся, а напишут время до след. выполнения.
# Время задержки определяется по умолчанию или разрешением, чем более
# привелигированное разрешение, тем меньше задержка (так по умолчанию, можно изменить).
command_delay_module:
chat_module_type: COMMAND_DELAY
command_regular_expression_list: # Список регулярных выражений команд на которые будет распространяться задержка.
- "(?i)^/afk(\\s+.*)?$" # Я не понимаю, что это? Пожалуйста посмотрите примеры регулярных выражений вверху этого файла.
- "(?i)^/kit\\s*$"

# Пример модуля на индивидуальные задержки выполнения команды (в виде регулярного выражения).
# Команды (в виде регулярных выражений) из этого списка при повторном выполнении не выполнятся, а напишут время до след. выполнения.
# Время задержки определяется по умолчанию или разрешением, чем более
# привелигированное разрешение, тем меньше задержка (так по умолчанию, можно изменить).
custom_command_delay_module:
chat_module_type: CUSTOM_COMMAND_DELAY
custom_command_delay_list:
custom_command_delay_1:
command_regular_expression: "(?i)^/repair(\\s+.*)?$" # Я не понимаю, что это? Пожалуйста посмотрите примеры регулярных выражений вверху этого файла.
custom_command_delay_2:
command_regular_expression: "(?i)^/call\\s*$"
- Добавлен модуль "BAD_WORD" на плохие слова который учитывает пробелы, регистр и коды цветов, есть разрешение которое позволит игнорировать ограничения этого модуля.
- Добавлен модуль "CUSTOM_COMMAND_DELAY" на индивидуальные задержки для команд (а не на список как это сделано в "COMMAND_DELAY"), по аналогии с уже существующим "COMMAND_DELAY" можно задать разрешения которые снизят или уберут задержку при наличии у игрока соответствующего разрешения.
- Добавлен модуль "ANTI_SPAM" который предотвращает слишком частую отправку сообщений (не имеет занчения одинаковые сообщения или нет).
- Добавлен модуль "ANTI_REPETITIONS" который предотвращает повторяющиеся сообщения в чате.
- Добавлен новый чат "донат-чат", пиши "@" перед сообщением, работает при наличии разрешения, можно отключить.
- Добавлен новый чат "персонал-чат", пиши "#" перед сообщением, работает при наличии разрешения (чат для персонала), можно отключить.
- В конфигурацию добавлены следующие секции (учитывайте это при обновлении на эту версию), обратите внимание, что последовательность модулей в конфигурации важна, ниже описан список модулей по умолчанию и позиция новых модулей в нем.

chat_module_list:

newbie_message_delay_module: ...
newbie_command_delay_module: ...
command_whitelist_module: ...
command_blacklist_module: ...
command_delay_module: ...

# Пример модуля на индивидуальные задержки выполнения команды.
# Команды из этого списка при повторном выполнении не выполнятся, а напишут время до след. выполнения.
# Время задержки определяется по умолчанию или разрешением, чем более
# привелигированное разрешение, тем меньше задержка (так по умолчанию, можно изменить).
custom_command_delay_module:
chat_module_type: CUSTOM_COMMAND_DELAY
custom_command_delay_list: # Список ID команд на которые распространяются индивидуальные задержки.
custom_command_delay_1: # ID команды на которую распространяется индивидуальная задержка.
command: "/home" # Команда на которую распространяется индивидуальная задержка.
permission_delay: # Секция конфигурации разрешений-задержек.
default_delay: 7 # (Сек.) Задержка после которой сработает команда.

# Список разрешений-задержек.
# Если нужно оставить только основную задержку "default_delay", без индивидуальных разрешений, то
# закомментируйте или удалите содержимое секции "list" и присвойте ей значение "list: {}" (пустой).
list:
permission_delay_1:
permission: chat.custom_command_delay_module.permission_delay_1
delay: 5 # (Сек.) Задержка после которой сработает команда при наличии разрешения.
permission_delay_2:
permission: chat.custom_command_delay_module.permission_delay_2
delay: 2
permission_delay_3:
permission: chat.custom_command_delay_module.permission_delay_3
delay: 0 # (Сек.) 0 и ниже означает отсутствие задержки при наличии разрешения.
custom_command_delay_2:
command: "/call"
permission_delay:
default_delay: 7
list:
permission_delay_1:
permission: chat.custom_command_delay_module.permission_delay_1
delay: 5
permission_delay_2:
permission: chat.custom_command_delay_module.permission_delay_2
delay: 2
permission_delay_3:
permission: chat.custom_command_delay_module.permission_delay_3
delay: 0
message:
access_denied:
time_color:
number: AQUA
abbreviation: RED
text: "&cНа эту команду действует &lиндивидуальная&r&c задержка на выполнение, до след. выполнения осталось %delay%"

# Пример модуля на блокировку сообщений содержащих плохие слова.
bad_word_module:
chat_module_type: BAD_WORD

# Регистр (верхний нижний не важен) - "Жопа" и "жопа" не важен, дадут один и тот же результат.
# Наличие пробелов - "Ж о п а" и "жопа" не важно, даст один и тот же результат.
# Наличие переносов "\r", табуляции "\t" - "жо\rп\tа" и "жопа" не важно, даст один и тот же результат.
# Наличие кодов цвета (HEX тоже) "жоп &fа" не важно, даст один и тот же результат.
bad_word_list:
- "#"
- "#"
- "#"
- "#"

# Разрешение на игнорирование работы этого модуля игроком.
bypass_permission: chat.bad_word_module.bypass

message:
access_denied:
text: "&cСообщение содержит недопустимые слова."

# Пример модуля на предотвращение слишком частой отправки сообщений (не имеет занчения одинаковые сообщения или нет).
anti_spam_module:
chat_module_type: ANTI_SPAM

# (Тиков. 1 сек = 20 тиков) Сколько тиков должно пройти до
# возможности написать еще одно сообщение в чат (интервал).
delay_ticks: 10

# Разрешение на игнорирование работы этого модуля игроком.
bypass_permission: chat.anti_spam_module.bypass

message:
access_denied:
time_color:
number: AQUA
abbreviation: RED
text: "&cНельзя отправлять сообщения в чат так быстро, до след. отправки осталось %delay%"

# Пример модуля на предотвращение одинаковых сообщений в чате.
# Если среди последних "max_messages_threshold" сообщений, отправляемое сообщение
# встречалось "max_identical_messages" раз и более, то до тех пор пока
# не пройдет "delay_seconds" с момента такого последнего отправленного сообщения,
# такое новое сообщение не будет доставлено в чат с ошибкой "message.access_denied".
anti_repetitions_module:
chat_module_type: ANTI_REPETITIONS

# После какого одинакового сообщения начнется задержка?
# В примере по умолчанию 3-е одинаковое сообщение попадет под задержку и не отправится в чат.
max_identical_messages: 2

# Сколько последних сообщений будет храниться для проверки на наличие повторений.
max_messages_threshold: 10

# (Сек.) Сколько секунд действует задержка до следующей
# возможности написать еще одно одинаковое сообщение в чат.
delay_seconds: 5

# Разрешение на игнорирование работы этого модуля игроком.
bypass_permission: chat.anti_repetitions_module.bypass

message:
access_denied:
time_color:
number: AQUA
abbreviation: RED
text: "&cНельзя отправлять &lодинаковые&r&c сообщения в чат так быстро, до след. отправки осталось %delay%"

chat_module:
enable_donate_chat: true # Если "true", то в чате будет добавлен донат-чат.
donate_chat_permission: "chat.donate_chat_permission" # Разрешение на отправку сообщений в донат-чат.
donate_chat_prefix: "@" # Что нужно написать в начале сообщения чтобы оно попало в донат-чат?
donate_chat_message_format: "&6(донат-чат) &7%player%&f: %message%" # Формат донат-чат сообщения (PAPI поддерживается).

enable_staff_chat: true # Если "true", то в чате будет добавлен персонал-чат.
staff_chat_permission: "chat.staff_chat_permission" # Разрешение на отправку сообщений в донат-чат.
staff_chat_prefix: "#" # Что нужно написать в начале сообщения чтобы оно попало в персонал-чат?
staff_chat_message_format: "&2(персонал-чат) &7%player%&f: %message%" # Формат персонал-чат сообщения (PAPI поддерживается).
- С плагином CMI возникали проблемы приоритета выполнения команд, например "/spawn" вызывала "/cmi spawn" которой например нет в вайтлисте (да и кто вообще догадается что CMI подменяет одну команду на другую), следовательно визуально в вайтлисте есть команда, но пишет что ее нет.
- Добавлен модуль на вайтлист который позволяет выолнять только записанные в нем команды.
- Добавлен модуль на блеклист который позволяет все команды кроме тех которые в нем записаны.
- Добавлен модуль на задержки выполнения указанных команд с возможность снижения времени задержки от разрешения или вовсе ее отключения.
- В конфигурацию добавлены следующие секции (учитывайте это при обновлении на эту версию), обратите внимание, что последовательность модулей в конфигурации важна, ниже описан список модулей по умолчанию и позиция новых модулей в нем.

chat_module_list:

newbie_message_delay_module: ...
newbie_command_delay_module: ...

...

# Пример модуля на вайтлист команд.
# Только команды из этого списка будут разрешены к использованию.
command_whitelist_module:
chat_module_type: COMMAND_WHITELIST
bypass_permission: chat.command_whitelist_module.bypass # Разрешение на игнорирование работы этого модуля игроком.
command_list: # Список команд которые можно использовать (другие нельзя, тк. это вайтлист).
- "/spawn"
- "/afk"
message:
access_denied: "&cЭтой команды нет в списке разрешенных, она запрещена к использованию."

# Пример модуля на блеклист команд.
# Все команды кроме указанных в списке будут разрешены к использованию.
command_blacklist_module:
chat_module_type: COMMAND_BLACKLIST
bypass_permission: chat.command_blacklist_module.bypass # Разрешение на игнорирование работы этого модуля игроком.
command_list: # Список команд которые нельзя использовать (другие можно, тк. это блеклист).
- "/afk" # В качестве примера конфигурации по умолчанию, устроим пересечение ограничений вайтлиста и блеклиста, доступной останется только команда "/spawn".
message:
access_denied: "&cЭта комнада находится в списке запрещенных, она запрещена к использованию."

# Пример модуля на задержки выполнения команд.
# Команды из этого списка при повторном выполнении не выполнятся, а напишут время до след. выполнения.
# Время задержки определяется по умолчанию или разрешением, чем более
# привелигированное разрешение, тем меньше задержка (так по умолчанию, можно изменить).
command_delay_module:
chat_module_type: COMMAND_DELAY
command_list: # Список команд на которые будет распространяться задержка.
- "/afk"
permission_delay: # Секция конфигурации разрешений-задержек.
default_delay: 7 # (Сек.) Задержка после которой сработает команда.
list: # Список разрешений-задержек.
permission_delay_1:
permission: chat.command_delay_module.permission_delay_1
delay: 5 # (Сек.) Задержка после которой сработает команда при наличии разрешения.
permission_delay_2:
permission: chat.command_delay_module.permission_delay_2
delay: 2
permission_delay_3:
permission: chat.command_delay_module.permission_delay_3
delay: 0 # (Сек.) 0 и ниже означает отсутствие задержки при наличии разрешения.
message:
access_denied:
time_color:
number: AQUA
abbreviation: RED
text: "&cНа эту команду действует зажержка на выполнение, до след. выполнения осталось %delay%"

...

chat_module: ...
- Добавлен глобальный/локальный/обычный чат + конфигурация + поддержка PAPI + разрешение на цветной текст.

# Опциональные зависимости: (плагины без которых не будет полного функционала, но работать будет)
# - PlaceholdersAPI Ссылка скрыта, пожалуйста Войдите или Зарегистрируйтесь

# Список модулей управления чатом.
#
# Примечание: последовательность объявления модулей важна, в начале следует
# объявить модули на проверки, а в конце модуль на чат (показывает сообщения).
# В противном случае сообщение сначала может быть показано, а потом будет
# написано, что оно не прошло проверку по той или иной причине, хотя показано.
chat_module_list:

# Пример модуля на чат.
chat_module_3:
chat_module_type: CHAT

# Разрешение на использование кодов цвета в сообщении.
# При наличии у отправителя этого разрешения его сообщения в чате будут окрашиваться если использованы коды цветов.
colorize_message_permission: chat.chat_module_3.colorize_message_permission

# Конфигурация глобального/локального чата.
# Если активно, то обычные сообщения в чате увидят только игроки в указанном радиусе от отправителя, а для того
# чтобы сообщения увидели все игроки, то перед сообщением необходимо написать специальный префикс, например "!".
enable_global_chat: true # Если "true", то в чате будет разделение на глобальный и локальный чаты.
global_chat_prefix: "!" # Что нужно написать в начале сообщения чтобы оно попало в глобальный чат?
global_chat_message_format: "&e(глобальный чат) &7%player%&f: %message%" # Формат глобального сообщения (PAPI поддерживается).
local_chat_radius: 100 # (Блоков) В радиусе скольки блоков от отправителя другие игроки увидят его локальное сообщение.
local_chat_message_format: "&a(локальный чат) &7%player%&f: %message%" # Формат локального сообщения (PAPI поддерживается).

# Формат обычного сообщения который будет использован в случае если "enable_global_chat: false" (PAPI поддерживается).
chat_message_format: "&7%player%&f: %message%"