Add Fabric client IRC chat mod and Drone pipeline
This commit is contained in:
143
README.md
Normal file
143
README.md
Normal 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.
|
||||
Reference in New Issue
Block a user