![]() |
VOOZH | about |
| Biomes | None |
|---|---|
| Generates in existing chunks |
No |
| Consists of |
{
"title": "Jigsaw structure",
"rows": [
{
"field": "None",
"label": "(link to Biome article, displayed as Biomes)"
},
{
"field": "No",
"label": "Generates in<br>existing chunks "
},
{
"field": "\n* <span class=\"nowrap\"><span class=\"sprite-file\" style=\"\">(link to File:BlockSprite jigsaw-block.png article, displayed as 16x16px|link=Jigsaw Block|alt=|class=pixel-image|)</span>(link to Jigsaw Block article, displayed as <span class=\"sprite-text\">Jigsaw Block</span>)</span>",
"label": "Consists of"
}
],
"invimages": [],
"images": [
"Jigsaw Block.png"
]
}
Jigsaw structures are structures that generate using jigsaw blocks.
They are used to generate 👁 Image
pillager outposts, 👁 Image
villages, 👁 Image
bastion remnants, 👁 Image
ancient cities, 👁 Image
trail ruins, and 👁 Image
trial chambers.
The jigsaw structure generation can be customized using data packs in Java Edition or add-ons in Bedrock Edition.
The generation places a number of pieces. A piece is usually a structure template, but can also be a placed feature. The pieces are organized into template pools. During generation pieces are randomly selected from a given template pool.
When a structure is generated starting from a given chunk, it generates in a number of steps, detailed below.
A jigsaw structure defines a [String][NBT Compound / JSON Object] start_pool. A piece is selected from this pool and placed at the starting position. Rotation and the starting template are chosen randomly, based on the chunk coordinates and the world seed. If the selected piece is a minecraft:empty_pool_element, the structure fails to generate.[JE only][note 1] The starting position is the 0, 0 chunk coordinate of the starting chunk. If the [String] project_start_to_heightmap[JE only]/[String] heightmap_projection[BE only] is set, the start height is based on the specified heightmap, offset by the values result of [Int][NBT Compound / JSON Object] start_height. Otherwise, [Int][NBT Compound / JSON Object] start_height is used to determine the start height.
If the structure defines a [String] start_jigsaw_name, then a jigsaw block with that name is randomly selected and then placed at the starting position. If no matching jigsaw block is found, the structure fails to generate.[note 1] If the structure has [String] start_jigsaw_name unset, the north west corner of the (unrotated) piece is placed at the starting position.
If the final starting piece position is not at least [Int] dimension_padding.bottom blocks away from the lower build limit and [Int] dimension_padding.top blocks away from the upper build limit, the structure fails to generate.[note 1]
Finally, the starting piece is put into a generation queue.
The generation queue is processed sequentially. A piece is removed from the queue when it is processed. Of the processed (parent) piece all jigsaw blocks are then used to generate a connecting piece. The jigsaw blocks are handled in order from high to low selection priority set in each jigsaw block and a random order of jigsaw blocks with equal selection priority.
The jigsaw block is referencing a "target pool". The "target pool" is used as an alias by the pool aliases referenced in [NBT List / JSON Array] pool_aliases to determine which template pool to use. If no pool alias is used then the "target pool" directly references the template pool to use.
The connecting piece is determined using that template pool in following order:
If the maximum depth (defined by [Int] size[JE only]/[Int] max_depth[BE only]) is reached, point 1 is skipped.
From the tried piece a random jigsaw block is selected, that
The piece is placed in the world such that the jigsaw blocks connect to each other. If the currently handled piece or the newly selected piece is set to terrain matching, the piece is moved vertically to align with the terrain.
The placement is then checked for validity. A piece has to:
2 * a + 1, where a = [Int] max_distance_from_center or [NBT Compound / JSON Object] max_distance_from_center.[Int] horizontal2 * a + 1, where a = [Int] max_distance_from_center or [NBT Compound / JSON Object] max_distance_from_center.[Int] verticalIf the piece can't be placed, then the placement is retried with the next piece (see #Connecting piece selection). If all pieces can't be placed than no piece is placed for this jigsaw block.
If the piece can be placed, then the newly placed piece is added to the generation queue according to the placement priority specified in the parent jigsaw block, but behind elements of equal placement priority already in the queue. The generation continues with the next jigsaw block of the parent piece.
Finally, each piece is processed, changing or removing blocks from the template.
The processing is done using the processor list specified for each piece in the template pool. Additionally, jigsaw blocks are replaced with the specified "Turns into" final state (using the minecraft:jigsaw_replacement processor in Java Edition). For pieces set to terrain matching each column of blocks is adjusted in height match the terrain (using the minecraft:gravity processor in Java Edition).
Notes:
/locate and other structures from the same structure set can take its place.
true, the bounding box of the pieces is extended to the height of the highest possible child piece (except when parent piece is generated by the [String][NBT Compound / JSON Object] start_pool).
Pool aliases are used to redirect the alias "target pool" referenced in jigsaw blocks to a (different) template pools. The redirections are determined before the generation starts, so in a single structure all references to a specific alias template pool are rewired to the same target template pool. Any alias that is not redirected by a pool alias is used directly as reference to a template pool.
All references to [String] alias are rewired to [String] target.
directA target selected from [NBT List / JSON Array] targets per structure. All references to [String] alias are rewired that target.
randomA alias group is selected from [NBT List / JSON Array] groups per structure. All pool aliases in that group are used.
random_group| Structure type | Identifier |
|---|---|
| 👁 BlockSprite jigsaw.png: Sprite image for jigsaw in Minecraft Jigsaw | jigsaw |
jigsawproject_start_to_heightmap is unset, the structure will start at the value provided. Otherwise, the value acts as an offset from the heightmap.
WORLD_SURFACE_WG, WORLD_SURFACE, OCEAN_FLOOR_WG, OCEAN_FLOOR, MOTION_BLOCKING, or MOTION_BLOCKING_NO_LEAVES.0). Padding on the top and bottom world limit. [Int]: shorthand to set the same value for [Int] bottom and [Int] top.
0), non-negative. Amount of blocks at the bottom build limit that are excluded from the outer bounding box of the structure.0), non-negative. Amount of blocks at the top build limit that are excluded from the outer bounding box of the structure.apply_waterlogging). How blocks with waterlogged block state should generate when they overlap with existing water. apply_waterlogging: waterlog block placed inside water, ignore_waterlogging: keep the waterlogged block state as is.none) The type of terrain adaptation used for the structure. none for no adaptation, beard_thin is used by pillager outposts and villages, beard_box is used by ancient cities, bury is used by strongholds, and encapsulate is used by Trial Chambers.heightmap_projection is unset, the structure will start at the value provided. Otherwise, the value acts as an offset from the heightmap. [more information needed]
world_surface or sea_floor.0). Padding on the top and bottom world limit.apply_waterlogging). How water interacts with the structure when it is generated. Can be apply_waterlogging or ignore_waterlogging.| Java Edition | |||||||
|---|---|---|---|---|---|---|---|
| 1.14 | 18w46a | Added jigsaw blocks. | |||||
| 18w47a | Added jigsaw structures in the form of pillager outpost. | ||||||
| 1.16.2 | 20w28a | Jigsaw structures can now be customized in data packs, using configured_structure_features of type village, pillager_outpost, and bastion_remnant. They have a maximum radius of 80 blocks. | |||||
| 1.19 | Deep Dark Experimental Snapshot 1 | Jigsaw structures with radius 128[verify] can now be generated using the configured_structure_features type ancient_city. | |||||
| 22w11a | Merged the structure types village, pillager_outpost and bastion_remnant into a single type 👁 BlockSprite jigsaw.png: Sprite image for jigsaw in Minecraftjigsaw . | ||||||
| Added [Int][NBT Compound / JSON Object] start_height, [String] project_start_to_heightmap and [Boolean] use_expansion_hack. | |||||||
| 22w12a | Added [Int] max_distance_from_center. | ||||||
| 22w13a | Replaced [Boolean] adapt_noise with [String] terrain_adaptation. | ||||||
| 22w17a | Added [String] start_jigsaw_name. | ||||||
| 1.20.3 | 23w42a | Added [NBT List / JSON Array] pool_aliases. | |||||
| 1.21 | 24w19a | Added [Int] dimension_padding. | |||||
| 24w20a | [Int][NBT Compound / JSON Object] dimension_padding can now also be specified separately for [Int] bottom and [Int] top padding. | ||||||
| pre1 | Added [String] liquid_settings. | ||||||
| 1.21.9 | 25w31a | [Int][NBT Compound / JSON Object] max_distance_from_center can now also be specified separately for [Int] horizontal and [Int] vertical distance. | |||||
| Bedrock Edition | |||||||
|---|---|---|---|---|---|---|---|
| 1.10.0 | beta 1.10.0.3 | Added jigsaw blocks. | |||||
| 1.21.50 Experiment | Preview 1.21.50.26 | Jigsaw structures can now be customized in add-ons, using files json. | |||||
| 1.21.80 Experiment | Preview 1.21.80.22 | Added [Int] start_height, [Int] dimension_padding, [Int] max_distance_from_center and [NBT List / JSON Array] pool_aliases. | |||||
| 1.21.90 Experiment | Preview 1.21.90.21 | Added [String] liquid_settings | |||||
| 1.21.100 Experiment | Preview 1.21.100.20 | [Int][NBT Compound / JSON Object] max_distance_from_center now parses horizontal and vertical values separately in an object while supporting horizontal only with parsing as a constant, the vertical value is now optional and defaults to having no limit. | |||||
| 1.21.120 | Preview 1.21.120.23 | Jigsaw structures can now be customized without using any experiments. | |||||