Processor list

Processor lists are lists of processors, used to modify structures generated by Jigsaws. Processor lists can be defined within a data pack in the path. They are then used in template pools.

JSON format

 * The root tag.
 * : A list of processors to apply.

Each processor is defined as a JSON compound. All processors have the  key, which is required. Some others define extra properties.
 * The root tag.
 * : The processor type to use.

minecraft:blackstone_replace
Replaces various stone-related blocks with their Blackstone equivalents. Things made of Cobblestone or Stone become Blackstone, while blocks made of Stone Bricks or Mossy Stone Bricks become Polished Blackstone. Iron Bars are replaced with Chains. Used on Ruined Portals that generate in the Nether.

Has no additional properties.

minecraft:block_age
Replaces various blocks made of Stone Bricks with their mossy or cracked equivalents. Also replaces obsidian with crying obsidian. Used to give Ruined Portals a decayed appearance.

Additional properties:
 * : Must be between 0.0 or 1.0. Each block affected by this processor generates a number between 0.0 and 1.0; if this value is greater than the threshold value, it will be replaced. Slabs and walls use  as their threshold value, but stairs and full blocks always use 0.5, and obsidian always uses 0.15.

minecraft:block_ignore
Causes a structure to ignore certain blocks within the structure, leaving them alone when generating the world. Used by underwater structures to ignore water, underground structures to ignore air, and all others to ignore Structure Void.

Additional properties:
 * : A list of blocks to ignore.
 * : Root tag of the block.
 * : The namespaced id of the block to use.
 * : The block states.
 * : A block state key and its value.

minecraft:block_rot
Causes a structure to not generate some of its blocks, letting them remain as the world originally generated. Used by various structures to give them a crumbling or decaying look.

Additional properties:
 * : Must be between 0.0 and 1.0. Each block in the structure generates an integrity value. If that value is less than this, the block doesn't generate.

minecraft:gravity
Makes structures conform to the generated surface. Internally used for the terrain-matching option on a structure pool, but not used otherwise.

Additional properties:
 * : The heightmap to use. Can be,  ,  , or  . Default is.
 * : Offset of how far above or below the resulting surface the structure should be generated. Default is 0, while terrain-matching uses -1, which causes the structure to be embedded in the ground.

minecraft:lava_submerged_block
Used on Ruined Portals, but doesn't appear to do anything.

No additional properties.

minecraft:nop
Does nothing. By replacing a vanilla processor list with a nop, a processor list can be disabled.

No additional properties.

minecraft:protected_blocks
Adds a block tag that this structure is not allowed to replace, leaving them the same.

Additional properties:
 * : The namespaced id of the block tag to use. Default is.

minecraft:rules
A list of rules that allow one block to be replaced with another in certain conditions.

Additional properties:
 * : The rules to apply.
 * : Root tag of a single rule.
 * (optional): The position rule to apply to the block. Defaults to.
 * : The rule to apply to the block that is placed.
 * : The rule to apply to the block before the structure is generated
 * : The block that is placed if all conditions are met.
 * : ID of the block
 * : Block states
 * : A block state key and its value
 * (optional): The NBT data of the block placed if all conditions are met . Unused in vanilla.
 * (optional): The NBT data of the block placed if all conditions are met . Unused in vanilla.

Rules
While the names in  refer to predicates, they are differerent system from Predicates, as they apply to blocks instead of entities.

Position rule predicates have the same JSON format, but they have different types. They can only be used on  and not any other type.

JSON format:
 * : The root tag.
 * : The rule type. Valid types below.

Like with processor lists, different rule types can add additional properties.

minecraft:always_true
Always succeeds. Used if the specific predicate doesn't matter, allowing the block to generate as long as the other predicates are true.

No additional properties.

minecraft:block_match
Succeeds if the block matches.

Additional properties:
 * : The block to check for.
 * : Namespaced ID of the block.

minecraft:block_state_match
Succeeds if the block state matches.

Additional properties:
 * : The block state to check for.
 * : Namespaced ID of the block.
 * : Block states.
 * : A block state key and its value.

minecraft:tag_match
Succeeds if the block is part of the checked block tag.

Additional properties:
 * : The block tag to check.

minecraft:random_block_match
Identical to, but with an additional probability field. Each block in the structure generates a number between 0.0 and 1.0. If the generated number is greater than the probability, the predicate will fail even if the blocks match.

Additional properties:
 * : The probability to use.
 * : The block to check for.
 * : Namespaced ID of the block.

minecraft:random_block_state_match
Identical to, but with the probability system described in.

Additional properties:
 * : The probability to use.
 * : The block state to check for.
 * : Namespaced ID of the block.
 * : Block states.
 * : A block state key and its value.

minecraft:always_true
Always succeeds. Used if the specific predicate doesn't matter, allowing the block to generate as long as the other predicates are true.

No additional properties.

minecraft:linear_pos
Unused.


 * : Must be between 0.0 and 1.0.
 * : Must be between 0.0 and 1.0, and be larger than.
 * : Must be larger than.
 * : Must be larger than.

minecraft:axis_aligned_linear_pos
Used on bastion remnant ramparts.


 * : Must be between 0.0 and 1.0.
 * : Must be between 0.0 and 1.0, and be larger than.
 * : Must be larger than.
 * : Can be,  , or.
 * : Can be,  , or.