- Улучшение | Внешние муты из LiteBans, AdvancedBan, BanManager, Essentials и CMI теперь всегда применяются при попытке игрока написать в чат, даже если мут ChatControl отключён или у игрока есть право chatcontrol.bypass.mute. Ранее проверка внешних мутов в этих случаях пропускалась
- Улучшение | AdvancedBan добавлен в softdepend, чтобы хук загружался в правильном порядке
- Исправление | Исправлено отображение {player_unmute_time_remaining}, которое показывало некорректные (отрицательные или сильно ошибочные) значения при муте из внешнего плагина. Теперь время рассчитывается как конец минус текущее время
- Исправление | Вывод команды /mute status теперь показывает корректное оставшееся время для игроков с мутом из внешних плагинов, в соответствии с исправлением выше
- Исправление | Исправлена ошибка "Cannot instantiate SerializedMap in mode YAML from (ArrayList)", которая раньше воспринималась как краш, если в formats/*.yml секция Parts: была записана как YAML-список (например, - Part: ...), а не как map. Теперь такой файл пропускается с понятным предупреждением в консоли и ссылкой на документацию (#3626)
- Новое | Цвет чата и градиент теперь можно использовать одновременно. Выбор градиента больше не сбрасывает {player_chat_color}, поэтому строки формата, использующие эту переменную (например, для цвета имени), продолжают работать, а градиент применяется только к {message}. Спасибо за предложение (#3619)
- Новое | Добавлены три placeholder’а для кастомных форматов: {player_chat_gradient_from} (начальный hex, например #FF5555), {player_chat_gradient_to} (конечный hex) и {player_chat_gradient_name} (предустановленное имя, например Sunset или none)
- Улучшение | /chc color status теперь отображает цвет чата и градиент рядом, если заданы оба, вместо скрытия цвета за градиентом
- Улучшение | Кнопка стекла "Reset chat color" в меню /chc color теперь сбрасывает только обычный цвет. Для сброса градиента используйте кнопку в подменю Gradients. Команда /chc color reset по-прежнему сбрасывает всё сразу
- Улучшение | Переписан IP-фильтр в rules/global.rs: теперь проверяется, что каждый октет находится в диапазоне 0–255, поэтому даты (2026-04-20-09), номера телефонов и строки версий больше не попадают под фильтр рекламы. Добавлены игнорируемые слова (coord, tp, pos, warp, build, version, buying, selling и др.), которые могут стоять перед корректными наборами из 4 чисел
- Улучшение | Фильтр доменов теперь игнорирует английские составные слова и идентификаторы из программирования, похожие на домены (log.in, sign.in, System.in, String.to, File.is), что предотвращает ложные срабатывания в технических обсуждениях и обычных фразах
- Улучшение | Фильтр нецензурной лексики теперь распознаёт составные слова (motherfucker, clusterfuck), а также базовые и замаскированные варианты
- Исправление | Исправлена проблема с правилами ignore players, где происходило сравнение только полного совпадения сообщения с именем одного игрока. Теперь из текста удаляются имена всех онлайн-игроков перед проверкой, поэтому правила спама/флуда больше не срабатывают на сообщения, просто содержащие ник (например, Lexiiiiiik больше не вызывает срабатывание фильтра повторяющихся символов). Спасибо Lanya из обсуждения #3324
- Прочее | Внутреннее: обработка ignore-players теперь компилирует один общий паттерн на сообщение (вместо отдельного для каждого игрока) и сортирует имена по убыванию длины, чтобы избежать ошибок с пересекающимися префиксами (например, Ab и Abc)
- Улучшено: настройки /spy off, выбор отдельных функций в меню /spy и переключения через /spy toggle больше не сбрасываются при каждом входе у игроков с правом chatcontrol.spy.autoenable. Автовключение теперь происходит только при первом входе; после этого выбранные игроком категории (команды, почта, таблички, книги, наковальня, личные сообщения, каналы) сохраняются между повторными входами.
- New | Совместимость с Minecraft 26.1
- Improve | Автоматическая миграция таблиц базы данных почты и логов на новую схему при запуске
- Improve | Улучшенное сообщение об ошибке, если ключ Prefix в разделе Messages файла settings.yml имеет неправильный формат
- Fix | Исправлена гонка потоков, из-за которой кэш игрока мог удаляться до завершения асинхронной обработки чата
- Fix | Предзагрузка кэша базы данных игрока во время асинхронного входа для устранения разрыва между «игрок онлайн» и «кэш загружен»
- Fix | Исправлены сообщения о входе/выходе/кике с устаревшими цветами, вызывавшие ошибки на клиенте vanilla на современных серверах
- Fix | Исправлен ложноположительный срабатывание фильтра рекламных доменов на NBT-тегах вроде 10b или 3.5d
- Fix | Исправлен «NullPointerException» в сообщениях о смерти, когда убийца не имеет кастомного имени
- Fix | Ошибки при известных проблемах с подключением к Redis на p####i больше не возникают
- Fix | Исправлено, что символ \n в командах кикал игроков в Minecraft 26.1
- Fix | Исправлена уязвимость ReDoS при конвертации цвета из legacy в MiniMessage
Примечание разработчика: надеюсь, вам нравится более частый выпуск обновлений! Нет, я не перекладываю работу на ИИ. Я получил спонсорство от Microsoft for Startups, поэтому использую Claude Opus 4.6 на максимальных настройках через них как помощника, как это сейчас делают многие опытные разработчики, но я корректно направляю его и проверяю всё. Также мы добавили автоматическую отправку отчётов о сбоях на GitHub (это можно отключить в settings.yml), поэтому может показаться, что у плагина стало больше багов, что не так — просто раньше большинство не открывало тикеты, и у меня не было возможности это исправить. Теперь мы будем чаще исправлять подобные редкие случаи. Если вам нравится, что я вернулся к разработке, пожалуйста, оставьте отзыв!
Пожалуйста, также обновите BungeeControl и VelocityControl.
- Исправлено: устранён сбой "ConcurrentModificationException", возникавший при таймерных рассылках, когда синхронизация p####i записывала данные в коллекции SyncedCache, пока основной поток их читал
- Исправлено: устранён редкий сбой "NoClassDefFoundError: github/scarsz/discordsrv/dependencies/jda/api/JDA", возникавший при недоступности классов DiscordSRV во время выполнения (повреждённый jar, hot-swap)
- Исправлено: устранена ошибка "Cannot invoke PlayerCache.fromCached() because cache is null", возникавшая при смерти игрока во время асинхронного события spy
- Улучшение: система отчётов об ошибках Sentry заменена на собственный self-hosted краш-репортер. Ключ Sentry в settings.yml теперь называется Error_Auto_Reporting
- Исправление: решена проблема, при которой команды с пагинацией (например, /chc log) отображали смешанный вывод с другими плагинами на базе Foundation при совместном использовании
- Fix Исправлено зависание сервера на Folia/ShreddedPaper, когда интеграция Discord вызывает JDA. Внутренний асинхронный планировщик ошибочно использовал GlobalRegionScheduler (основной поток) из Folia вместо AsyncScheduler, из-за чего блокирующие операции, такие как вызовы Discord API, вызывали зависание сервера.
Пожалуйста, также обновите BungeeControl и VelocityControl.
- Новое: добавлен тип переключателя proxy_chat — игроки могут использовать /toggle proxy_chat, чтобы отключить получение сообщений из межсерверных каналов, при этом сохраняя возможность писать в p####i-каналы. Включается в settings.yml в разделе Toggle.Apply_On.
- Исправлено: устранена ошибка "Missing localization key 'command-info-variables-empty'", возникавшая, когда команда /chc info variables возвращала пустой результат.