ChatManager-Core
作者:rebot | 分类:模组
Minecraft 版本: 1.21.4
平台: neoforge
标签: decoration library utility
О проекте
ChatManager-Core — это библиотека-ядро для полной переработки чата в Minecraft. Мод не добавляет готовый визуальный интерфейс сам по себе, а перехватывает всю обработку ванильного чата на уровне сети и клиента и заменяет её собственной архитектурой: каналами, событиями, парсингом сообщений и расширяемым API.
Как это работает технически
Через миксины перехватываются пакеты handlePlayerChat и handleSystemChat, а также добавление локальных клиентских сообщений. Стандартная обработка этих пакетов полностью отменяется — вместо неё каждое сообщение оборачивается в единую модель Message (с типами: игрок, система, клиент, ошибка, упоминание, кастомное) и рассылается через событийную шину на базе MegaEvents — открытой библиотеки событий за авторством Ferra13671. Также перехватываются события клавиатуры, мыши и скролла — это нужно, чтобы окна каналов можно было двигать, изменять размер и прокручивать независимо от стандартного игрового интерфейса.
Система каналов
- Сообщения распределяются по настраиваемым каналам на основе regex-паттернов — например, можно вынести торговый чат, клановый чат или системные сообщения в отдельные окна.
- У каждого канала своя история сообщений с ограничением по количеству хранимых записей.
- Каналы можно скрывать/показывать, менять их видимость через настройки.
- Полностью программный API для регистрации собственных парсеров сообщений (
ChatMessageParser) и обработчиков (MessageHandler), если вы разрабатываете свой мод поверх этого ядра.
Обработка и удобства чата
- Сворачивание повторов — если одинаковое сообщение приходит несколько раз подряд в течение короткого промежутка времени (например, спам от удерживаемой клавиши или системные уведомления), оно не дублируется построчно, а сворачивается в один текст со счётчиком повторов вида
(x5). - Обнаружение упоминаний — если в сообщении встречается ваш никнейм, оно помечается отдельным типом и сопровождается звуковым сигналом.
- Алиасы чата — можно настроить список текстовых замен, которые автоматически подставляются при отправке сообщения (например, сокращение часто используемых фраз). Опционально алиасы можно применять и к командам, а не только к обычным сообщениям.
- Макросы — отдельная система именованных текстовых заготовок с возможностью включения/выключения и таймером, для автоматизации повторяющихся действий в чате.
AI-стилизация текста
Встроена интеграция с Groq API (внешний облачный сервис для инференса языковых моделей). Пользователь может создать несколько именованных "стилей" — каждый со своей моделью, системным промптом и ограничением на длину ответа — и использовать их для автоматической обработки/переформулирования текста перед отправкой. Для работы этой функции нужен собственный API-ключ, который пользователь получает самостоятельно на сайте Groq и вписывает в конфиг.
Вебхуки — пересылка сообщений на внешние сервисы
Мод умеет отправлять сообщения чата на внешний HTTP-адрес методом POST — это можно использовать, например, для пересылки игрового чата в Discord-канал через вебхук. Настройка двухуровневая:
- Глобальный вебхук — единый адрес для всех сообщений по умолчанию.
- Локальный вебхук канала — переопределяет глобальный для конкретного канала; если он включён, используется вместо глобального.
- Для каждого вебхука отдельно можно выбрать формат передаваемых данных: обычный текст без форматирования или сериализованный Minecraft-компонент (с цветами и стилями в виде JSON).
- Любой канал можно полностью исключить из пересылки, независимо от глобальных настроек.
Функция выключена по умолчанию и требует, чтобы пользователь сам вручную указал адрес назначения в конфигурационном файле — без этого ни одно сообщение никуда не отправляется.
Конфигурация и хранение данных
Все настройки хранятся в человекочитаемых JSON-файлах в папке конфигов мода, генерируются автоматически с значениями по умолчанию при первом запуске. Есть собственный файловый логгер, пишущий отдельный лог-файл для диагностики работы мода.
Для разработчиков других модов
Ядро полностью построено вокруг открытой событийной шины MegaEvents (автор — Ferra13671): получение сообщения, добавление в канал, стак повторов, упоминание игрока, изменение видимости канала, ввод с клавиатуры/мыши, тики клиента — на любое из этих событий можно подписаться из своего мода и построить поверх ядра собственный визуальный слой, не переписывая логику перехвата чата с нуля.
⚠️ Важно перед установкой
- Это библиотека-ядро без собственного визуального интерфейса. Сам по себе мод отменяет стандартную обработку чата, но не рисует альтернативный интерфейс — если поставить только его без мода-надстройки, реализующего отображение, чат визуально не отображаться на экране, хотя технически продолжит обрабатываться.
- Функции вебхуков и AI-стилизации могут отправлять текст сообщений на внешние сервера/сервисы (пользовательский HTTP-адрес и/или Groq API соответственно). Обе функции отключены по умолчанию и требуют явной ручной настройки (адрес, API-ключ) для активации — без этого никакие данные никуда не отправляются.
Совместимость
| Параметр | Значение |
|---|---|
| Minecraft | 1.21.4 |
| Загрузчики | Fabric, NeoForge (через Architectury) |
| Java | 21+ |
About
ChatManager-Core is a core library for a complete overhaul of Minecraft's chat handling. The mod does not add a ready-made visual interface on its own — instead, it intercepts all vanilla chat processing at the network and client level and replaces it with its own architecture: channels, events, message parsing, and an extensible API.
How it works technically
Mixins intercept the handlePlayerChat and handleSystemChat packets, as well as locally added client-side messages. Standard processing of these packets is fully cancelled — instead, every message is wrapped into a unified Message model (with types: player, system, client, error, mentioned, custom) and dispatched through an event bus built on MegaEvents, an open-source event library by Ferra13671. Keyboard, mouse, and scroll input are also intercepted, which is required so that channel windows can be moved, resized, and scrolled independently of the standard game UI.
Channel system
- Messages are routed into configurable channels based on regex patterns — for example, you can split trade chat, clan chat, or system messages into separate windows.
- Each channel keeps its own message history with a configurable size limit.
- Channels can be shown or hidden through settings.
- A fully programmatic API is available for registering custom message parsers (
ChatMessageParser) and handlers (MessageHandler) if you're building your own mod on top of this core.
Message processing and quality-of-life features
- Repeat collapsing — if an identical message arrives multiple times in a row within a short window (e.g. spam from a held key or repeated system notifications), it isn't duplicated line by line; instead it's collapsed into a single line with a repeat counter, e.g.
(x5). - Mention detection — if your nickname appears in a message, it's flagged with a dedicated message type and accompanied by a sound notification.
- Chat aliases — configure a list of text replacements that are automatically substituted when sending a message (e.g. shortcuts for frequently used phrases). Aliases can optionally be applied to commands as well, not just regular messages.
- Macros — a separate system of named text snippets with an enable/disable toggle and a timer, intended for automating repetitive chat actions.
AI text styling
Built-in integration with the Groq API (an external cloud service for LLM inference). Users can define several named "styles," each with its own model, system prompt, and response length limit, and use them to automatically process/rephrase text before sending it. This feature requires the user's own API key, obtained independently from Groq's website and entered into the config.
Webhooks — forwarding messages to external services
The mod can send chat messages to an external HTTP address via a POST request — useful, for example, for forwarding in-game chat to a Discord channel through a webhook. Configuration is two-tiered:
- Global webhook — a single default address for all messages.
- Per-channel webhook — overrides the global one for a specific channel; if enabled, it's used instead of the global webhook.
- Each webhook can independently choose the payload format: plain unformatted text, or a serialized Minecraft text component (with colors and styling, as JSON).
- Any channel can be fully excluded from forwarding, regardless of global settings.
This feature is disabled by default and requires the user to manually specify a destination address in the config file — without that, no message is ever sent anywhere.
Configuration and data storage
All settings are stored in human-readable JSON files inside the mod's config folder, automatically generated with default values on first launch. A custom file logger writes a dedicated log file for diagnosing mod behavior.
For other mod developers
The core is built entirely around the open MegaEvents event bus (by Ferra13671): message received, message added to a channel, message stacked, player mentioned, channel visibility changed, keyboard/mouse input, client ticks — any of these events can be subscribed to from your own mod to build a custom visual layer on top of the core, without having to reimplement chat interception logic from scratch.
⚠️ Important before installing
- This is a core library with no built-in visual interface. On its own, the mod cancels vanilla chat processing but does not draw an alternative interface — if installed alone, without an add-on mod that implements rendering, chat not visually appear on screen at all, even though it's still being processed internally.
- The webhook and AI styling features can send message text to external servers/services (a user-specified HTTP address and/or the Groq API, respectively). Both features are disabled by default and require explicit manual configuration (address, API key) to activate — without that, no data is sent anywhere.
Compatibility
| Parameter | Value |
|---|---|
| Minecraft | 1.21.4 |
| Loaders | Fabric, NeoForge (via Architectury) |
| Java | 21+ |
请登录后举报
暂无评论,抢个沙发吧~