feat: add mute/unmute commands with MuteManager

This commit is contained in:
loki5512344 2025-12-30 21:19:07 +01:00
parent 55c965603f
commit c4d2768423
27 changed files with 559 additions and 2352 deletions

View file

@ -40,19 +40,106 @@ mentions:
sound: true
sound-type: "BLOCK_NOTE_BLOCK_PLING"
# Выделение при @ник
highlight: "<yellow>@{player}</yellow>"
highlight: "<#04CADF>@{player}</#04CADF>"
# Выделение когда твой ник написали (без @)
self-highlight: "<gold><bold>{player}</bold></gold>"
self-highlight: "<#04CADF>{player}</#04CADF>"
# Фильтр мата
filter:
enabled: true
# Регулярные выражения для обнаружения мата с обходами
patterns:
# Основные корни с вариациями
- "х\\s*у\\s*[йяёе]" # хуй, хуя, хуё, хуе
- "[хx]\\s*у\\s*[йяёе]" # латиница: xuй
- "п\\s*[иi]\\s*з\\s*д" # пизд, пiзд
- "п\\s*[иi]\\s*д\\s*[оа]\\s*р" # пидор, пидар
- "[еeё]\\s*б\\s*[аоуыи]" # ебать, ебут, ебал
- "б\\s*л\\s*я\\s*[тдь]" # блять, блядь
- "с\\s*у\\s*к\\s*[аи]" # сука, суки
- "м\\s*у\\s*д\\s*[аи]" # муда, муди
- "г\\s*а\\s*н\\s*д\\s*о\\s*н" # гандон
- "д\\s*р\\s*о\\s*ч" # дрочить
- "с\\s*с\\s*а\\s*т\\s*ь" # ссать
- "с\\s*р\\s*а\\s*т\\s*ь" # срать
- "ш\\s*м\\s*а\\s*р\\s*[аи]" # шмара
- "ч\\s*м\\s*[оы]" # чмо, чмы
- "г\\s*н\\s*и\\s*д\\s*[аы]" # гнида
# Простые слова (для быстрой проверки)
words:
# Основные
- "хуй"
- "пизд"
- "блять"
- "хуя"
- "хуё"
- "хуе"
- "хуёк"
- "хуёчек"
- "хуесос"
- "хуеплёт"
- "пизда"
- "пизде"
- "пизду"
- "пиздец"
- "пиздюк"
- "пиздюшка"
- "пиздануть"
- "спиздить"
- "пиздоглазый"
- "ебать"
- "ебал"
- "ебут"
- "ебись"
- "ебитесь"
- "ебашить"
- "уёбывать"
- "заёбывать"
- "ебашка"
- "ебанарот"
- "блять"
- "блядь"
- "блядина"
- "сука"
- "суки"
- "сучка"
- "мудак"
- "мудила"
- "мудачок"
- "гандон"
- "гандоник"
- "пидор"
- "пидорас"
- "дрочить"
- "дрочка"
- "онанист"
- "ссать"
- "срать"
- "говно"
- "говнюк"
- "шмара"
- "шлюха"
- "проститутка"
- "чмо"
- "чмошник"
- "чмырь"
- "гнида"
- "тварь"
- "падла"
- "сволочь"
- "охуеть"
- "ахуеть"
- "нихуя"
- "кончепизд"
# Обходы с символами
- "х*й"
- "п@зда"
- "б#ять"
- "хуй"
- "ebat"
- "pidar"
- "mudak"
action: "censor" # censor/block/warn
replacement: "***"
@ -69,14 +156,14 @@ automessages:
random: false
formats:
announcement: "<gold>[ОБЪЯВЛЕНИЕ]</gold> <message>"
announcement: "<#04CADF>[ОБЪЯВЛЕНИЕ]</#04CADF> <message>"
# Настройки объявлений
announcements:
# Показывать title при объявлении
show-title: true
# Заголовок title
title-header: "<gold>ОБЪЯВЛЕНИЕ</gold>"
title-header: "<#04CADF>ОБЪЯВЛЕНИЕ</#04CADF>"
# Показывать actionbar при объявлении
show-actionbar: true
# Время показа title (в секундах)

View file

@ -2,56 +2,56 @@
# Сообщения модуля градиентных ников
# Общие
only-player: "§cЭта команда только для игроков!"
no-permission: "§cУ вас нет прав на это действие!"
player-not-found: "§cИгрок не найден!"
reload-success: "§aКонфигурация градиентов перезагружена!"
cooldown: "§cПодождите ещё {time} секунд!"
only-player: "<#04CADF>Эта команда только для игроков!</#04CADF>"
no-permission: "<#04CADF>У вас нет прав на это действие!</#04CADF>"
player-not-found: "<#04CADF>Игрок не найден!</#04CADF>"
reload-success: "<#04CADF>Конфигурация градиентов перезагружена!</#04CADF>"
cooldown: "<#04CADF>Подождите ещё {time} секунд!</#04CADF>"
# Цвета
color-help: |
§e=== Команда /color ===
§e/color <цвет1> [цвет2] ... §7— установить градиент
§e/color on §7— включить цвет
§e/color off §7— выключить цвет
§e/color reset §7— сбросить цвет
§e/color copy <игрок> §7— скопировать цвет
§7Пример: /color #FF0000 #00FF00 #0000FF
color-enabled: "§aЦвет ника включён!"
color-disabled: "§cЦвет ника выключен!"
color-reset: "§aЦвет ника сброшен!"
color-no-colors: "§cУ вас нет установленных цветов!"
color-success: "§aЦвет успешно установлен! Списано: {price} PP"
color-copy-usage: "§cИспользование: /color copy <игрок>"
color-copy-no-colors: "§cУ игрока {player} нет цветов!"
invalid-color: "§cНеверный формат цвета: {color}. Используйте #RRGGBB"
too-many-colors: "§cМаксимум {max} цветов!"
not-enough-colors: "§cМинимум {min} цветов!"
not-enough-points-color: "§cНедостаточно поинтов! Нужно: {price} PP"
<#04CADF>=== Команда /color ===</#04CADF>
<#04CADF>/color <цвет1> [цвет2] ... <gray>— установить градиент</gray>
<#04CADF>/color on <gray>— включить цвет</gray>
<#04CADF>/color off <gray>— выключить цвет</gray>
<#04CADF>/color reset <gray>— сбросить цвет</gray>
<#04CADF>/color copy <игрок> <gray>— скопировать цвет</gray>
<gray>Пример: /color #FF0000 #00FF00 #0000FF</gray>
color-enabled: "<#04CADF>Цвет ника включён!</#04CADF>"
color-disabled: "<#04CADF>Цвет ника выключен!</#04CADF>"
color-reset: "<#04CADF>Цвет ника сброшен!</#04CADF>"
color-no-colors: "<#04CADF>У вас нет установленных цветов!</#04CADF>"
color-success: "<#04CADF>Цвет успешно установлен! Списано: {price} PP</#04CADF>"
color-copy-usage: "<#04CADF>Использование: /color copy <игрок></#04CADF>"
color-copy-no-colors: "<#04CADF>У игрока {player} нет цветов!</#04CADF>"
invalid-color: "<#04CADF>Неверный формат цвета: {color}. Используйте #RRGGBB</#04CADF>"
too-many-colors: "<#04CADF>Максимум {max} цветов!</#04CADF>"
not-enough-colors: "<#04CADF>Минимум {min} цветов!</#04CADF>"
not-enough-points-color: "<#04CADF>Недостаточно поинтов! Нужно: {price} PP</#04CADF>"
# Префикс
prefix-help: |
§e=== Команда /prefix ===
§e/prefix <текст> §7— установить префикс
§e/prefix on §7— включить префикс
§e/prefix off §7— выключить префикс
§e/prefix reset §7— сбросить префикс
prefix-enabled: "§aПрефикс включён!"
prefix-disabled: "§cПрефикс выключен!"
prefix-reset-success: "§aПрефикс сброшен!"
prefix-no-prefix: "§cУ вас нет установленного префикса!"
prefix-success: "§aПрефикс успешно установлен! Списано: {price} PP"
prefix-success-free: "§aПрефикс успешно изменён!"
prefix-no-colors: "§cПрефикс не может содержать цветовые коды!"
prefix-invalid-chars: "§cПрефикс содержит недопустимые символы!"
prefix-blacklisted: "§cЭтот префикс запрещён!"
prefix-too-long: "§cПрефикс слишком длинный! Максимум: {max} символов"
not-enough-points-prefix: "§cНедостаточно поинтов! Нужно: {price} PP"
<#04CADF>=== Команда /prefix ===</#04CADF>
<#04CADF>/prefix <текст> <gray>— установить префикс</gray>
<#04CADF>/prefix on <gray>— включить префикс</gray>
<#04CADF>/prefix off <gray>— выключить префикс</gray>
<#04CADF>/prefix reset <gray>— сбросить префикс</gray>
prefix-enabled: "<#04CADF>Префикс включён!</#04CADF>"
prefix-disabled: "<#04CADF>Префикс выключен!</#04CADF>"
prefix-reset-success: "<#04CADF>Префикс сброшен!</#04CADF>"
prefix-no-prefix: "<#04CADF>У вас нет установленного префикса!</#04CADF>"
prefix-success: "<#04CADF>Префикс успешно установлен! Списано: {price} PP</#04CADF>"
prefix-success-free: "<#04CADF>Префикс успешно изменён!</#04CADF>"
prefix-no-colors: "<#04CADF>Префикс не может содержать цветовые коды!</#04CADF>"
prefix-invalid-chars: "<#04CADF>Префикс содержит недопустимые символы!</#04CADF>"
prefix-blacklisted: "<#04CADF>Этот префикс запрещён!</#04CADF>"
prefix-too-long: "<#04CADF>Префикс слишком длинный! Максимум: {max} символов</#04CADF>"
not-enough-points-prefix: "<#04CADF>Недостаточно поинтов! Нужно: {price} PP</#04CADF>"
# Админ информация
info-header: "§e=== Информация об игроке {player} ==="
info-prefix: "§7Префикс: §f{prefix}"
info-prefix-enabled: "§7Префикс включён: §f{enabled}"
info-colors: "§7Цвета: §f{colors}"
info-color-enabled: "§7Цвет включён: §f{enabled}"
info-prefix-purchased: "§7Префикс куплен: §f{purchased}"
info-header: "<#04CADF>=== Информация об игроке {player} ===</#04CADF>"
info-prefix: "<gray>Префикс: <white>{prefix}</white></gray>"
info-prefix-enabled: "<gray>Префикс включён: <white>{enabled}</white></gray>"
info-colors: "<gray>Цвета: <white>{colors}</white></gray>"
info-color-enabled: "<gray>Цвет включён: <white>{enabled}</white></gray>"
info-prefix-purchased: "<gray>Префикс куплен: <white>{purchased}</white></gray>"

View file

@ -1,12 +1,12 @@
prefix: "<gold>[LoChat]</gold>"
prefix: "<#04CADF>[LoChat]</#04CADF>"
global:
disabled: "<red>Глобальный чат отключен</red>"
toggled-on: "<green>Глобальный чат включен</green>"
toggled-off: "<red>Глобальный чат отключен</red>"
disabled: "<#04CADF>Глобальный чат отключен</#04CADF>"
toggled-on: "<#04CADF>Глобальный чат включен</#04CADF>"
toggled-off: "<#04CADF>Глобальный чат отключен</#04CADF>"
local:
no-players: "<red>Рядом нет игроков</red>"
no-players: "<#04CADF>Рядом нет игроков</#04CADF>"
pm:
# Форматы личных сообщений
@ -20,42 +20,42 @@ pm:
# Старые форматы (для совместимости)
sent: "<gray>[PM] Ты → {player}: {message}</gray>"
received: "<gray>[PM] {player} → Ты: {message}</gray>"
no-reply: "<red>Некому ответить</red>"
ignored: "<red>Этот игрок вас игнорирует</red>"
player-offline: "<red>Игрок не в сети</red>"
self: "<red>Нельзя писать самому себе</red>"
no-reply: "<#04CADF>Некому ответить</#04CADF>"
ignored: "<#04CADF>Этот игрок вас игнорирует</#04CADF>"
player-offline: "<#04CADF>Игрок не в сети</#04CADF>"
self: "<#04CADF>Нельзя писать самому себе</#04CADF>"
ignore:
added: "<green>Игрок {player} добавлен в игнор</green>"
removed: "<green>Игрок {player} убран из игнора</green>"
already-ignored: "<red>Игрок уже в игноре</red>"
not-ignored: "<red>Игрок не в игноре</red>"
self: "<red>Нельзя игнорировать себя</red>"
added: "<#04CADF>Игрок {player} добавлен в игнор</#04CADF>"
removed: "<#04CADF>Игрок {player} убран из игнора</#04CADF>"
already-ignored: "<#04CADF>Игрок уже в игноре</#04CADF>"
not-ignored: "<#04CADF>Игрок не в игноре</#04CADF>"
self: "<#04CADF>Нельзя игнорировать себя</#04CADF>"
announce:
reloaded: "<green>Конфигурация перезагружена</green>"
reloaded: "<#04CADF>Конфигурация перезагружена</#04CADF>"
spy:
enabled: "<green>Шпион режим включен</green>"
disabled: "<red>Шпион режим выключен</red>"
enabled: "<#04CADF>Шпион режим включен</#04CADF>"
disabled: "<#04CADF>Шпион режим выключен</#04CADF>"
format: "<gray>[SPY] {sender} → {receiver}: {message}</gray>"
filter:
blocked: "<red>Сообщение заблокировано (мат)</red>"
warned: "<yellow>Предупреждение: не используйте мат!</yellow>"
blocked: "<#04CADF>Сообщение заблокировано (мат)</#04CADF>"
warned: "<#04CADF>Предупреждение: не используйте мат!</#04CADF>"
cooldown:
wait: "<red>Подождите {time} сек перед следующим сообщением</red>"
wait: "<#04CADF>Подождите {time} сек перед следующим сообщением</#04CADF>"
antispam:
caps: "<red>Слишком много заглавных букв!</red>"
repeat: "<red>Не повторяйте символы!</red>"
similar: "<red>Не отправляйте одинаковые сообщения!</red>"
caps: "<#04CADF>Слишком много заглавных букв!</#04CADF>"
repeat: "<#04CADF>Не повторяйте символы!</#04CADF>"
similar: "<#04CADF>Не отправляйте одинаковые сообщения!</#04CADF>"
clearchat:
cleared: "<green>Чат очищен администратором {player}</green>"
cleared: "<#04CADF>Чат очищен администратором {player}</#04CADF>"
errors:
no-permission: "<red>Нет прав!</red>"
player-not-found: "<red>Игрок не найден</red>"
invalid-usage: "<red>Использование: {usage}</red>"
no-permission: "<#04CADF>Нет прав!</#04CADF>"
player-not-found: "<#04CADF>Игрок не найден</#04CADF>"
invalid-usage: "<#04CADF>Использование: {usage}</#04CADF>"

View file

@ -72,6 +72,18 @@ commands:
permission: chat.clear
aliases: [cc, очиститьчат, сдуфксрфе, сс]
mute:
description: Mute player
usage: /mute <player> <time> [reason]
permission: chat.mute
aliases: [мут, ьгеу]
unmute:
description: Unmute player
usage: /unmute <player>
permission: chat.mute
aliases: [размут, гтьгеу]
chatcolor:
description: Set chat color
usage: /chatcolor <color>
@ -125,6 +137,8 @@ permissions:
default: op
chat.clear:
default: op
chat.mute:
default: op
chat.bypass.cooldown:
default: op
chat.bypass.filter: