Modpack Authors
6 TOP-LEVEL ITEMSRecipes and Structures
At the moment, the four core data types most relevant to Croparia IF modpack authors are:
croparia:infusorcroparia:ritualcroparia:soakcroparia:ritual_structure
This page explains how these recipes and structures are written. If you need to generate data in bulk, continue with the Runtime Data Generation System and Create a Data Generator.
Shared Input and Output Forms
These recipe types heavily reuse ItemInput, ItemOutput, BlockInput, and BlockOutput. In most cases they support both a shorthand form and an object form.
Item Input ItemInput
Shorthand:
- Item ID string:
"minecraft:comparator" - Tag string:
"#croparia:seed_ingredient"
Object form:
{
"id": "minecraft:comparator",
"amount": 1,
"components": {}
}id: stringmatches one specific item IDtag: stringmatches an item tagcomponents: Map<String, T>optional item componentsamount: numberoptional item count, defaults to 1
id and tag cannot be specified at the same time.
Item Output ItemOutput
Shorthand:
- Item ID string:
"croparia:croparia"
Object form:
{
"id": "croparia:croparia",
"amount": 1,
"components": {}
}id: stringmatches one specific item IDcomponents: Map<String, T>optional item componentsamount: numberoptional item count, defaults to 1
Block Input BlockInput
Shorthand:
- Block ID string:
"minecraft:sculk" - Tag string:
"#croparia:ritual_stands"
Object form:
{
"id": "croparia:block_crop_coal",
"properties": {
"age": "7"
}
}id: stringmatches one specific block IDtag: stringmatches a block tagproperties: Map<String, string>optional state restrictions
id and tag cannot be specified at the same time.
Block Output BlockOutput
Shorthand:
- Block ID string:
"minecraft:end_stone"
Object form:
{
"id": "minecraft:oak_log",
"properties": {
"axis": "y"
}
}id: stringmatches one specific block IDproperties: Map<String, string>optional output block states
Infusor Recipe croparia:infusor
element: stringrequires the Infusor to currently contain that element and cannot beemptyingredient: [ItemInput](#item-input)the item input to drop onto or place into the Infusorresult: [ItemOutput](#item-output)the item output produced on success
Example:
{
"type": "croparia:infusor",
"element": "elemental",
"ingredient": {
"tag": "croparia:seed_ingredient",
"amount": 4
},
"result": {
"id": "croparia:croparia",
"amount": 1
}
}Ritual Recipe croparia:ritual
ritual: stringrequired tier or tag of the center Ritual Standblock: [BlockInput](#block-input)input block that must be placed at the$positions in the structureingredient: [ItemInput](#item-input)input item to drop onto or place into the Ritual Standresult: [ItemOutput](#item-output)output item produced when the recipe succeeds
Minimal example:
{
"type": "croparia:ritual",
"ritual": "#croparia:ritual_stands",
"ingredient": "minecraft:comparator",
"block": "minecraft:sculk",
"result": "minecraft:sculk_sensor"
}Two details matter here:
ritualdoes not describe the whole structure; it only describes the center Ritual Stand itself- The actual multiblock shape is defined by the Ritual Structure
In other words, a RitualRecipe can only work when the corresponding RitualStructure also validates successfully.
Elemental Soak Recipe croparia:soak
element: stringcurrent element of the Infusor above, and it cannot beemptyprobability: [number](./generator/placeholder.md#number)success chance of this soak attempt, as a decimal from 0 to 1input: [BlockInput](#block-input)input block being soakedoutput: [BlockOutput](#block-output)output block to turn into on success
Example:
{
"type": "croparia:soak",
"element": "air",
"input": "minecraft:stone",
"output": "minecraft:end_stone",
"probability": 1.0
}The real number of attempts is also affected by the soakAttempts configuration entry, so you may want to tune it together with Configuration and Commands.
Ritual Structure croparia:ritual_structure
RitualStructure is not a recipe. It is the multiblock structure definition used by Ritual Stands. Its fields are:
ritual: stringindicates which center Ritual Stand type this structure belongs tokeys: Map<String, BlockInput>defines what each character inpatternmeanspattern: string[][]a 3D character structure that must contain at least one*and one$
Reserved characters in keys cannot be mapped directly:
*: the center Ritual Stand position, which must match the currentritual$: input block positions; when the ritual runs, those blocks are checked and destroyed on success.: means air only: means any block
pattern is structured as follows:
- Outermost layer: list of layers from bottom to top
- Inside each layer: a two-dimensional row-based character pattern
- Each character: the block requirement at that position
Built-in example:
{
"type": "croparia:ritual_structure",
"ritual": "croparia:ritual_stand",
"keys": {
"A": "minecraft:andesite",
"D": "minecraft:diorite",
"I": {
"id": "croparia:block_crop_coal",
"properties": {
"age": "7"
}
}
},
"pattern": [
[
" ",
" $ ",
" $ $ ",
" $ ",
" "
],
[
" D D ",
"D I I D",
" G * G ",
"D I I D",
" D D "
]
]
}