shulker.lock
The lock file. Written by the CLI, committed alongside the manifest, never hand-edited.
Shulker lock file. Tool-owned, key-sorted, pretty-printed. Records the exact resolution of shulker.json; install and build read only this file.
Schema: https://shulker.sh/schema/v1/lock.json
Properties
Required properties are marked with *.
| Property | Type | Description |
|---|---|---|
lockVersion * | 1 | |
manifestSha256 * | sha256 | Hash of the resolution-relevant manifest fields (minecraft, loader, providers, packs, mods, ignore). install warns on mismatch; build and serve refuse unless forced. |
minecraft * | string | Resolved Minecraft version id, exactly as Mojang's manifest names it. min length 1 |
loader * | object | |
java * | object | |
packs * | map of pack | Keyed by manifest source string. |
mods * | map of mod | Every mod in the resolved set, direct and transitive, keyed by in-jar mod id. keys are modId |
players * | player[] | Every player referenced anywhere in the manifest, fully resolved. uuid is the identity across renames. |
No other properties are allowed.
Definitions
sha256
Type: string. pattern ^[0-9a-f]{64}$
sha512
Type: string. pattern ^[0-9a-f]{128}$
gitCommit
Type: string. pattern ^[0-9a-f]{40}$
uuid
Type: string. pattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
modId
Type: string. pattern ^[a-z][a-z0-9_-]{1,63}$
packName
Type: string. pattern ^[a-z0-9][a-z0-9._-]*$
modrinthId
Type: string. pattern ^[A-Za-z0-9]{8}$
curseforgeId
Type: integer. min 1
pack
| Property | Type | Description |
|---|---|---|
name * | packName | Manifest name or the derived default. |
ref | string | The manifest ref at resolution time. Git sources only. min length 1 |
commit | gitCommit | Resolved commit. Git sources only. |
dirSha256 | sha256 | Content hash of the pack's shulker.json and override directories in sorted path order, excluding its lock, build output, and data. Local-path sources only. |
sha256 | sha256 | Hash of the fetched manifest. Raw manifest URL sources only. |
No other properties are allowed.
mod
| Property | Type | Description |
|---|---|---|
provider * | "modrinth" | "curseforge" | |
project * | modrinthId | curseforgeId | Provider project id, typed as the provider types it. |
version * | modrinthId | curseforgeId | Provider version id (Modrinth) or file id (CurseForge). |
versionNumber * | string | Provider display string. Never parsed. min length 1 |
filename * | string | pattern ^[^/\\]+\.jar$, min length 1 |
url * | string | null | Download url. null when the author disabled third-party distribution; page is then required. format uri |
page | string | Provider file page for manual download. Present only when url is null. format uri |
sha512 * | sha512 | Cache key and install verification hash. |
side * | "client" | "server" | "both" | Effective side after any manifest override. |
requiredBy * | string[] | Mod ids (or pack names) whose jar metadata depends on this mod. Empty plus absent from manifest and packs means orphan. unique items |
aliases * | object | The same mod's project id on other providers, discovered on first download. |
No other properties are allowed.
player
| Property | Type | Description |
|---|---|---|
name * | string | pattern ^[A-Za-z0-9_]{3,16}$ |
uuid * | uuid | |
resolvedAt * | string | When this name/uuid pair was last confirmed against Mojang. format date-time |
No other properties are allowed.
