Files
fdgdfg/README.md
arkonsadter 0112bde962
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
Publish jars as a Gitea release on tag push
Add a gitea-release step to the Drone pipeline that uploads everything
in build/libs/*.jar to a Gitea Release named after the pushed tag,
authenticating with a gitea_token secret. The step is guarded with
when.event tag, and tag was added to the pipeline trigger so the build
itself runs for tag events. Document the one-time token / secret setup
and the tag workflow in the README.
2026-06-21 16:18:23 +06:00

171 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`
- Fabric Loom `1.17-SNAPSHOT`
- Java `25`
Дата релиза `Minecraft 26.2`: `2026-06-16`.
Начиная с `26.1` Mojang перестал обфусцировать клиент, а Yarn и Intermediary перестали публиковаться после `1.21.11`. Поэтому в `build.gradle` нет блока `mappings` вообще: исходники Minecraft уже в человекочитаемых именах Mojang, и Loom собирает мод напрямую против них.
Если в CI стоит старый Loom вроде `1.10.5`, сборка `26.2` упадёт с ошибкой `Unsupported class file major version 69`. Для `26.2` нужен новый Loom из актуальной ветки Fabric.
## Команды в игре
- `.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`;
- по тегу — публикует jar-ы из `build/libs/*.jar` как Gitea Release.
Для работы Drone runner должен иметь доступ в интернет, чтобы скачать зависимости Gradle/Fabric.
### Автоматический релиз по тегу
Чтобы Drone выложил собранный мод в раздел Releases репозитория, нужны две разовые настройки и одна команда на каждую новую версию.
**Один раз:**
1. В Gitea: `Settings → Applications → Generate New Token`. Дать токену права `write:repository`. Скопировать.
2. В Drone, на странице репозитория: `Settings → Secrets → New Secret`. Имя — `gitea_token`, значение — токен из шага 1. Поставить галку `Allow Pull Requests` снять (релизы только из push/tag).
**На каждую новую версию:**
```bash
git tag v1.0.0
git push origin v1.0.0
```
Drone поднимет тег как событие, соберёт мод и положит `client-irc-chat-<версия>.jar` в `https://git.nevetime.ru/Arkon/fdgdfg/releases/tag/v1.0.0`. Версия в имени jar-а берётся из `mod_version` в `gradle.properties` — обычно её стоит поднимать вместе с тегом, чтобы они совпадали.
Если что-то идёт не так, посмотреть лог конкретного шага `gitea-release` в Drone — плагин печатает HTTP-ответ Gitea, по нему сразу видно, проблема в токене, URL или путях к файлам.