# Серверная сборка 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** (шаги 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`).