Перейти к содержимому

Настройки сборки

Рядом с профилем install кладёт файл laminara.settings.json — политику сборки, которую задаёт оператор на сервере. Игрок её не видит и не может изменить: она уезжает внутри подписанного манифеста, так что подделать нельзя.

{
"userWritable": ["options.txt", "config/", "saves/", "screenshots/"],
"enforced": ["config/anticheat/**"],
"serverAddress": "play.example.net"
}

Файл предзаполняется при подготовке сборки разумными значениями — правьте его под свою сборку и снова публикуйте.

Три класса файлов

Каждый файл сборки попадает ровно в один класс. Приоритет — enforceduserWritable → обычный.

userWritable

Игрок волен менять. Лаунчер не проверяет, не перезаписывает и не удаляет такие файлы — правки переживают обновления.

enforced

Всегда возвращаются к опубликованному виду — даже правку того же размера лаунчер откатит. Ваши ассеты, форс-настройки.

обычный

Всё, что не в списках. Проверяется по хешу, восстанавливается при расхождении, удаляется, если ушло из манифеста.

Приоритет enforced над userWritable позволяет открыть игроку целую папку, но запереть внутри неё поддерево: userWritable: ["config/"], enforced: ["config/anticheat/**"].

Синтаксис путей

Пути — от корня сборки, через /. Язык шаблонов намеренно скупой, чтобы список случайно не «расширился»:

Шаблон Что совпадает
options.txt ровно этот файл
config/ вся папка config и всё под ней
screenshots/*.png .png прямо в папке (не глубже)
**/*.log любой .log на любой глубине
config/anticheat/** всё поддерево config/anticheat

* не пересекает /, ** — это целый сегмент пути. Всё остальное — буквально.

Адрес сервера

serverAddress (host или host:port, порт по умолчанию 25565) — адрес игрового сервера этой сборки. Лаунчер пингует его по протоколу Minecraft и показывает живой онлайн игроков: по каждой сборке и суммарно по проекту. Поле необязательное; без него счётчик просто не показывается.

Правила для оператора

Publish не даст добавить в userWritable то, что ломает запуск: mods/, libraries/, versions/, рантайм Java, assets/ и корневые .jar. Незаверяемый и необновляемый мод — это дыра, поэтому такая публикация отклоняется.