-
Notifications
You must be signed in to change notification settings - Fork 3
Advanced Topics
This page covers advanced features and techniques for Moogs Structure Lib, including version-aware structures, advanced placement modifiers, and complex configuration options.
Moved to its own page: versioned_single_pool_element.
Burying types control how structures are positioned relative to terrain:
Places structure so its lowest corner aligns with terrain height.
Use case: Structures that should sit on the ground.
{
"burying_type": "LOWEST_CORNER"
}Places structure at average terrain height in the area.
Use case: Structures that should adapt to terrain variations.
{
"burying_type": "AVERAGE_LAND"
}Places structure so its lowest side aligns with terrain.
Use case: Structures that should follow terrain contours.
{
"burying_type": "LOWEST_SIDE"
}Restricts structure placement to specific Y coordinate ranges:
{
"y_allowance": {
"min_y_allowed": 50,
"max_y_allowed": 100
}
}Use cases:
- Ocean structures (restrict to ocean depth)
- Sky structures (restrict to high altitudes)
- Cave structures (restrict to underground)
Important: max_y_allowed cannot be less than min_y_allowed.
Lets pieces drawn from a pool's fallback extend past the structure's normal boundary:
{
"pools_that_ignore_boundaries": [
"mvs:cathedral/special_pool",
"mvs:cathedral/decorative_pool"
]
}Important: the ids you list here are matched against a pool's fallback field, not against the pool a jigsaw block points at. Listing a target pool has no effect. See Nether jigsaw structures for detail.
Use case: end caps and wall fillers that are allowed to clip past the structure's limits.
Limits how far jigsaw pieces can extend from the structure center:
{
"max_distance_from_center": 35
}Use case: Large jigsaw structures where you want to limit total size.
Example: Cathedral structure with max_distance_from_center: 35 means no piece can be more than 35 blocks from the center.
Controls how structures adapt to terrain:
No terrain adaptation. Structure places exactly as built.
{
"terrain_adaptation": "none"
}Use case: Underground structures, floating structures.
Thin beard adaptation. Structure blends slightly with terrain.
{
"terrain_adaptation": "beard_thin"
}Use case: Most surface structures (most common).
Box beard adaptation. More aggressive terrain blending.
{
"terrain_adaptation": "beard_box"
}Use case: Structures that should blend heavily with terrain.
Encapsulation adaptation. Structure is encapsulated by terrain.
{
"terrain_adaptation": "encapsulate"
}Use case: Buried structures, underground features.
Bury adaptation. Structure is buried in terrain.
{
"terrain_adaptation": "bury"
}Use case: Completely buried structures.
Controls how liquids are handled in structures:
{
"liquid_settings": "ignore_waterlogging"
}Options:
-
"apply_waterlogging"- Waterlogs blocks placed in water. This is the default when the field is omitted. -
"ignore_waterlogging"- Leaves blocks dry
Use case: Underwater structures, structures near water.
Ensures structures don't spawn on biome borders:
{
"valid_biome_radius_check": 5
}Checks that all biomes within 5 chunks match the required biome.
Use case: Structures that need consistent biome context.
Moogs Structure Lib provides placement modifiers for different use cases. Note: These are for feature placement, not structure placement. They're used in different contexts than structure generation.
Offsets placement position by -8 blocks in X and Z.
Type: moogs_structures:minus_eight_placement
Use case: Feature placement adjustments.
Snaps placement to the lowest non-air block below.
Type: moogs_structures:snap_to_lower_non_air_placement
Use case: Features that need to sit on solid ground.
Allows unlimited count of feature placements.
Type: moogs_structures:unlimited_count
Syntax:
{
"type": "moogs_structures:unlimited_count",
"count": 5
}Use case: Features that should spawn multiple times.
Note: These placement modifiers are for feature generation (ores, vegetation, etc.), not structure generation. For structures, use AdvancedRandomSpread placement in structure sets.
Processor lists modify blocks during structure placement. They're referenced in template pools:
{
"processors": "namespace:processor_list_name"
}File location: data/<namespace>/worldgen/processor_list/<name>.json
Common processors:
-
minecraft:empty- No processing (most common) - Custom processors for block replacement, randomization, etc.
Example from MVS:
{
"processors": "mvs:cathedral"
}References data/mvs/worldgen/processor_list/cathedral.json.
Note: Processor lists are a Minecraft feature. See Minecraft documentation for details on creating custom processors.
For large expanding structures like mineshafts:
{
"type": "moogs_structures:moogs_structures_generic_jigsaw_structure",
"start_pool": "mvs:mineshaft/mineshaft",
"size": 10,
"max_distance_from_center": 90,
"pools_that_ignore_boundaries": [],
"project_start_to_heightmap": "WORLD_SURFACE_WG",
"cannot_spawn_in_liquid": true,
"terrain_height_radius_check": 1,
"allowed_terrain_height_range": 2,
"liquid_settings": "ignore_waterlogging",
"biomes": "#mvs:has_structure/taiga_biomes",
"step": "underground_structures",
"terrain_adaptation": "none",
"start_height": {
"absolute": 0
},
"spawn_overrides": {}
}Key settings:
- High
size(10) for expansion -
max_distance_from_centerto limit growth -
step: "underground_structures"for underground -
terrain_adaptation: "none"for precise placement
Nether structures use special structure type:
{
"type": "moogs_structures:moogs_structures_generic_nether_jigsaw_structure",
"start_pool": "mvs:nether_structure/start_pool",
"size": 1,
"biomes": "#mvs:has_structure/nether_biomes",
"land_search_direction": "HIGHEST_LAND",
"ledge_offset_y": 5,
"cannot_spawn_in_liquid": true,
"step": "surface_structures",
"terrain_adaptation": "beard_thin",
"start_height": {
"absolute": 0
},
"spawn_overrides": {}
}Key settings:
-
moogs_structures_generic_nether_jigsaw_structuretype -
land_search_direction: "HIGHEST_LAND"or"LOWEST_LAND" -
ledge_offset_yfor positioning - Nether biome tags
- Use Version-Aware Elements - When supporting multiple versions
- Test Thoroughly - Advanced features can have unexpected interactions
- Document Complex Structures - Note jigsaw connections and pool relationships
- Start Simple - Add advanced features incrementally
- Use Appropriate Settings - Match terrain adaptation to structure type
-
Limit Growth - Use
max_distance_from_centerfor large structures - Test Exclusion Zones - Verify they work as expected
Version-aware not working?
- Check version range format
- Verify NBT files exist for all versions
- Check fallback file exists
Burying type not working?
- Verify terrain height checks are appropriate
- Check
y_allowancerestrictions - Ensure terrain is suitable
Structures too large?
- Reduce
sizevalue - Lower
max_distance_from_center - Check jigsaw connections aren't infinite
Exclusion zones too restrictive?
- Reduce
chunk_count - Check structure set tags are correct
- Verify
allowed_chunk_countlogic
See Also:
- Structure Files - Complete structure JSON reference
- Template Pools - Pool system details
- Placement Systems - Placement configuration
Getting started
Core concepts
- pillar
- spawner_randomizing
- trial_spawner_randomizing
- vault_randomizing
- equip_armor_stand
- close_off_fluid_sources
- flood_with_water
- remove_floating_blocks
- random_replace_with_properties
- super_gravity
Advanced
- versioned_single_pool_element
- Nether jigsaw structures
- Enhanced terrain adaptation
- Entity processor framework
- Debug commands
- Advanced Topics
Examples