Recipe Type: Multiblock - Mithion/Mana-And-Artifice GitHub Wiki
Sample Recipe
{
"type": "mna:multiblock",
"structure": "mna:multiblock/wellspring_capture",
"replacements": [
{
"data": [
{
"offset": {
"X": 4,
"Y": 0,
"Z": 5
},
"state": {
"Properties": {
"surface": "3",
"facing": "south"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_straight"
}
},
{
"offset": {
"X": 4,
"Y": 0,
"Z": 3
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "south"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
},
{
"offset": {
"X": 5,
"Y": 0,
"Z": 3
},
"state": {
"Properties": {
"waterlogged": "false",
"type": "bottom"
},
"Name": "mna:decoration/arcane_sandstone_slab"
}
},
{
"offset": {
"X": 3,
"Y": 0,
"Z": 3
},
"state": {
"Name": "mna:decoration/chimerite_arcane_sandstone_pillar"
}
},
{
"offset": {
"X": 6,
"Y": 0,
"Z": 3
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "south"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
},
{
"offset": {
"X": 6,
"Y": 0,
"Z": 7
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "north"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
},
{
"offset": {
"X": 5,
"Y": 0,
"Z": 7
},
"state": {
"Properties": {
"waterlogged": "false",
"type": "bottom"
},
"Name": "mna:decoration/arcane_sandstone_slab"
}
},
{
"offset": {
"X": 7,
"Y": 0,
"Z": 7
},
"state": {
"Name": "mna:decoration/chimerite_arcane_sandstone_pillar"
}
},
{
"offset": {
"X": 4,
"Y": 0,
"Z": 7
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "north"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
},
{
"offset": {
"X": 4,
"Y": 0,
"Z": 4
},
"state": {
"Properties": {
"surface": "1",
"facing": "west"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_corner"
}
},
{
"offset": {
"X": 4,
"Y": 0,
"Z": 6
},
"state": {
"Properties": {
"surface": "1",
"facing": "south"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_corner"
}
},
{
"offset": {
"X": 6,
"Y": 0,
"Z": 4
},
"state": {
"Properties": {
"surface": "1",
"facing": "north"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_corner"
}
},
{
"offset": {
"X": 3,
"Y": 0,
"Z": 5
},
"state": {
"Properties": {
"waterlogged": "false",
"type": "bottom"
},
"Name": "mna:decoration/arcane_sandstone_slab"
}
},
{
"offset": {
"X": 7,
"Y": 0,
"Z": 4
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "west"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
},
{
"offset": {
"X": 5,
"Y": 0,
"Z": 4
},
"state": {
"Properties": {
"surface": "3",
"facing": "west"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_straight"
}
},
{
"offset": {
"X": 6,
"Y": 0,
"Z": 5
},
"state": {
"Properties": {
"surface": "3",
"facing": "north"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_straight"
}
},
{
"offset": {
"X": 3,
"Y": 0,
"Z": 6
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "east"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
},
{
"offset": {
"X": 7,
"Y": 0,
"Z": 5
},
"state": {
"Properties": {
"waterlogged": "false",
"type": "bottom"
},
"Name": "mna:decoration/arcane_sandstone_slab"
}
},
{
"offset": {
"X": 5,
"Y": 0,
"Z": 5
},
"state": {
"Name": "mna:decoration/chimerite_arcane_sandstone_chiseled"
}
},
{
"offset": {
"X": 6,
"Y": 0,
"Z": 6
},
"state": {
"Properties": {
"surface": "1",
"facing": "east"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_corner"
}
},
{
"offset": {
"X": 5,
"Y": 0,
"Z": 6
},
"state": {
"Properties": {
"surface": "3",
"facing": "west"
},
"Name": "mna:decoration/chimerite_arcane_sandstone_straight"
}
},
{
"offset": {
"X": 3,
"Y": 0,
"Z": 7
},
"state": {
"Name": "mna:decoration/chimerite_arcane_sandstone_pillar"
}
},
{
"offset": {
"X": 7,
"Y": 0,
"Z": 6
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "west"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
},
{
"offset": {
"X": 7,
"Y": 0,
"Z": 3
},
"state": {
"Name": "mna:decoration/chimerite_arcane_sandstone_pillar"
}
},
{
"offset": {
"X": 3,
"Y": 0,
"Z": 4
},
"state": {
"Properties": {
"half": "bottom",
"waterlogged": "false",
"shape": "straight",
"facing": "east"
},
"Name": "mna:decoration/arcane_sandstone_stairs"
}
}
],
"id": "sandstone"
}
],
"symmetrical": true,
"matchers": [
{
"block": "mna:refraction_lens_arcane",
"matcher": "mna:refraction_lenses"
},
{
"block": "mna:refraction_lens_earth",
"matcher": "mna:refraction_lenses"
},
{
"block": "mna:refraction_lens_fire",
"matcher": "mna:refraction_lenses"
},
{
"block": "mna:refraction_lens_wind",
"matcher": "mna:refraction_lenses"
},
{
"block": "mna:refraction_lens_water",
"matcher": "mna:refraction_lenses"
},
{
"block": "mna:refraction_lens_ender",
"matcher": "mna:refraction_lenses"
},
{
"block": "mna:decoration/chimerite_arcane_stone_straight",
"matcher": "mna:stateless"
},
{
"block": "mna:decoration/chimerite_arcane_stone_corner",
"matcher": "mna:stateless"
},
{
"block": "mna:decoration/arcane_stone_stairs",
"matcher": "mna:stairs"
},
{
"block": "mna:decoration/chimerite_arcane_sandstone_straight",
"matcher": "mna:stateless"
},
{
"block": "mna:decoration/chimerite_arcane_sandstone_corner",
"matcher": "mna:stateless"
},
{
"block": "mna:decoration/arcane_sandstone_stairs",
"matcher": "mna:stairs"
},
{
"block": "mna:wellspring_pillar",
"matcher": "mna:stateless"
},
{
"block": "mna:filler_block",
"matcher": "mna:stateless"
}
]
}
Supported Properties
- type: Must be "mna:multiblock"
- structure: The NBT file to use as the template.
- symmetrical: Optional. If the structure is symmetrical or not. Used to optimize checking. Defaults to false.
- matchers: Optional. Block types to bind to specific state matchers.
- replacements: Optional. Valid block replacements at each coordinate in the structure.
Available Matchers
All matchers require the "block" property, which is the current block ID in the structure that is being analyzed, and the "matcher" property, which is the matcher to use. If not specified, will default to "mna:exact".
- mna:exact: The block must exactly match, including all properties.
- mna:stairs: A preset for matching stairs, including all blockstate properties.
- mna:stateless: A preset for matching only the block type, ignoring state properties.
- mna:chalk: A preset for matching wizard chalk blocks.
- mna:refraction_lenses: A preset for matching refraction lenses in wellspring capture.
- mna:pedestals: A preset for matching pedestals.
Generating Variants
The replacements array may seem daunting, but M&A has a utility to generate that for you. To use it, you must be in a dev environment, as the command is not registered outside of one. To use it:
- Build your baseline structure
- Save the structure as an NBT, and include it into the game (if a structure block can spawn it, you did it right.)
- Edit the structure as you please
- Save the edited structure as a different NBT, and include it into the game
- Run /structurediff <path_to_first_NBT> <path_to_second_NBT>
- The structure paths are the same values you would use for a structure block to spawn it in
- M&A will analyze the difference between the two structures and output the "replacements" value to the console.
This is a relatively simple analysis that assumes you are swapping certain blocks out, adding new ones, or removing some. It may not be perfect. Be sure to test.