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

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

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

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

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

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

Каждый файл сборки попадает ровно в один класс. Приоритет — сначала enforced, затем userWritable, затем обычный.

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. Незаверяемый и необновляемый мод — это дыра, поэтому такая публикация отклоняется.

Нестандартный запуск

В том же файле можно задать jvmArgs, gameArgs, classpath, classpathExclude и mainClass — это нужно сборкам со сторонними патчами, которые меняют схему запуска. Для lwjgl3ify этого не требуется: его ставит рецепт compat=lwjgl3ify. Подробности и пример — в разделе Своя Java и нестандартный запуск.