# Журнал изменений (CHANGELOG) Все заметные изменения в этом проекте будут задокументированы в этом файле. Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/), и этот проект придерживается [Семантического Версионирования](https://semver.org/lang/ru/). ## [0.2] - 2024-11-10 ### Добавлено - **ChatITCommand.java**: - **Команда `/r`**: - Добавлена команда `/r` для быстрого ответа на последнее полученное приватное сообщение. - Позволяет игрокам быстро отправлять ответы без необходимости указывать имя получателя. - **Utils.java**: - **Логирование сообщений**: - Реализовано логирование приватных и глобальных сообщений в отдельные файлы `logs/private_messages.log` и `logs/global_messages.log`. - Каждое сообщение логируется с указанием времени, IP-адреса отправителя, имен игроков и содержания сообщения. - **Кликабельность ников и ссылок в чате**: - Добавлена возможность кликабельности ников игроков в чате. При клике на ник игрока предлагается отправить приватное сообщение. - Внедрена кликабельность ссылок в сообщениях чата. Валидные URL автоматически преобразуются в кликабельные ссылки, которые открываются в браузере игрока при клике. - Реализована проверка валидности ссылок перед их преобразованием в кликабельные компоненты. ## [0.1.9] - 2024-10-31 ### Добавлено - **Config.java**: - Добавлен hot-swap режимов фильтрации мата (`off`, `regex`, `api`). - Реализована возможность изменения режима фильтрации мата во время работы сервера через команду `/chatit mode (off|regex|api)`. - **ChatITCommand.java**: - Добавлены кастомные личные сообщения на замену команд `/w`, `/tell`, `/msg`. - Обновлена логика отправки и форматирования приватных сообщений. ### Изменено - **ProfanityChecker.java**: - Обновлена логика проверки мата с учётом новых режимов фильтрации. ## [0.1.8] - 2024-10-30 ### Изменено - **ChatEventHandler.java**: - Изменен цвет сообщений с белого на жёлтый. ## [0.1.7] - 2024-10-23 ### Изменено - **ProfanityChecker.java**: - Установлена версия HTTP на HTTP/1.1 для HttpClient. ## [0.1.6] - 2024-10-21 ### Исправлено - **Проблема с глобальным чатом**: - Исправлены ошибки, влияющие на работу глобального чата. ## [0.1.5] - 2024-10-21 ### Исправлено - **Проблема с локальным чатом**: - Исправлены ошибки, влияющие на работу локального чата. ## [0.1.4] - 2024-10-21 ### Добавлено - **Логирование ошибок в консоль**: - Реализовано комплексное логирование ошибок в консоль. - Облегчает отладку и мониторинг, предоставляя подробные сообщения об ошибках во время выполнения. - **Настраиваемый текст сообщений**: - Введена возможность настройки текста сообщений через конфигурацию. - Пользователи теперь могут изменять стандартные сообщения, чтобы они лучше соответствовали стилю общения сервера. ### Исправлено - **Ошибка таймаута тика**: - Исправлена проблема с таймаутом тика, которая вызывала зависание или сбой сервера при высокой нагрузке. - Повышена стабильность и производительность мода за счет обеспечения более плавного выполнения циклов тиков. ### Изменено - **Переименование класса команды**: - Переименован класс команды с `ChatitCommand.java` на `ChatITCommand.java`. - Улучшает согласованность и читаемость в кодовой базе, соответствуя стандартам именования. ### Сводка изменений - **Улучшенная отладка**: С добавлением логирования ошибок в консоль разработчики теперь могут более эффективно отслеживать и исправлять проблемы. - **Повышенная настраиваемость**: Возможность настройки текста сообщений предоставляет большую гибкость для администраторов серверов. - **Повышенная стабильность**: Исправление ошибки таймаута тика обеспечивает более надежную работу мода, даже при высокой нагрузке. - **Улучшение кодовой базы**: Переименование класса команды способствует более организованной и поддерживаемой структуре кода. ## [0.1.3] - 2024-10-21 ### Добавлено - **Конфигурируемый порог мата**: - Значение порога для определения мата (`0.5`) теперь берётся из конфигурации (`profanity_threshold`), с дефолтным значением `0.5`. - Позволяет настроить чувствительность фильтра мата. - **Конфигурируемое регулярное выражение для проверки мата**: - Регулярное выражение `PROFANITY_REGEX` теперь берётся из конфигурации (`profanity_regex`). - Дефолтное значение установлено в предоставленное регулярное выражение. - Позволяет настраивать или расширять правила фильтрации мата. ### Изменено - **Обновление `ProfanityChecker` и `ChatEventHandler`**: - Модифицированы для использования новых настроек из конфигурации. - Улучшена гибкость и настраиваемость мода. ## [0.1.2] - 2024-10-21 ### Изменено - **Название мода**: - Переименован мод с `Chatit` на `ChatIT` для согласованности и улучшения брендинга. ## [0.1.1] - 2024-10-21 ### Изменено - **Исправление метода получения уровня игрока**: - Использование `receiver.level()` и `sender.level()` теперь обёрнуто в блок `try-with-resources` для корректной работы с ресурсами и устранения ошибок. - **Форматирование префиксов**: - Убрано жирное форматирование (`ChatFormatting.BOLD`) из префиксов `[G]`, `[L]` и `[ERROR]`. Теперь буквы `G`, `L` и `ERROR` отображаются без жирного начертания, сохраняя цветовое выделение. - **Чистый код**: - Удалены все комментарии из кода для повышения читаемости и поддерживаемости. ## [0.1.0] - 2024-10-21 ### Добавлено - **Локальный и глобальный чат**: - Сообщения, начинающиеся с `!`, отправляются глобально всем игрокам. - Сообщения без `!` отправляются локально игрокам в радиусе 50 блоков. - **Префиксы сообщений**: - `[G]` для глобальных сообщений, где `G` лаймового цвета. - `[L]` для локальных сообщений, где `L` жёлтого цвета. - `[ERROR]` для сообщений об ошибках, где `ERROR` красного цвета. - **Проверка на маты**: - Интеграция с внешним API для проверки сообщений на наличие мата. - Асинхронная проверка сообщений, чтобы избежать блокировки основного потока сервера. - Добавлена настройка `regex` для использования регулярного выражения при недоступности API. - **Параметр `adult` для игроков**: - Команда `/chatit adult` для переключения параметра `adult` у игрока. - Настройки игроков сохраняются в файл `config/chatit_player_settings.json`. - Значение `adult` по умолчанию для новых игроков задаётся в конфигурации (`default_adult`). - **Фильтрация сообщений на основе параметра `adult`**: - Если у отправителя `adult` выключен и сообщение содержит маты, оно блокируется и отправляется только ему с префиксом `[ERROR]`. - Игроки с `adult` выключенным не видят сообщения с матами от других игроков. - Игроки с `adult` включенным могут отправлять и получать сообщения с матами. - **Конфигурационный файл**: - Создаётся файл `config/chatit.toml` с настройками: - `host_api`: URL API для проверки мата. - `default_adult`: Значение `adult` по умолчанию для новых игроков (true/false). - `regex`: Использовать регулярное выражение при недоступности API (true/false). - **Асинхронная обработка**: - Взаимодействие с API происходит асинхронно с использованием `CompletableFuture`. - Предотвращает блокировку основного потока сервера при проверке сообщений. - **Обработка ошибок**: - При недоступности API и `regex=true` используется регулярное выражение для проверки мата. - При возникновении ошибок отправляется сообщение об ошибке только отправителю. - **Форматирование сообщений**: - Префиксы `[G]`, `[L]`, `[ERROR]` отображаются с корректным форматированием. - Буквы `G`, `L` и слово `ERROR` окрашены в заданные цвета. ### Изменено - **Оптимизация кода**: - Обработка сообщений перенесена в асинхронный поток для улучшения производительности. - Улучшена структура кода для повышения читаемости и поддерживаемости. - **Исправления**: - Устранены предупреждения и ошибки, связанные с устаревшими методами. - Исправлены проблемы с многопоточностью и доступом к игровым объектам.