Репозиторий содержит файлы модпака и скрипт для подготовки отдельных клиентской и серверной сборок.
Требуется Python 3. Запускайте команды строго из корня репозитория: скрипт использует текущий рабочий каталог как источник файлов.
# Собрать клиент и сервер
python build_pack.py
# Собрать только клиент
python build_pack.py client
# Собрать только сервер
python build_pack.py server
# Задать каталог результата для одного режима
python build_pack.py client -o C:\Temp\InnoMcModpack2-clientПо умолчанию результаты создаются в build/client и build/server. Локальная сборка создаёт каталоги с готовыми файлами, а не ZIP-архивы.
Внимание: перед сборкой целевой каталог полностью удаляется и создаётся заново. Не указывайте через
-oкаталог с ценными файлами. Параметр-oприменяется только при сборке одного режима (clientилиserver) и игнорируется при сборке обоих режимов.
Если запуск выполняется внутри Git-репозитория, скрипт предварительно вызывает git lfs pull. При недоступном Git LFS сборка продолжится с уже имеющимися локальными файлами, поэтому перед публикацией проверьте, что LFS-объекты загружены.
- Клиент: корень репозитория, отфильтрованный правилами
.packignore. - Сервер: корень репозитория, отфильтрованный сначала
.packignore, затем.client_files. - При базовом копировании всегда исключаются
.git,.github,.idea,build,__pycache__,.client_files,.packignore,server_packиbuild_pack.py, независимо от правил фильтрации. - После основной серверной копии содержимое
server_pack/рекурсивно накладывается поверх результата. Файлы с теми же путями перезаписываются; правила.packignoreи.client_filesк этому overlay не применяются. - Сам каталог
server_pack/не попадает в базовую клиентскую или серверную копию: его содержимое добавляется только финальным серверным overlay. .gitignoreвлияет только на Git и не управляет составом сборок.
Практическое размещение файлов:
| Назначение | Что сделать |
|---|---|
| Клиент и сервер | Хранить файл в корне репозитория и не исключать его правилами. |
| Только клиент | Хранить файл в корне и добавить его путь в .client_files. |
| Только сервер | Хранить файл по нужному относительному пути внутри server_pack/. |
| Ни одна сборка | Добавить путь в .packignore. |
В .packignore и .client_files указывайте по одному шаблону на строку. Пустые строки и строки, начинающиеся с #, игнорируются. Правила применяются по порядку, поэтому более позднее совпадение имеет приоритет; правило с ! может повторно включить ранее исключённый путь, только если обход не был остановлен на исключённом родительском каталоге.
GitHub Actions собирает оба режима и публикует артефакты client-pack и server-pack. Для тегов вида v* содержимое сборок дополнительно упаковывается в ZIP-файлы и прикладывается к GitHub Release.