Skip to content

Stuff Object Reference

TL;DR

stuff/<name>.json places small decorative extras such as cobwebs and chains. The mod scans columns and makes random attempts inside them rather than baking the decoration into a part. Tags, blocks and biome gate where it happens. code review

This asset type does not exist before 6.2.2

Every key on this page arrived in 6.2.2. On 5.3.29, 6.0.3, 6.1.6 or 6.2.3 the mod does not know the stuff object at all. See Key availability. code review

column is a palette character, not a block

It is the thing that gets placed, taken as the first character of the string and resolved through the building's merged palette. The mod's own files use "column": "{" and "column": "\\", which read as nonsense until you know that. game test code review

Keys

Key code review Required Limits Meaning
column yes The palette character to place. Only the first character of the string is read, so a longer one silently keeps the first, the same rule as a palette's char
mincount / maxcount yes maxcount must be greater than mincount How many objects to place per successful attempt
attempts yes 1 or more How many placement attempts to make. 0 places nothing, silently
tags no Matched against a City Style's stuff_tags
minheight / maxheight no maxheight must be greater than minheight The height range to search within. See the defaults below
inbuilding no true restricts placement to inside buildings
seesky no true restricts placement to spots that can see the sky
biomes no A Matcher for allowed biomes
blocks no A Matcher for the block required below the spawn point
upperblocks no The same, for the block required above it
buildings no Restricts placement to specific buildings. A resource-location matcher, which does not take if_all. See Matchers

Equal mincount and maxcount crash world generation

The count is random(maxcount - mincount) + mincount, and the random call needs a positive bound. "mincount": 2, "maxcount": 2 therefore does not mean "always place 2": it throws bound must be positive during generation. Write "mincount": 2, "maxcount": 3 for that. Reversed values throw for the same reason. code review

The count is computed before any attempt runs, so a high attempts value is no protection. code review

minheight and maxheight work the same way, because the Y coordinate is random(maxheight - minheight) + minheight. code review

What minheight and maxheight default to

Leaving both unset is always safe. The risk is setting one of the pair and landing on a range of zero. code review

Key Outside a building Inside a building
minheight The chunk's ground level The bottom of the cellars, that is city ground level minus cellars * 6
maxheight minheight + 20 City ground level plus floors * 6, plus 10
code review

The inside-a-building defaults apply only when inbuilding is set and the chunk actually holds a building. code review

Example

Places the block your palette maps to 'c', inside buildings
{
  "column": "c",
  "mincount": 1,
  "maxcount": 3,
  "attempts": 10,
  "inbuilding": true,
  "blocks": { "if_any": ["minecraft:stone_bricks"] },
  "tags": ["ruined"]
}

A stuff object with "column": "I" and I mapped to minecraft:iron_block placed 5 iron blocks inside a test building. Nothing else in that pack used I. game test

See also