Skip to main content

Shop offer

Registry: system:shop_offers. Prices are handled on the server as Saturn costs, and the client only displays the quote; a purchase requires confirmation, and the AI cannot generate prices or charge on its own.

FieldTypeRequiredDefaultDescription
labelText componentnoEmpty componentAn enabled entry must have a non-empty name; a bare string is literal text.
itemsItemStackTemplate arrayno[]At least 1 and at most 36 entries when enabled.
costsSaturn cost arrayno[]An enabled shop offer must have at least one cost.
enabledBooleannotruefalse can be used to disable an older entry that is overridden.

Example​

data/example/system/shop_offers/torches.json
{
"label": {
"text": "Torch supplies"
},
"items": [
{
"id": "minecraft:torch",
"count": 16
}
],
"costs": [
{
"type": "saturn:item",
"items": [
"minecraft:emerald"
],
"amount": 1
}
]
}

Add it to the values of data/system/tags/system/shop_offers/default.json, or reference a custom ID / tag from the offers of the shop module. Unlike a lottery pool, an enabled shop offer cannot omit costs to become a free offer; a disabling override may contain only {"enabled": false}. When a quote expires, module permissions change or materials are insufficient, the server rejects the final purchase.