Skip to content

Nether Jigsaw Structure

finnsetchell edited this page Aug 15, 2026 · 2 revisions

Nether jigsaw structures

moogs_structures:moogs_structures_generic_nether_jigsaw_structure is a second structure type for the nether. It finds a place to sit by scanning the terrain column rather than using a heightmap, which is what the nether needs given it has floor, ceiling and floating ledges rather than one surface.

For a worked example see Nether Structure. This page is the field reference.

Minimal example

From MNS2's mega fortress, pinned at a fixed height:

{
  "type": "moogs_structures:moogs_structures_generic_nether_jigsaw_structure",
  "start_pool": "mns:mega_fortress/start/start_pool",
  "size": 128,
  "max_distance_from_center": 128,
  "biomes": "#mns:has_structure/nether_biomes",
  "land_search_direction": "FIXED_HEIGHT",
  "step": "surface_structures",
  "terrain_adaptation": "none",
  "start_height": { "absolute": 19 }
}

Fields

Shared with the regular jigsaw structure:

Field Type Required Default Notes
start_pool pool yes
size int yes 0 to 128. Branching depth, not a piece count. See below.
start_height height provider yes Meaning depends on land_search_direction.
y_allowance object no min_y_allowed and max_y_allowed, both optional ints.
cannot_spawn_in_liquid bool no false
valid_biome_radius_check int no 1 to 100.
max_distance_from_center int no 80 1 to 128. Horizontal half-width the structure may sprawl.
pools_that_ignore_boundaries list no [] See gotchas.
use_bounding_box_hack bool no false Reserves vertical room for tall follow-on pieces after short ones.
liquid_settings string no vanilla default

Nether only:

Field Type Required Default Notes
land_search_direction string yes HIGHEST_LAND, LOWEST_LAND or FIXED_HEIGHT. Uppercase.
ledge_offset_y int no 0 0 to 100. Lifts the structure off the ledge it landed on. Cannot be negative.
enhanced_terrain_adaptation object no See Enhanced terrain adaptation.

land_search_direction

Required, and the values are uppercase. Lowercase is rejected at load.

Value Behaviour What start_height means
HIGHEST_LAND Scans down from well below the nether roof for the first solid block with air above it. An offset added to the block it found.
LOWEST_LAND Scans up from just above sea level for the first solid block with clear space above. An offset added to the block it found.
FIXED_HEIGHT No scan. Places the structure at the height you give. The absolute world Y of the start piece's lowest layer.

FIXED_HEIGHT is for structures that must sit at a known Y regardless of terrain, like the mega fortress above at Y 19.

Basalt and delta suppression

Nether basalt columns and basalt delta blobs will happily generate inside your structure. Two structure tags stop that:

data/moogs_structures/tags/worldgen/structure/no_basalt.json
data/moogs_structures/tags/worldgen/structure/no_delta.json

Written into MSL's namespace, listing your own structure ids:

{ "values": ["mns:mega_fortress", "mns:nether_tower"] }

Suppression applies within 4 blocks of each individual piece, not the whole structure bounding box, so the empty space between distant pieces still gets normal nether features.

The two behave slightly differently. no_basalt blocks each column individually. no_delta cancels a whole delta if its origin lands near a piece, so a delta starting just outside can still spill in.

These work on any structure, not only MSL's types.

Gotchas

  • Four fields from the regular jigsaw structure do nothing here. project_start_to_heightmap, terrain_height_radius_check, allowed_terrain_height_range and burying_type are not read by the nether type, and writing them produces no error. Terrain flatness gating in particular is not available, so do not try to gate a nether structure that way.
  • size is branching depth, not a piece count. A size of 128 permits a chain 128 pieces deep from the start, and the finished structure can hold far more pieces than that. size: 0 places the start piece alone.
  • y_allowance clamps rather than rejects. On the nether type it slides the structure to fit the range instead of cancelling it. If the range is shorter than the structure is tall, it ends up above max_y_allowed.
  • pools_that_ignore_boundaries matches the pool's fallback id. Listing the pool a jigsaw block points at does nothing. List the id in that pool's fallback field instead.
  • max_distance_from_center is horizontal only. Vertical sprawl is fixed at 120 below and 180 above the start piece and cannot be configured.
  • ledge_offset_y only goes up. There is no way to sink a structure with it.

See also

Clone this wiki locally