147 lines
4.0 KiB
Markdown
147 lines
4.0 KiB
Markdown
# 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 `26.2`
|
||
- Fabric Loader `0.19.3`
|
||
- Fabric API `0.152.2+26.2`
|
||
- Java `25`
|
||
|
||
Дата релиза `Minecraft 26.2`: `2026-06-16`.
|
||
|
||
Для этой версии я использую official Mojang mappings через Loom, потому что стандартный Yarn endpoint для `26.2` на момент правки ещё не отдавал mappings.
|
||
|
||
## Команды в игре
|
||
|
||
- `.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 9+ и Java 25.
|
||
|
||
```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.
|