Skip to main content
Represents an Iris object placer. It places objects (schematics/structures) in the world with configurable rotation, placement modes, editing, and conditions.

Core Properties

place
array<string>
required
List of objects to placeConstraints: Minimum 1 item
chance
number
default:"1"
The chance for this to place in a chunk. If you need multiple per chunk, set this to 1 and use density.Constraints: 0-1
density
integer
default:"1"
If the chance check passes, place this many in a single chunkConstraints: Minimum 1
densityStyle
IrisStyledRange
If the chance check passes, and you specify this, it picks a number in the range based on noise, and ‘density’ is ignored.

Placement Mode

mode
ObjectPlaceMode
default:"CENTER_HEIGHT"
The placement mode. Options include:
  • CENTER_HEIGHT: Place based on center height
  • CENTER_HEIGHT_RIGID: Rigid center height placement
  • FAST_MAX_HEIGHT: Fast max height placement
  • PAINT: Paint mode for surface placement
underwater
boolean
default:"false"
If set to true, objects will place on the terrain height, ignoring the water surface.
onwater
boolean
default:"false"
If set to true, objects will place on the fluid height level. Such as boats.
fromBottom
boolean
default:"false"
If set to true, this object will get placed from the bottom of the world up
bottom
boolean
default:"false"
If set to true, this object will place from the ground up instead of height checks when not y locked to the surface. This is not compatible with X and Z axis rotations (it may look off)
carvingSupport
CarvingMode
default:"SURFACE_ONLY"
If set to true, objects will place in carvings (such as underground) or under an overhang.Options: SURFACE_ONLY, CARVING_ONLY, BOTH
heightmap
IrisNoiseGenerator
If this is defined, this object won’t place on the terrain heightmap, but instead on this virtual heightmap

Rotation & Translation

rotation
IrisObjectRotation
default:"{}"
Rotate this objects placement
rotateTowardsSlope
boolean
default:"false"
Set to true to add the rotation of the direction of the slope of the terrain (wherever the slope is going down) to the y-axis rotation of the object. Rounded to 90 degrees. Adds the min rotation of the y axis as well (to still allow you to rotate objects nicely). Discards max and interval on yaxis
translate
IrisObjectTranslate
default:"{}"
Translate this object’s placement
translateCenter
boolean
default:"false"
If the place mode is set to CENTER_HEIGHT_RIGID and you have an X/Z translation, Turning on translate center will also translate the center height check.
scale
IrisObjectScale
default:"{}"
Scale Objects

Placement Conditions

clamp
IrisObjectLimit
default:"{}"
Limit the max height or min height of placement.
slopeCondition
IrisSlopeClip
default:"{}"
The slope at which this object can be placed. Range from 0 to 10 by default. Calculated from a 3-block radius from the center of the object placement.

Terrain Modification

bore
boolean
default:"false"
If set to true, air will be placed before the schematic places.
boreExtendMaxY
integer
default:"0"
When bore is enabled, expand max-y of the cuboid it removesConstraints: 0-64
boreExtendMinY
integer
default:"0"
When bore is enabled, lower min-y of the cuboid it removesConstraints: -1 to 64
smartBore
boolean
default:"false"
If set to true, Iris will try to fill the insides of ‘rooms’ and ‘pockets’ where air should fit based off of raytrace checks. This prevents a village house placing in an area where a tree already exists, and instead replaces the parts of the tree where the interior of the structure is. This operation does not affect warmed-up generation speed however it does slow down loading objects.
meld
boolean
default:"false"
If set to true, this object will only place parts of itself where blocks already exist. Warning: Melding is very performance intensive!
waterloggable
boolean
default:"false"
If set to true, Blocks placed underwater that could be waterlogged are waterlogged.

Warping & Effects

warp
IrisGeneratorStyle
default:"FLAT"
Use a generator to warp the field of coordinates. Using simplex for example would make a square placement warp like a flag
snow
number
default:"0"
The maximum layer level of a snow filter overtop of this placement. Set to 0 to disable. Max of 1.Constraints: 0-1

Editing & Replacement

edit
array<IrisObjectReplace>
default:"[]"
Find and replace blocks
markers
array<IrisObjectMarker>
default:"[]"
Add markers to blocks in this object

Stilting

stiltSettings
IrisStiltSettings
When stilting is enabled, this object will define various properties related to it.

Loot Tables

loot
array<IrisObjectLoot>
default:"[]"
The loot tables to apply to these objects
vanillaLoot
array<IrisObjectVanillaLoot>
default:"[]"
The vanilla loot tables to apply to these objects
overrideGlobalLoot
boolean
default:"false"
Whether the given loot tables override any and all other loot tables available in the dimension, region or biome.

Trees

trees
array<IrisTree>
default:"[]"
This object / these objects override the following trees when they grow…

Collision Control

allowedCollisions
array<string>
default:"[]"
List of objects this object is allowed to collide with
forbiddenCollisions
array<string>
default:"[]"
List of objects this object is forbidden to collide with
forcePlace
boolean
default:"false"
Ignore any placement restrictions for this object

Misc

isDolphinTarget
boolean
default:"false"
Whether or not this object can be targeted by a dolphin.

JSON Example

{
  "place": [
    "village/house1",
    "village/house2"
  ],
  "chance": 0.05,
  "density": 1,
  "mode": "CENTER_HEIGHT",
  "rotation": {
    "yAxis": {
      "min": 0,
      "max": 270,
      "interval": 90,
      "enabled": true
    },
    "xAxis": {
      "enabled": false
    },
    "zAxis": {
      "enabled": false
    }
  },
  "translate": {
    "x": 0,
    "y": -1,
    "z": 0
  },
  "clamp": {
    "minimumHeight": 62,
    "maximumHeight": 128
  },
  "slopeCondition": {
    "minimumSlope": 0,
    "maximumSlope": 2
  },
  "bore": true,
  "smartBore": true,
  "waterloggable": true,
  "loot": [
    {
      "name": "village/house-chest",
      "weight": 1,
      "filter": ["chest"]
    }
  ]
}

Usage Notes

Placement Density

For sparse placement (like villages), use low chance values:
{"chance": 0.01, "density": 1}
For dense placement (like flowers), use high chance with higher density:
{"chance": 1.0, "density": 5}

Smart Bore

Use smartBore for structures that need clean interiors:
{
  "bore": true,
  "smartBore": true,
  "boreExtendMinY": 1
}

Slope-Based Placement

Place objects only on flat terrain:
{
  "slopeCondition": {
    "minimumSlope": 0,
    "maximumSlope": 1
  }
}

Build docs developers (and LLMs) love