# Client IRC Chat Клиентский Fabric-мод, который перехватывает сообщения вида `.irc <текст>` и отправляет их на отдельный TCP IRC-подобный сервер. Формат сообщения в чате клиента: `НАЗВАНИЕ-КЛИЕНТА >> Ник-игрока: сообщение` Пример: `MY-CLIENT >> Arkon: Привет` ## Что входит - клиентский Fabric-мод; - команда `.irc <сообщение>` через обычный чат Minecraft; - служебные команды `.irc status`, `.irc reconnect`, `.irc reload`; - пример простого IRC-сервера на Node.js без внешних зависимостей; - `/.drone.yml` для сборки через Drone CI. ## Важное допущение по версии Я заложил сборку под связку: - Minecraft `1.21.6` - Fabric Loader `0.16.14` - Fabric API `0.126.2+1.21.6` Если под "Fabric 26.2" ты имел в виду другую точную версию, поправь [gradle.properties](/D:/Desktop/gdfg/gradle.properties) и [src/main/resources/fabric.mod.json](/D:/Desktop/gdfg/src/main/resources/fabric.mod.json). ## Команды в игре - `.irc Привет` - отправить сообщение на IRC-сервер - `.irc status` - показать состояние подключения - `.irc reconnect` - переподключиться к IRC-серверу - `.irc reload` - перечитать конфиг из файла ## Конфиг клиента После первого запуска мод создаст: `config/clientirc.json` Пример: ```json { "host": "127.0.0.1", "port": 24469, "clientName": "MY-CLIENT", "token": "", "autoConnect": true, "connectTimeoutMs": 5000 } ``` Поля: - `host` - адрес IRC-сервера - `port` - порт IRC-сервера - `clientName` - то самое `НАЗВАНИЕ-КЛИЕНТА` - `token` - общий токен, если хочешь ограничить подключение - `autoConnect` - подключаться автоматически при старте клиента ## Как поднять сервер для IRC-чата В репозитории уже есть пример сервера: [server/irc-server.js](/D:/Desktop/gdfg/server/irc-server.js) ### 1. Установи Node.js Нужен Node.js 20+. ### 2. Настрой сервер Файл конфига: [server/config.json](/D:/Desktop/gdfg/server/config.json) Пример: ```json { "host": "0.0.0.0", "port": 24469, "token": "secret-token" } ``` Если укажешь `token`, такой же токен нужно прописать в `config/clientirc.json` на клиентах. ### 3. Запусти сервер ```bash cd server node irc-server.js ``` ### 4. Открой порт Если сервер не локальный, открой TCP-порт `24469` в фаерволе и пробрось его на роутере/VPS. ### 5. Подключи клиентов На каждом клиенте укажи: - `host` - IP или домен сервера - `port` - тот же порт - `clientName` - имя клиента - `token` - если используется После этого в игре можно писать: ```text .irc Привет ``` И все подключенные клиенты увидят: ```text [IRC] MY-CLIENT >> Arkon: Привет ``` ## Сборка мода Для локальной сборки нужен Gradle 8.10+ и Java 21. ```bash gradle build ``` Артефакт будет в: `build/libs/` ## Drone CI Файл пайплайна: [/.drone.yml](/D:/Desktop/gdfg/.drone.yml) Он делает: - запуск Docker pipeline; - `gradle clean build`; - вывод содержимого `build/libs`. Для работы Drone runner должен иметь доступ в интернет, чтобы скачать зависимости Gradle/Fabric.