Files
shacraft-launcher/docs/manifest-v1.md

1.8 KiB

ShaCraft manifest v1

Каждая игровая сборка описывается одним JSON-документом. API передаёт его в Ed25519-конверте: payload — base64 от UTF-8 JSON, signature — подпись точно этих байтов. Лаунчер принимает документ только после проверки встроенного публичного релизного ключа и затем валидирует эту схему до начала загрузки.

{
  "schemaVersion": 1,
  "keyId": "2026-09-06",
  "payload": "eyJkaXNwbGF5TmFtZSI6Ii4uLiJ9",
  "signature": "base64-ed25519-signature"
}

После проверки и декодирования payload имеет следующий вид:

{
  "schemaVersion": 1,
  "id": "aeronautics",
  "displayName": "All of Create Aeronautics",
  "minecraft": {
    "version": "1.21.1",
    "loader": { "kind": "neoforge", "version": "21.1.248" },
    "javaMajor": 21
  },
  "files": [{
    "path": "mods/example.jar",
    "url": "https://cdn.shacraft.ru/aeronautics/example.jar",
    "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
    "size": 42,
    "policy": "managed"
  }]
}

managed — файл контролирует лаунчер: при несовпадении SHA-256 он заменяется. seed — файл создаётся только при первом запуске и затем сохраняет изменения игрока. В manifest v1 допускаются только HTTPS-адреса на shacraft.ru и cdn.shacraft.ru, а также относительные пути без .., обратных слешей и пустых сегментов.