**feat(server-docs): add comprehensive m2612 serverpack documentation**

- **What**: Replaced outdated `ReadMeServer.md` with detailed documentation covering:
  - Server paths (repo, local test server, NixOS deployment)
  - `.env` configuration for world-specific datapack sync
  - Script workflows (`sync-with-shelve.sh`, `export-serverpack.sh`, etc.)
  - Local server initialization and Java 25 requirement
  - Datapack synchronization (including `--watch` mode)

- **Why**: Standardize server management workflows, improve maintainability, and provide clear guidance for developers/admins. Updated for **MC 26.1.2** and Fabric compatibility.
This commit is contained in:
2026-07-21 16:59:53 +03:00
parent 3c3997ec7d
commit f568b8540f

View File

@ -1,28 +1,140 @@
# Как добавлять моды в сборку
# Серверная сборка m2612
- Копируются ли мои пользовательские конфиги в serverpack?
Документация по скриптам управления модпаком: от добавления модов до локального тестового сервера и выкладки на NixOS.
Да
## Пути
- Порядок действий для обновления мод пака на сервере
| Что | Путь |
| :-- | :-- |
| Репозиторий модпака | этот каталог |
| Локальный тестовый сервер | `/home/dimti/Seafile/minecraft/installers/m2612` |
| Развёртывание на NixOS | `server-scripts/recreate-m2612.sh` (репозиторий nixos) |
1. Добавляем мод из FreesmLauncher
2. *.disabled моды игнорируются и git-ом, и pakku
3. sync-with-shelve.sh - синхронизация локального состояния папки модов с внутренним хранилищем pakku
4. fetch-with-restore-shelve.sh - не обязательно, но желательно выполнял для консистентности сборки
5. export-serverpack.sh - экспортируют сюдаже локально серверный билд (он же используется скриптом в NixOS).
Старт сервера, если что, вот здесь: `/home/dimti/Seafile/minecraft/installers/m2110`
Дополнительно развертывает получившийся серверный бандл в локальную папку на этом локальном компьютере, для тестирования того, как будет работать сервер на новой сборке (чтоб предварительно протестировать обновленный пак, перед тем как выгружать на NixOS-сервер).
6. Для развёртывания на сервер достаточно только запустить скрипт: server-scripts/recreate-m2110.sh
## Конфигурация `.env`
Разумеется затем надо коммитить текущее состояние, пушить и раздавать на клиенты.
Локальные настройки, не попадают в git. Шаблон — `.env.example`.
# Форменный ужос
```env
LOCAL_WORLD="Новый мир"
```
Для fstab - прокидываем папку datapacks в мир на клиенте, и тестовый сервер на локалке:
Используется скриптом `sync-datapacks-to-world.sh`: в какой мир клиента копировать датапаки из `datapacks/`. Значение с пробелами — в кавычках.
## Шаблон сервера `server-template/`
Минимальный набор файлов для первичного развёртывания локального сервера (хранится в git):
- `eula.txt` — принятие EULA
- `server.properties` — базовые настройки (без секретов)
- `start.sh` — запуск Fabric-сервера (имя jar подставляется скриптом)
Разворачивается командой `init-local-server.sh` в `TARGET_DIR`.
---
## Скрипты `bash/`
### `sync-with-shelve.sh`
Синхронизирует папку `mods/` с реестром pakku (`pakku sync`).
Перед sync временно убирает в `.pakku/shelf` кастомные моды (advanced-xray, mobility), которых нет в CurseForge/Modrinth, и возвращает их обратно после. Без этого pakku пытается их удалить.
Запускать после добавления или удаления модов в FreesmLauncher.
### `fetch-with-restore-shelve.sh`
Скачивает моды из реестра pakku в `mods/` (`pakku fetch --shelve`). Желательно после `sync-with-shelve.sh` — для консистентности локальной папки с lock-файлом.
### `export-serverpack.sh`
Собирает серверный архив и разворачивает его локально:
1. `pakku export``build/serverpack/*.zip`
2. Очищает `mods/` и `config/` в локальном сервере
3. Распаковывает архив в `/home/dimti/Seafile/minecraft/installers/m2612`
4. Синхронизирует `datapacks/``world/datapacks/` на локальном сервере
Пользовательские конфиги из `config/` попадают в serverpack — pakku экспортирует их вместе со сборкой.
### `init-local-server.sh`
Первичная инициализация локального тестового сервера (один раз или после смены версии MC/loader):
1. Копирует шаблоны из `server-template/` (`server.properties` не перезаписывает, если уже есть)
2. Генерирует `start.sh` с актуальным именем Fabric jar
3. Скачивает Fabric Server Launcher (версии берутся из `pakku-lock.json`)
### `start-local-server.sh`
Запускает локальный сервер: `cd` в `TARGET_DIR` и `bash start.sh`.
MC 26.1.2 требует Java 25 (`java-runtime-epsilon` в FreesmLauncher). Для нормальной консоли с историей команд — мод better-fabric-console.
### `sync-datapacks-to-world.sh`
Зеркальная синхронизация датапаков в клиентский мир:
```
# datapacks for m2110 client world
/home/dimti/.local/share/FreesmLauncher/instances/m2110/.minecraft/datapacks /home/dimti/.local/share/FreesmLauncher/instances/m2110/.minecraft/saves/world/datapacks none defaults,bind 0 0
/home/dimti/.local/share/FreesmLauncher/instances/m2110/.minecraft/datapacks /home/dimti/Seafile/minecraft/installers/m2110/world/datapacks none defaults,bind 0 0
```
datapacks/ → saves/$LOCAL_WORLD/datapacks/
```
```bash
bash bash/sync-datapacks-to-world.sh # один раз
bash bash/sync-datapacks-to-world.sh --watch # следить за изменениями (inotifywait)
```
Режим `--watch` удобен при разработке рецептов: правишь файлы в `datapacks/`, они сразу попадают в мир.
---
## Типовой workflow
### Обновление модпака на сервере
1. Добавить/убрать мод в FreesmLauncher (`*.disabled` игнорируются и git-ом, и pakku)
2. `bash/sync-with-shelve.sh`
3. `bash/fetch-with-restore-shelve.sh` (желательно)
4. `bash/export-serverpack.sh` — собрать и развернуть локально для проверки
5. `bash/start-local-server.sh` — протестировать
6. Закоммитить, запушить, раздать клиентам
7. На NixOS: `server-scripts/recreate-m2612.sh`
Или одной VS Code-задачей **Build All** (шаги 24), затем **Start server**.
### Первый запуск локального сервера
1. Скопировать `.env.example``.env`, при необходимости поправить `LOCAL_WORLD`
2. `bash/init-local-server.sh` — шаблон + Fabric jar
3. `bash/export-serverpack.sh` — mods и config
4. `bash/start-local-server.sh`
### Разработка датапаков
1. Запустить VS Code-задачу **Watch sync datapacks to local world** (или `--watch` в терминале)
2. Редактировать файлы в `datapacks/`
3. Перезагрузить датапаки в игре: `/reload`
---
## VS Code tasks (`.vscode/tasks.json`)
| Задача | Скрипт |
| :-- | :-- |
| **Build All** | sync → fetch → export (последовательно) |
| Sync local mods to pakku registry | `sync-with-shelve.sh` |
| Fetch mods and download from pakku registry | `fetch-with-restore-shelve.sh` |
| Export serverpack | `export-serverpack.sh` |
| Start server | `start-local-server.sh` |
| Sync datapacks to local world | `sync-datapacks-to-world.sh` |
| Watch sync datapacks to local world | `sync-datapacks-to-world.sh --watch` (фон) |
| Run serverpack on Anta | `recreate-m2612.sh` на NixOS |
**Build All** — default build task (`Ctrl+Shift+B`).
---
## Заметки
- Клиентские моды, нужные на сервере (lambdynamiclights, xaeros-world-map), настроены в `pakku.json` как `side: BOTH`. Добавлять через `pakku cfg prj -s BOTH <slug>` — один раз.
- Датапаки на NixOS-сервер пока синхронизируются вручную (см. TODO в `ReadMe.md`).