Skip to content

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 *.

PropertyTypeDescription
lockVersion *1
manifestSha256 *sha256Hash of the resolution-relevant manifest fields (minecraft, loader, providers, packs, mods, ignore). install warns on mismatch; build and serve refuse unless forced.
minecraft *stringResolved Minecraft version id, exactly as Mojang's manifest names it.
min length 1
loader *object
java *object
packs *map of packKeyed by manifest source string.
mods *map of modEvery 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

PropertyTypeDescription
name *packNameManifest name or the derived default.
refstringThe manifest ref at resolution time. Git sources only.
min length 1
commitgitCommitResolved commit. Git sources only.
dirSha256sha256Content 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.
sha256sha256Hash of the fetched manifest. Raw manifest URL sources only.

No other properties are allowed.

mod

PropertyTypeDescription
provider *"modrinth" | "curseforge"
project *modrinthId | curseforgeIdProvider project id, typed as the provider types it.
version *modrinthId | curseforgeIdProvider version id (Modrinth) or file id (CurseForge).
versionNumber *stringProvider display string. Never parsed.
min length 1
filename *stringpattern ^[^/\\]+\.jar$, min length 1
url *string | nullDownload url. null when the author disabled third-party distribution; page is then required.
format uri
pagestringProvider file page for manual download. Present only when url is null.
format uri
sha512 *sha512Cache 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 *objectThe same mod's project id on other providers, discovered on first download.

No other properties are allowed.

player

PropertyTypeDescription
name *stringpattern ^[A-Za-z0-9_]{3,16}$
uuid *uuid
resolvedAt *stringWhen this name/uuid pair was last confirmed against Mojang.
format date-time

No other properties are allowed.