- **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.
6.6 KiB
Серверная сборка m2612
Документация по скриптам управления модпаком: от добавления модов до локального тестового сервера и выкладки на NixOS.
Пути
| Что | Путь |
|---|---|
| Репозиторий модпака | этот каталог |
| Локальный тестовый сервер | /home/dimti/Seafile/minecraft/installers/m2612 |
| Развёртывание на NixOS | server-scripts/recreate-m2612.sh (репозиторий nixos) |
Конфигурация .env
Локальные настройки, не попадают в git. Шаблон — .env.example.
LOCAL_WORLD="Новый мир"
Используется скриптом sync-datapacks-to-world.sh: в какой мир клиента копировать датапаки из datapacks/. Значение с пробелами — в кавычках.
Шаблон сервера server-template/
Минимальный набор файлов для первичного развёртывания локального сервера (хранится в git):
eula.txt— принятие EULAserver.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
Собирает серверный архив и разворачивает его локально:
pakku export→build/serverpack/*.zip- Очищает
mods/иconfig/в локальном сервере - Распаковывает архив в
/home/dimti/Seafile/minecraft/installers/m2612 - Синхронизирует
datapacks/→world/datapacks/на локальном сервере
Пользовательские конфиги из config/ попадают в serverpack — pakku экспортирует их вместе со сборкой.
init-local-server.sh
Первичная инициализация локального тестового сервера (один раз или после смены версии MC/loader):
- Копирует шаблоны из
server-template/(server.propertiesне перезаписывает, если уже есть) - Генерирует
start.shс актуальным именем Fabric jar - Скачивает 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/sync-datapacks-to-world.sh # один раз
bash bash/sync-datapacks-to-world.sh --watch # следить за изменениями (inotifywait)
Режим --watch удобен при разработке рецептов: правишь файлы в datapacks/, они сразу попадают в мир.
Типовой workflow
Обновление модпака на сервере
- Добавить/убрать мод в FreesmLauncher (
*.disabledигнорируются и git-ом, и pakku) bash/sync-with-shelve.shbash/fetch-with-restore-shelve.sh(желательно)bash/export-serverpack.sh— собрать и развернуть локально для проверкиbash/start-local-server.sh— протестировать- Закоммитить, запушить, раздать клиентам
- На NixOS:
server-scripts/recreate-m2612.sh
Или одной VS Code-задачей Build All (шаги 2–4), затем Start server.
Первый запуск локального сервера
- Скопировать
.env.example→.env, при необходимости поправитьLOCAL_WORLD bash/init-local-server.sh— шаблон + Fabric jarbash/export-serverpack.sh— mods и configbash/start-local-server.sh
Разработка датапаков
- Запустить VS Code-задачу Watch sync datapacks to local world (или
--watchв терминале) - Редактировать файлы в
datapacks/ - Перезагрузить датапаки в игре:
/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).