Files
m2612/ReadMeServer.md
Alexander Demidov f568b8540f **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.
2026-07-21 16:59:53 +03:00

141 lines
6.6 KiB
Markdown
Raw Permalink 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.

# Серверная сборка m2612
Документация по скриптам управления модпаком: от добавления модов до локального тестового сервера и выкладки на NixOS.
## Пути
| Что | Путь |
| :-- | :-- |
| Репозиторий модпака | этот каталог |
| Локальный тестовый сервер | `/home/dimti/Seafile/minecraft/installers/m2612` |
| Развёртывание на NixOS | `server-scripts/recreate-m2612.sh` (репозиторий nixos) |
## Конфигурация `.env`
Локальные настройки, не попадают в git. Шаблон — `.env.example`.
```env
LOCAL_WORLD="Новый мир"
```
Используется скриптом `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/ → 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`).