From f568b8540fce3fbaab779308b30c7a5dc1f6cac5 Mon Sep 17 00:00:00 2001 From: Alexander Demidov Date: Tue, 21 Jul 2026 16:59:53 +0300 Subject: [PATCH] **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. --- ReadMeServer.md | 150 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 131 insertions(+), 19 deletions(-) diff --git a/ReadMeServer.md b/ReadMeServer.md index 7de918e..305a68c 100644 --- a/ReadMeServer.md +++ b/ReadMeServer.md @@ -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 -``` \ No newline at end of file +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** (шаги 2–4), затем **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 ` — один раз. +- Датапаки на NixOS-сервер пока синхронизируются вручную (см. TODO в `ReadMe.md`).