**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.
This commit is contained in:
148
ReadMeServer.md
148
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
|
||||
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 <slug>` — один раз.
|
||||
- Датапаки на NixOS-сервер пока синхронизируются вручную (см. TODO в `ReadMe.md`).
|
||||
|
||||
Reference in New Issue
Block a user