Add Fabric client IRC chat mod and Drone pipeline

This commit is contained in:
2026-06-21 14:31:38 +06:00
commit 910c58c30b
13 changed files with 837 additions and 0 deletions

143
README.md Normal file
View File

@@ -0,0 +1,143 @@
# 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.