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

6.6 KiB
Raw Blame History

Серверная сборка 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 — принятие 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 exportbuild/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/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).