A complete reference for writing summoning_altar:summoning_ritual recipes — every field, how the ritual actually plays out, and five worked examples covering the different features.
data/<namespace>/recipes/<recipe_name>.json
The recipe's ID becomes <namespace>:<recipe_name>. Every file starts with:
{
"type": "summoning_altar:summoning_ritual"
}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
type |
string | ✅ | — | Must be "summoning_altar:summoning_ritual" |
catalyst |
Ingredient | ✅ | — | The item that triggers the ritual |
item_inputs |
array of IngredientStack | ❌ | [] |
Items that must already be sitting in the altar |
item_outputs |
array of ItemOutput | ❌ | [] |
Item stacks spawned on completion |
entity_outputs |
array of EntityOutput | ❌ | [] |
Entities spawned on completion |
events |
array of RitualEvent | ❌ | [] |
Commands run at ritual start or completion |
recipe_time |
int (ticks) | ❌ | 100 |
How long the ritual takes once triggered (20 ticks = 1 second) |
requirements.block_below |
string | ❌ | null |
Block resource ID required directly under the altar |
requirements.in_structure |
string | ❌ | null |
Structure resource ID the altar must be inside |
day_time |
enum | ❌ | "ANY" |
"ANY", "DAY", or "NIGHT" |
weather |
enum | ❌ | "ANY" |
"ANY", "CLEAR", "RAIN", or "THUNDER" |
catalystA standard Minecraft Ingredient — the item that, when right-clicked onto the altar, attempts to trigger the ritual. Exactly 1 is consumed per trigger, no matter how large the held stack is.
"catalyst": { "item": "minecraft:diamond" }
Tags work too:
"catalyst": { "tag": "forge:gems/diamond" }
An item can be the catalyst for one recipe and a plain input ingredient for a completely different recipe — the altar only treats a held item as "the catalyst" if doing so would actually complete a ritual right now (every input present, every requirement met). Otherwise, right-clicking with it inserts it as a normal ingredient instead.
item_inputsItems that must already be in the altar before the catalyst can trigger anything. Each entry is an IngredientStack — an Ingredient plus an optional count (defaults to 1).
"item_inputs": [
{ "item": "minecraft:bone", "count": 3 },
{ "tag": "forge:ingots/iron", "count": 2 }
]