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

45 lines
1.8 KiB
Markdown

# ShaCraft manifest v1
Каждая игровая сборка описывается одним JSON-документом. API передаёт его в
Ed25519-конверте: `payload` — base64 от UTF-8 JSON, `signature` — подпись
точно этих байтов. Лаунчер принимает документ только после проверки
встроенного публичного релизного ключа и затем валидирует эту схему до начала
загрузки.
```json
{
"schemaVersion": 1,
"keyId": "2026-09-06",
"payload": "eyJkaXNwbGF5TmFtZSI6Ii4uLiJ9",
"signature": "base64-ed25519-signature"
}
```
После проверки и декодирования `payload` имеет следующий вид:
```json
{
"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`, а также относительные пути без `..`, обратных слешей и
пустых сегментов.