Blueprint YAML Reference
A blueprint defines a single collection: its identifier, display item, the items players need to find, and the actions that fire when the collection is completed.
Blueprints live in plugins/AstralCollections/blueprints/ (sub-folders are scanned recursively).
Minimal example
Top-level fields
Field | Type | Required | Description |
|---|---|---|---|
| String | Yes | Unique blueprint identifier. Duplicates are rejected with a warning. |
| ItemStackWrapper | Yes | Item shown in menus and exposed as |
|
| Yes | Items to discover. Map key is the entry ID. |
|
| Yes | Actions executed once the player discovers every entry. |
display
A standard ItemStackWrapper from AstralCore — the same shape used everywhere in menus. Common fields: material, name, lore, enchantments, custom-model-data, attributes, flags. See the Menu Items reference for the full schema.
entries
The entries map keys become the entry IDs (stored in the player's progress data). Values can be written in two forms:
Shorthand — a single material or namespaced key:
Expanded — a full ItemStackWrapper for items that require enchantments, NBT, custom-model-data, etc.:
completion-actions
A PaperActionList executed when the player discovers the last remaining entry. Any registered AstralCore action works here — see Actions for the full catalogue.
Actions are scheduled on the main thread immediately after the last entry is recorded. They fire once per player per collection — re-running discovery on an already-completed collection does not re-trigger them.
Validation
The blueprint loader rejects entries that fail any of these checks:
The entry value cannot be parsed as an
ItemStackWrapper.The blueprint is missing an
idfield at the top level (entries reference their parent'sid).Two blueprints share the same
id— the duplicate is logged as a warning and skipped.
Errors are logged to the server console. A bad blueprint does not prevent the rest from loading.
Hot reload
/collections reload re-reads every blueprint file from disk and rebuilds the lookup index. Players keep their progress; entries that no longer exist in any blueprint simply stop matching.
When CraftEngine is installed, AstralCollections also reloads automatically after every CraftEngineReloadEvent so custom-item references stay in sync.