Skip to content

Multiblock Recipe ​

Multiblock recipes are used to define complex multiblock structures and produce items at their center.

Basic Structure ​

json
{
  "type": "anvilcraft:multiblock",
  "pattern": {
    "layers": [
      ["   ", " B ", "   "],
      ["BAB", "A A", "BAB"],
      ["BBB", "BBB", "BBB"]
    ],
    "symbols": {
      "A": {
        "predicate": {
          "blocks": "minecraft:iron_block"
        }
      },
      "B": {
        "predicate": {
          "blocks": "minecraft:gold_block"
        }
      }
    }
  },
  "result": {
    "id": "minecraft:diamond",
    "count": 1
  }
}

Field Description ​

type ​

Fixed value anvilcraft:multiblock, identifies this as a multiblock recipe.

pattern ​

Defines the shape and composition of the multiblock structure:

  • layers: Array of string arrays representing layers, each layer is a 2D character grid
  • symbols: Mapping between characters and block predicates

layers ​

Each layer consists of string arrays of equal length, each string represents a row, each character represents a block position:

  • Space character indicates no block is needed at that position
  • Other characters need corresponding block predicates defined in symbols

symbols ​

Mapping between characters and block predicates:

  • Key is the character used in layers
  • Value is a block predicate defining the allowed block type at that position

result ​

Output item for the recipe:

  • id: Item ID
  • count: Item count (optional, defaults to 1)

Block Predicates ​

Block predicates are used to define allowed block types at a position:

Basic Block Predicate ​

json
{
  "predicate": {
    "blocks": "minecraft:iron_block"
  }
}

Block Predicate with Properties ​

json
{
  "predicate": {
    "blocks": "minecraft:hopper",
    "properties": {
      "facing": "down"
    }
  }
}

Block Tag Predicate ​

json
{
  "predicate": {
    "tag": "minecraft:logs"
  }
}

Usage Examples ​

Simple 3x3x3 Structure ​

json
{
  "type": "anvilcraft:multiblock",
  "pattern": {
    "layers": [
      ["AAA", "AAA", "AAA"],
      ["A A", "A A", "A A"],
      ["AAA", "AAA", "AAA"]
    ],
    "symbols": {
      "A": {
        "predicate": {
          "blocks": "minecraft:iron_block"
        }
      }
    }
  },
  "result": {
    "id": "minecraft:chest",
    "count": 1
  }
}

Complex Structure Example ​

json
{
  "type": "anvilcraft:multiblock",
  "pattern": {
    "layers": [
      ["RAR", "A A", "RAR"],
      ["RGR", "G G", "RGR"],
      ["RRR", "RRR", "RRR"]
    ],
    "symbols": {
      "R": {
        "predicate": {
          "blocks": "minecraft:redstone_block"
        }
      },
      "A": {
        "predicate": {
          "blocks": "minecraft:iron_block"
        }
      },
      "G": {
        "predicate": {
          "blocks": "minecraft:gold_block"
        }
      }
    }
  },
  "result": {
    "id": "minecraft:diamond_block",
    "count": 1
  }
}

Notes ​

  1. The center point of the multiblock structure is at the exact center of the structure
  2. The structure must match completely to trigger the recipe
  3. Space characters indicate no block is needed at that position
  4. Symbol definitions must cover all characters used in layers
  5. There's no strict limit on structure size, but it's recommended to keep it reasonable for performance

Released under the CC-BY-NC-SA 4.0 License.