Skip to content

Запуск ​

launch каже, як запустити гру, коли файли вже на місці.

json
{
  "launch": {
    "command": "${java_bin}",
    "workdir": "${game_directory}",
    "args": [
      "-Xmx4G",
      { "rules": "allow.os.osx", "value": ["-XstartOnFirstThread"] },
      "-cp",
      "${classpath}",
      "net.minecraft.client.main.Main",
      "--username",
      "${auth_player_name}"
    ],
    "envs": { "JAVA_HOME": "${java_home}" }
  }
}
ПолеОбов'язковеЩо це
commandтакПрограма для запуску.
workdirтакТека, в якій вона працює.
argsніЇї аргументи, по черзі.
envsніЗмінні середовища для додавання.

Кожен рядок тут може використовувати змінні.

launch необов'язковий. Без нього маніфест можна встановити, але не запустити.

У конфігурації ​

Ви не пишете сам launch. Ви пишете його поля під manifest. Звичайний Minecraft з кожним видом запису:

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    minecraft({ version: '1.21.1' }),
    java({ version: '21' }),
  ],
  manifest: {
    command: '@minecraft.command', // програма: те, що дає плагін
    args: [
      '@minecraft.jvmArgs', // посилання: стає JVM-аргументами плагіна
      '-Xmx4G', // простий аргумент: передається як написано
      // умовний аргумент: передається лише там, де проходять його правила
      { rules: 'allow.os.osx', value: ['-Xdock:name=My Pack'] },
      '@minecraft.mainClass',
      '@minecraft.gameArgs',
    ],
    workdir: '${game_directory}', // де працює гра
    envs: { PACK_NAME: 'my-pack' }, // змінна середовища для гри
  },
});

opys build замінює кожне посилання справжніми аргументами. Маніфест ніколи не містить посилання з @.

command ​

Програма. Зазвичай ${java_bin}, яку плагін java визначає для кожної ОС.

Нею може бути будь-що. Плагін dgpuj робить нею малий запускач, який далі запускає Java.

workdir ​

Робоча тека процесу. Зазвичай ${game_directory}, бо гра пише збереження і журнали відносно неї.

Лаунчер може її перевизначити.

args ​

Список. Кожен пункт це одне з двох.

Простий аргумент ​

json
"-Xmx4G"

Передається завжди.

Умовний аргумент ​

json
{ "rules": "allow.os.osx", "value": ["-XstartOnFirstThread"] }

Передається, лише коли проходять його правила. value це один рядок або список, тож одна умова може покрити кілька аргументів:

json
{
  "rules": "allow.features.has_custom_resolution",
  "value": [
    "--width",
    "${resolution_width}",
    "--height",
    "${resolution_height}"
  ]
}

Застосування: прапорці, потрібні лише одній ОС, і параметри, які вмикає лаунчер.

Як складається підсумковий список ​

Пройдіть args по черзі. Візьміть кожен простий аргумент. Візьміть значення кожного умовного, правила якого проходять. Потім підставте змінні.

Один пункт результату це один аргумент процесу. Ніщо не ділиться за пробілами, тож шляхи з пробілами безпечні.

envs ​

Змінні середовища для гри. Та сама форма, що й vars, тож значення може різнитися за платформою.

json
"envs": { "JAVA_HOME": "${java_home}" }

Вони додаються до середовища, яке лаунчер уже має. Ніщо не видаляється.