Overview
The jigsaw system consists of three main components:- Jigsaw Structures: The top-level definition that specifies starting pieces and configuration
- Jigsaw Pools: Collections of pieces that can be randomly selected
- Jigsaw Pieces: Individual building blocks with connectors that link to other pieces
Creating a Jigsaw Structure
Jigsaw structures are defined in thejigsaw-structures/ folder.
Basic Structure Configuration
Configuration Options
Starting Pieces
pieces (required)
Array of starting pieces. Iris randomly selects one piece to begin structure generation, then connects additional pieces using the pools defined in connectors.
Max Depth
maxDepth (default: 9)
The maximum number of pieces that can extend from the center piece. Higher values create larger structures but may impact performance.
Termination
terminate (default: true)
Automatically caps off connector endpoints with terminal pieces (pieces with only one connector).
terminatePool
Specify a custom pool for terminating pieces instead of searching all valid pools.
Y Position Control
overrideYRange
Override the default heightmap placement with a specific Y range.
lockY (default: -1)
Force all pieces to generate at a specific Y coordinate.
Rotation
disableInitialRotation (default: false)
Prevents the starting piece from rotating randomly.
Parallax Optimization
useMaxPieceSizeForParallaxRadius (default: false)
Uses maximum piece dimensions instead of average for parallax calculations. Enable this if you see structure cut-offs or broken terrain.
Keep this disabled unless you experience visual issues. It’s more conservative but less performant.
Force Placement
forcePlace (default: false)
Forces the entire structure to place, overriding collision detection.
Structure Key
structureKey
Minecraft structure key for treasure map integration.
Using Datapack Structures
datapackStructures
Use vanilla Minecraft datapack structures instead of Iris pieces. When defined, all other settings are ignored.
Jigsaw Pools
Pools are collections of pieces stored injigsaw-pools/.
Jigsaw Pieces
Pieces are the building blocks, stored injigsaw-pieces/.
Basic Piece
Connector Properties
name (required)
Identifier for organization. Multiple connectors can share the same name.
targetName (default: "*")
Target specific connector names in other pieces. Use "*" to match any connector.
position (required)
Relative coordinates within the piece where the connector is located.
direction (required)
The direction the connector faces. Pieces attach in this direction.
Options:
UP_POSITIVE_YDOWN_NEGATIVE_YNORTH_NEGATIVE_ZSOUTH_POSITIVE_ZEAST_POSITIVE_XWEST_NEGATIVE_X
pools (required)
Array of pools to pull pieces from for this connector.
rotateConnector (default: false)
Allows the placed piece to rotate on the connector.
innerConnector (default: false)
Allows pieces to collide with the parent piece’s bounding box. Useful for decorations like lamp posts on roads.
lockY (default: false)
Prevents the connector’s Y position from adjusting.
Entity Spawning
spawnEntity
Spawn entities at connector positions.
keepEntity (default: false)
Prevents spawned entities from despawning.
Placement Options
placementOptions
Configure object placement behavior. Only define this when needed as it impacts performance.
Advanced Examples
Village with Roads
Structure:Dungeon System
Performance Tips
- Keep maxDepth reasonable: Values over 12 can significantly slow generation
- Limit piece complexity: Fewer connectors per piece = faster generation
- Use placement options sparingly: Only set
placementOptionswhen absolutely necessary - Optimize pool sizes: Smaller pools (3-5 pieces) perform better than large ones
- Disable parallax optimization: Keep
useMaxPieceSizeForParallaxRadiusoff unless needed
Troubleshooting
Structure pieces are cut off
EnableuseMaxPieceSizeForParallaxRadius:
Structures won’t connect properly
- Verify connector positions match object dimensions
- Check that connector directions are opposite (NORTH connects to SOUTH)
- Ensure
targetNamematches between connectors or use"*"
Structures float or sink into terrain
- Use
overrideYRangefor consistent placement - Adjust
placementOptions.mode - Consider using
lockYfor underground structures
Performance issues
- Reduce
maxDepth - Simplify connector networks
- Remove unnecessary
placementOptions - Use smaller pool sizes