ChatManager-Core
ChatManager-Core — библиотека для работы с чатом Minecraft
- Загрузчики
- FabricNeoForge
- Скачиваний на Modrinth
- 229
- Подписчиков на Modrinth
- 0
- версий
- 14
- Обновлён
- 9 октября 20269 окт.
- Опубликован
- в 2026
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
🇷🇺 Русский
О моде
ChatManager-Core — это библиотека-ядро для полной переработки обработки чата в Minecraft. Мод сам по себе не добавляет готовый визуальный интерфейс — вместо этого он перехватывает всю ванильную обработку чата на сетевом и клиентском уровне и заменяет её собственной архитектурой: каналами, событиями, парсингом сообщений и расширяемым API.
Как это работает технически
Миксины перехватывают пакеты handlePlayerChat и handleSystemChat, а также локально добавленные клиентские сообщения. Стандартная обработка этих пакетов полностью отменяется — вместо этого каждое сообщение оборачивается в единую модель Message (с типами: player, system, client, error, mentioned, animated, custom) и рассылается через шину событий, построенную на MegaEvents — открытой библиотеке событий от Ferra13671. Также перехватывается ввод с клавиатуры, мыши и прокрутка, что необходимо для того, чтобы окна каналов можно было перемещать, изменять в размере и прокручивать независимо от стандартного игрового интерфейса.
Система каналов
- Сообщения распределяются по настраиваемым каналам на основе regex-шаблонов — например, можно разделить торговый чат, чат клана или системные сообщения на отдельные окна.
- Каждый канал ведёт свою историю сообщений с настраиваемым лимитом размера.
- Каналы можно показывать или скрывать через настройки.
- Доступно полностью программное API для регистрации собственных парсеров сообщений (
ChatMessageParser) и обработчиков (MessageHandler), если вы делаете свой мод на основе этого ядра.
Обработка сообщений и удобства
- Встроенный математический движок (
={...}) — вычисляйте математические выражения прямо в поле ввода чата с поддержкой базовых операторов, тригонометрии, факториалов, констант, а также пользовательских констант и функций из конфига. Есть предпросмотр в реальном времени (подсветка корректности цветом), автодополнение Brigadier и мгновенная замена формулы на результат по клавишеTAB. В конфиге доступны режим радиан, формат чисел и собственный префикс выражений. - История ввода (Undo / Redo) — полноценные стеки отмены и повтора (
undoStackиredoStack), обеспечивающие плавную работу горячих клавишCtrl+ZиCtrl+Yв чате. - Разбиение сообщений на части (
ChatQueueManager) — автоматический обход стандартного ванильного лимита в 256 символов: длинные сообщения аккуратно разбиваются на части и отправляются последовательно с настраиваемой задержкой. - Сворачивание повторов — если одно и то же сообщение приходит несколько раз подряд за короткий промежуток, оно не дублируется строка за строкой, а сворачивается в одну строку со счётчиком повторов, например
(x5). - Определение упоминаний — если в сообщении встречается ваш ник, оно помечается отдельным типом сообщения и сопровождается звуковым уведомлением.
- Псевдонимы чата — настройте список текстовых замен, которые автоматически подставляются при отправке сообщения (например, сокращения для часто используемых фраз). Псевдонимы можно применять и к командам, а не только к обычным сообщениям.
- Макросы — отдельная система именованных текстовых заготовок с переключателем включения/выключения и таймером, предназначенная для автоматизации повторяющихся действий в чате.
- Скрытие паролей — аргументы
/login(/l),/register(/reg) и/changepassword(/changepass) маскируются прямо в поле ввода.
🎙️ Голосовой ввод (Speech-to-Text)
Офлайн-распознавание речи на базе Vosk: звук с микрофона обрабатывается локально на вашем компьютере и никогда не отправляется в облако.
- Поддерживается 30+ языков и множество моделей — от компактных (~30–50 МБ) до больших (до нескольких ГБ). По умолчанию используется небольшая русская модель.
- Модели скачиваются по требованию и хранятся в папке конфига мода. Загруженная модель кэшируется в памяти и может быть выгружена в любой момент.
- Индикатор микрофона показывает загрузку, прослушивание, ошибки и громкость ввода в реальном времени. Цвета индикатора настраиваются в конфиге
voice. - События для разработчиков: отсутствие модели, скачивание модели (успех/неудача), неподдерживаемый микрофон, промежуточные и финальные результаты распознавания.
🎞️ GIF в чате
Анимированные GIF прямо в сообщениях: поиск, тренды, скачивание, конвертация в собственный формат .mcanim и кэширование. Используйте синтаксис :slug: или числовой ID; такие сообщения получают отдельный тип ANIMATED. Поиск GIF работает на базе Klipy. Чтобы не раскрывать API-ключ внутри мода, запросы идут не напрямую в Klipy, а через прокси на Cloudflare Workers (https://core.chatmanager.workers.dev/gifs/), который перенаправляет их в Klipy. Запрос содержит поисковую фразу и идентификатор клиента (customer_id) — SHA-256-хеш, сгенерированный из ника и UUID игрока. Конвертация в .mcanim выполняется нативной библиотекой, которая на данный момент доступна только для Windows x64.
Игровые события
PlayerDeathEvent— смерть игрока с координатами (X/Y/Z); удобно, например, для сообщения с координатами вашей смерти.SendPosEvent— позиция игрока в момент отправки сообщения в чат.
AI-стилизация текста
Встроенная интеграция с Groq API (внешним облачным сервисом для инференса LLM). Пользователи могут задать несколько именованных «стилей», каждый со своей моделью, системным промптом и лимитом длины ответа, и использовать их для автоматического перефразирования текста перед отправкой. Для этой функции требуется собственный API-ключ, полученный самостоятельно на сайте Groq и введённый в конфиг.
Вебхуки — пересылка сообщений во внешние сервисы
Мод может отправлять сообщения из чата на внешний HTTP-адрес через POST-запрос — это полезно, например, для пересылки игрового чата в канал Discord через вебхук. Настройка двухуровневая:
- Глобальный вебхук — единый адрес по умолчанию для всех сообщений.
Вебхук для канала — переопределяет глобальный для конкретного канала; если включён, используется вместо глобального вебхука.
- Каждый вебхук может независимо выбирать формат полезной нагрузки: обычный неформатированный текст или сериализованный текстовый компонент Minecraft (с цветами и стилями, в виде JSON).
- Любой канал можно полностью исключить из пересылки, независимо от глобальных настроек. Эта функция отключена по умолчанию и требует, чтобы пользователь вручную указал адрес назначения в файле конфигурации — без этого ни одно сообщение никуда не отправляется.
Конфигурация и хранение данных
Настройки работают на Cloth Config и хранятся в удобочитаемых файлах (Jankson / JSON5) в config/ChatManager-Core/, автоматически создаваемых со значениями по умолчанию при первом запуске. Собственный файловый логгер ведёт отдельный лог-файл для диагностики поведения мода.
Для других разработчиков модов
Ядро полностью построено вокруг открытой событийной шины MegaEvents (от Ferra13671): сообщение получено, сообщение добавлено в канал, сообщение сгруппировано, игрока упомянули, видимость канала изменена, ввод с клавиатуры/мыши, клиентские тики, смерть игрока, события голосового ввода — на любое из этих событий можно подписаться из своего мода, чтобы построить собственный визуальный слой поверх ядра, не переписывая логику перехвата чата с нуля. Зависящий от версии код Minecraft скрыт за слоем абстракции utils.compat. Провайдеры (ComponentSerializerProvider, ClickEventProvider, HoverEventProvider, ScreenProvider, GameProfileProvider, PacketCompatProvider, GraphicsProvider) дают статические точки входа, которые делают написание кода немного удобнее: напишите один раз, не заботясь о том, как та или иная вещь выглядит в 1.21.4 по сравнению с 26.2. Общие обработчики клавиатуры, мыши и добавленных сообщений находятся в utils.compat.handlers.
⚠️ Важно перед установкой
- Это библиотека-ядро без встроенного визуального интерфейса. Сам по себе мод отменяет обработку ванильного чата, но не рисует альтернативный интерфейс — без мода-дополнения, реализующего отрисовку, чат визуально не появится на экране, хотя внутри всё равно обрабатывается.
- Функции вебхуков и AI-стилизации могут отправлять текст сообщений на внешние серверы/сервисы (указанный пользователем HTTP-адрес и/или Groq API соответственно). Обе функции отключены по умолчанию и требуют явной ручной настройки (адрес, API-ключ) для активации — без этого никакие данные никуда не отправляются.
- GIF-изображения обращаются к внешнему сервису: запросы идут через прокси
core.chatmanager.workers.dev, а затем дальше в Klipy (поисковая фраза и идентификатор, построенный из имени и UUID игрока). - Голосовой ввод при первом использовании скачивает библиотеку Vosk (Maven Central) и выбранную языковую модель. Само распознавание речи выполняется локально.
- Каждый jar рассчитан на одну версию Minecraft и один загрузчик — выбирайте файл для своей версии.
Совместимость
| Параметр | Значение |
|---|---|
| Minecraft | 1.21.4 (Java 21+), 26.2 (Java 25+) |
| Загрузчики | Fabric, NeoForge |
| Зависимости | Cloth Config |
| Формат сборки | 1 jar = 1 версия Minecraft + 1 загрузчик |
💡 Вдохновение
Идеи для некоторых функций взяты из этих модов — спасибо их авторам:
🇷🇺 Русский
О проекте
ChatManager-Core — это библиотека-ядро для полной переработки чата в Minecraft. Мод не добавляет готовый визуальный интерфейс сам по себе, а перехватывает всю обработку ванильного чата на уровне сети и клиента и заменяет её собственной архитектурой: каналами, событиями, парсингом сообщений и расширяемым API.
Как это работает технически
Через миксины перехватываются пакеты handlePlayerChat и handleSystemChat, а также добавление локальных клиентских сообщений. Стандартная обработка этих пакетов полностью отменяется — вместо неё каждое сообщение оборачивается в единую модель Message (с типами: игрок, система, клиент, ошибка, упоминание, анимированное, кастомное) и рассылается через событийную шину на базе MegaEvents — открытой библиотеки событий за авторством Ferra13671. Также перехватываются события клавиатуры, мыши и скролла — это нужно, чтобы окна каналов можно было двигать, изменять размер и прокручивать независимо от стандартного игрового интерфейса.
Система каналов
- Сообщения распределяются по настраиваемым каналам на основе regex-паттернов — например, можно вынести торговый чат, клановый чат или системные сообщения в отдельные окна.
- У каждого канала своя история сообщений с ограничением по количеству хранимых записей.
- Каналы можно скрывать/показывать, менять их видимость через настройки.
- Полностью программный API для регистрации собственных парсеров сообщений (
ChatMessageParser) и обработчиков (MessageHandler), если вы разрабатываете свой мод поверх этого ядра.
Обработка и удобства чата
Встроенный математический движок (
={...}) — вычисление математических выражений прямо в строке ввода с поддержкой базовых операторов, тригонометрии, факториалов, констант, а также кастомных констант и функций из конфига. Сопровождается реал-тайм превью (зелёная/красная подсветка валидности), умным автокомплитом (Brigadier) и возможностью мгновенной замены формулы на результат по клавишеTAB. В конфиге доступны режим радиан, формат чисел и свой префикс выражений.- История ввода (Undo / Redo) — полноценные стеки отмены и повтора (
undoStackиredoStack) для удобной работы горячих клавишCtrl+ZиCtrl+Yпрямо в чате. - Чанкование сообщений (
ChatQueueManager) — автоматический обход стандартного ванильного лимита в 256 символов: длинные сообщения аккуратно разбиваются на части и отправляются в очередь с настраиваемой задержкой. - Сворачивание повторов — если одинаковое сообщение приходит несколько раз подряд в течение короткого промежутка времени, оно не дублируется построчно, а сворачивается в один текст со счётчиком повторов вида
(x5). - Обнаружение упоминаний — если в сообщении встречается ваш никнейм, оно помечается отдельным типом и сопровождается звуковым сигналом.
- Алиасы чата — можно настроить список текстовых замен, которые автоматически подставляются при отправке сообщения (например, сокращение часто используемых фраз). Опционально алиасы можно применять и к командам, а не только к обычным сообщениям.
- Макросы — отдельная система именованных текстовых заготовок с возможностью включения/выключения и таймером, для автоматизации повторяющихся действий в чате.
- Скрытие паролей — аргументы команд
/login(/l),/register(/reg) и/changepassword(/changepass) маскируются прямо в строке ввода.
🎙️ Голосовой ввод (Speech-to-Text)
Офлайн-распознавание речи на базе Vosk: звук с микрофона обрабатывается локально, на вашем компьютере, без отправки в облако.
- Поддерживается 30+ языков и множество моделей — от компактных (~30–50 МБ) до больших (до нескольких ГБ). По умолчанию используется небольшая русская модель.
- Модели скачиваются по требованию и хранятся в папке конфигов мода. Загруженная модель кэшируется в памяти, а освободить её можно в любой момент.
- Индикатор микрофона показывает загрузку, прослушивание, ошибки и уровень громкости в реальном времени. Цвета индикатора настраиваются в конфиге
voice. - Для разработчиков доступны события: модель отсутствует, загрузка модели (успех/ошибка), микрофон не поддерживается, промежуточный и итоговый результат распознавания.
🎞️ GIF в чате
Анимированные GIF прямо в сообщениях: поиск, тренды, загрузка, конвертация в собственный формат .mcanim и кэширование. Вставляются в формате :slug: или по числовому ID, а такие сообщения получают отдельный тип ANIMATED. Поиск GIF работает через Klipy. Чтобы не раскрывать API-ключ в самом моде, запросы идут не напрямую, а через прокси на Cloudflare Workers (https://core.chatmanager.workers.dev/gifs/), который переадресует их в Klipy. В запросе передаются поисковая фраза и идентификатор клиента (customer_id), представляющий собой хэш SHA-256 из ника и UUID игрока. Конвертация в .mcanim выполняется нативной библиотекой, и сейчас она доступна только под Windows x64.
Игровые события
PlayerDeathEvent— смерть игрока с координатами (X/Y/Z), на нём можно построить, например, сообщение с координатами смерти.SendPosEvent— позиция игрока в момент отправки сообщения в чат.
AI-стилизация текста
Встроена интеграция с Groq API (внешний облачный сервис для инференса языковых моделей). Пользователь может создать несколько именованных "стилей" — каждый со своей моделью, системным промптом и ограничением на длину ответа — и использовать их для автоматической обработки/переформулирования текста перед отправкой. Для работы этой функции нужен собственный API-ключ, который пользователь получает самостоятельно на сайте Groq и вписывает в конфиг.
Вебхуки — пересылка сообщений на внешние сервисы
Мод умеет отправлять сообщения чата на внешний HTTP-адрес методом POST — это можно использовать, например, для пересылки игрового чата в Discord-канал через вебхук. Настройка двухуровневая:
- Глобальный вебхук — единый адрес для всех сообщений по умолчанию.
- Локальный вебхук канала — переопределяет глобальный для конкретного канала; если он включён, используется вместо глобального.
- Для каждого вебхука отдельно можно выбрать формат передаваемых данных: обычный текст без форматирования или сериализованный Minecraft-компонент (с цветами и стилями в виде JSON).
- Любой канал можно полностью исключить из пересылки, независимо от глобальных настроек. Функция выключена по умолчанию и требует, чтобы пользователь сам вручную указал адрес назначения в конфигурационном файле — без этого ни одно сообщение никуда не отправляется.
Конфигурация и хранение данных
Настройки работают на базе Cloth Config и хранятся в человекочитаемых файлах (Jankson / JSON5) в папке config/ChatManager-Core/. Они генерируются автоматически со значениями по умолчанию при первом запуске. Есть собственный файловый логгер, пишущий отдельный лог-файл для диагностики работы мода.
Для разработчиков других модов
Ядро полностью построено вокруг открытой событийной шины MegaEvents (автор — Ferra13671): получение сообщения, добавление в канал, стак повторов, упоминание игрока, изменение видимости канала, ввод с клавиатуры/мыши, тики клиента, смерть игрока, события голосового ввода — на любое из этих событий можно подписаться из своего мода и построить поверх ядра собственный визуальный слой, не переписывая логику перехвата чата с нуля. Версионно-зависимый код Minecraft скрыт за слоем абстракций utils.compat. Провайдеры (ComponentSerializerProvider, ClickEventProvider, HoverEventProvider, ScreenProvider, GameProfileProvider, PacketCompatProvider, GraphicsProvider) дают статические точки доступа, которые немного упрощают код: его можно писать один раз, не задумываясь, как та или иная вещь выглядит в 1.21.4 и в 26.2. Общие обработчики клавиатуры, мыши и добавления сообщений лежат в utils.compat.handlers.
⚠️ Важно перед установкой
- Это библиотека-ядро без собственного визуального интерфейса. Сам по себе мод отменяет стандартную обработку чата, но не рисует альтернативный интерфейс — если поставить только его без мода-надстройки, реализующего отображение, чат визуально не будет отображаться на экране, хотя технически продолжит обрабатываться.
- Функции вебхуков и AI-стилизации могут отправлять текст сообщений на внешние сервера/сервисы (пользовательский HTTP-адрес и/или Groq API соответственно). Обе функции отключены по умолчанию и требуют явной ручной настройки (адрес, API-ключ) для активации — без этого никакие данные никуда не отправляются.
- GIF обращаются к внешнему сервису: запросы уходят на прокси
core.chatmanager.workers.devи далее в Klipy (поисковая фраза и идентификатор из ника и UUID игрока). - Голосовой ввод при первом использовании скачивает библиотеку Vosk (Maven Central) и выбранную языковую модель. Само распознавание речи происходит локально.
- Каждый jar подходит только для одной версии Minecraft и одного загрузчика — выбирайте файл под свою версию.
Совместимость
| Параметр | Значение |
|---|---|
| Minecraft | 1.21.4 (Java 21+), 26.2 (Java 25+) |
| Загрузчики | Fabric, NeoForge |
| Зависимости | Cloth Config |
| Формат сборок | 1 jar = 1 версия Minecraft + 1 загрузчик |
💡 Вдохновение
Идеи для части функций возникли благодаря этим модам — спасибо их авторам:
Частые вопросы
Как установить ChatManager-Core?
Установите Fabric под свою версию Minecraft, скачайте ChatManager-Core под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть ChatManager-Core?
У ChatManager-Core есть сборки для Minecraft 1.21.4, 26.2.
Нужен ли ChatManager-Core на сервере?
Ставится только в игру; на сервер ставить не нужно