Skip to content

Правила ​

Правило каже, де щось застосовується: «лише на Windows», «не на ARM», «лише з увімкненим прапорцем».

json
"rules": "allow.os.windows"

rules це одне правило або список. Відсутність означає «завжди».

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

Звичайний Minecraft, з правилом у кожному з трьох місць конфігурації, де воно може бути:

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    minecraft({ version: '1.21.1' }),
    java({ version: '21' }),
    files({
      from: 'tools',
      to: (file) => '${game_directory}/tools/' + file.rel,
    }).addRule('**/*.dll', 'allow.os.windows'), // файл: встановлюється лише на Windows
  ],
  manifest: {
    command: '@minecraft.command',
    args: [
      // аргумент: передається лише на macOS
      { rules: 'allow.os.osx', value: ['-Xdock:name=My Pack'] },
      '@minecraft.jvmArgs',
      '@minecraft.mainClass',
      '@minecraft.gameArgs',
    ],
    workdir: '${game_directory}',
    vars: {
      // змінна: перемагає останнє значення, правила якого проходять
      pack_label: [
        { value: 'My Pack' },
        { value: 'My Pack (Mac)', rules: 'allow.os.osx' },
      ],
    },
  },
});

Два способи записати правило ​

Обидва означають те саме, і читач має приймати обидва.

Короткий ​

Рядок. Саме так ви пишете в конфігурації.

ПравилоКоли проходить
allow.os.windowsНа Windows.
allow.os.linuxНа Linux.
allow.os.osxНа macOS.
allow.arch.aarch64На ARM64.
allow.arch.x86_64На 64-бітних Intel і AMD.
allow.features.java_consoleКоли цей прапорець увімкнено.
allow.os.osx@^14На macOS, версія якої збігається з шаблоном.
disallow.os.osxСкрізь, крім macOS.
allowЗавжди.
disallowНіколи.

disallow приймає кожну форму, яку приймає allow.

Довгий ​

Об'єкт. Це власна форма Mojang, яку використовують файли версій гри.

json
{ "action": "allow", "os": { "name": "osx", "arch": "aarch64" } }
json
{ "action": "disallow", "features": { "is_demo_user": true } }
ПолеЩо це
actionallow або disallow. Обов'язкове.
osБудь-які з name, arch, version. Усі названі мають збігтися.
featuresІмена прапорців, кожне true (має бути ввімкнено) або false (має бути вимкнено).

Використовуйте довгу форму, коли коротка не може це сказати, наприклад ОС і архітектуру в одному правилі. Дайте правилу os або features, не обидва.

Як вирішується набір правил ​

  1. Правило має умову (os, features або жодної). Без умови умова виконується завжди.
  2. Правило allow проходить, коли його умова виконується. Правило disallow проходить, коли вона не виконується.
  3. Набір правил проходить, коли проходять усі правила.
json
["allow.os.linux", "disallow.features.demo"]

Проходить на Linux, коли demo вимкнено.

Кожне правило, а не будь-яке

Два правила allow для двох операційних систем не проходять ніде, бо жоден комп'ютер не є обома водночас. Для «Windows або Linux» пишіть disallow.os.osx або використайте два артефакти.

Що повідомляє комп'ютер ​

ЗначенняМожливі значення
namelinux, windows, osx, freebsd
archx86_64, aarch64
versionПорожнє, якщо лаунчер його не передав.

Рантайм opys не визначає версію ОС. Правило з шаблоном версії працює, лише якщо лаунчер передає platform із нею.

Правило може назвати й архітектури x86, arm, ppc64le та riscv64, яких рантайм ніколи не повідомляє, тож таке правило виконується лише там, де лаунчер передає таку platform. x64, arm64 і arm32, як їх пишуть деякі файли версій, читаються як x86_64, aarch64 і arm.

Прапорці ​

Прапорець це іменований перемикач, типово вимкнений. Лаунчер вмикає його через features: ['java_console'], командний рядок через --feature java_console.

Відомі прапорці перелічені в розділі Змінні.