-
Notifications
You must be signed in to change notification settings - Fork 2
Placement Systems
Placement systems control where structures spawn in the world. Moogs Structure Lib provides AdvancedRandomSpread, an enhanced version of Minecraft's random spread placement with additional features.
Moogs Structure Lib uses moogs_structures:advanced_random_spread as its primary placement type. It extends vanilla random spread with:
- Super exclusion zones
- Minimum distance from spawn
- Enhanced spacing control
- Frequency reduction methods
Type: String
Example: "moogs_structures:advanced_random_spread"
Must always be "moogs_structures:advanced_random_spread" for Moogs Structure Lib structures.
Type: Integer
Example: 203698201
Unique identifier for this structure set. Affects which chunks are selected for structure placement. Each structure set should have a unique salt.
Tip: Use large random numbers. Avoid reusing salts across different structure sets.
Type: Integer (0 to Integer.MAX_VALUE)
Example: 34
Average number of chunks between structure attempts. Higher values mean rarer structures.
Important:
- Must be greater than
separation - Internally multiplied by 1.65 by Moogs Structure Lib
- 1 chunk = 16 blocks
Example: spacing: 34 means structures attempt to spawn approximately every 34 chunks (544 blocks), but internally becomes ~56 chunks (896 blocks).
Type: Integer (0 to Integer.MAX_VALUE)
Example: 26
Minimum number of chunks between structures. Ensures structures don't spawn too close together.
Important:
- Must be less than
spacing - Internally multiplied by 1.65 by Moogs Structure Lib
- If
spacing <= separation, structures cannot spawn properly!
Example: separation: 26 means structures must be at least 26 chunks (416 blocks) apart, internally ~43 chunks (688 blocks).
Type: Vec3i (Array of 3 integers)
Example: [0, 0, 0] or [8, 0, 8]
Offset for the /locate command. Adjusts where the locate command points when finding this structure.
Default: [0, 0, 0]
Example:
{
"locate_offset": [8, 0, 8]
}This offsets the locate command by 8 blocks in X and Z.
Type: Float (0.0 to 1.0)
Example: 1.0
Spawn frequency multiplier. Lower values reduce spawn chance.
Default: 1.0 (100% spawn chance)
Example:
-
1.0- Normal spawn rate -
0.5- 50% spawn rate (half as common) -
0.1- 10% spawn rate (very rare)
Type: String
Example: "DEFAULT"
Algorithm used for frequency reduction. Inherited from vanilla Minecraft's RandomSpreadStructurePlacement.
Default: "DEFAULT"
Note: This is an advanced feature. Most users should use the default value.
Type: Exclusion Zone Object
Example: See below
Standard exclusion zone from vanilla Minecraft. Prevents structures from spawning near other structure sets.
Example:
{
"exclusion_zone": {
"chunk_count": 10,
"other_set": "minecraft:villages"
}
}Prevents spawning within 10 chunks of villages.
Type: Super Exclusion Zone Object
Example: See below
Enhanced exclusion zone unique to Moogs Structure Lib. More powerful than standard exclusion zones.
Structure:
{
"super_exclusion_zone": {
"other_set": "#namespace:tag_name",
"chunk_count": 5,
"allowed_chunk_count": 10
}
}Fields:
-
other_set- Structure set tag or array of structure sets to avoid -
chunk_count- Exclusion radius in chunks -
allowed_chunk_count- Optional override for allowed distance
Example from MVS:
{
"super_exclusion_zone": {
"chunk_count": 3,
"other_set": "#mvs:common_avoid"
}
}Prevents spawning within 3 chunks of any structure in the #mvs:common_avoid tag.
How it works:
- Checks if any structure from
other_setexists withinchunk_countchunks - If found, prevents placement
- If
allowed_chunk_countis specified and larger thanchunk_count, allows placement only if structures exist withinallowed_chunk_countrange
Type: String
Example: "LINEAR"
Distribution type for structure placement.
Options:
-
"LINEAR"- Linear distribution (default) -
"TRIANGULAR"- Triangular distribution
Default: "LINEAR"
Note: Most users should use "LINEAR". "TRIANGULAR" creates a different distribution pattern but is rarely needed.
Type: Integer (0 to Integer.MAX_VALUE)
Example: 800
Minimum distance in blocks from world spawn (0, 0) before structures can spawn. Useful for rare structures that should only appear far from spawn.
Example:
{
"min_distance_from_world_origin": 1000
}Structures will only spawn at least 1000 blocks from spawn.
Common use cases:
- Rare structures (crystals, cathedrals)
- End-game content
- Structures that should be discovered through exploration
{
"type": "moogs_structures:advanced_random_spread",
"salt": 203698201,
"spacing": 34,
"separation": 26
}Simple placement with no special features.
{
"type": "moogs_structures:advanced_random_spread",
"salt": 766544243,
"spacing": 31,
"separation": 26,
"super_exclusion_zone": {
"chunk_count": 3,
"other_set": "#mvs:common_avoid"
}
}Prevents spawning near common structures.
{
"type": "moogs_structures:advanced_random_spread",
"salt": 469982354,
"spacing": 112,
"separation": 62,
"min_distance_from_world_origin": 800
}Very rare structure that only spawns far from spawn.
{
"type": "moogs_structures:advanced_random_spread",
"salt": 123456789,
"spacing": 50,
"separation": 35,
"frequency": 0.5
}Structure spawns at 50% of normal rate.
{
"type": "moogs_structures:advanced_random_spread",
"salt": 987654321,
"spacing": 40,
"separation": 30,
"locate_offset": [8, 0, 8]
}Locate command points to structure center offset by 8 blocks.
Spacing controls average distance:
- Low spacing (20-30) = Common structures
- Medium spacing (50-70) = Uncommon structures
- High spacing (100+) = Rare structures
Separation controls minimum distance:
- Should be 60-80% of spacing value
- Prevents structures from spawning too close
- Too high = structures become too rare
Moogs Structure Lib multiplies both spacing and separation by 1.65 internally. This means:
Your JSON:
{
"spacing": 34,
"separation": 26
}Internal values:
- Spacing: 34 × 1.65 = 56.1 chunks
- Separation: 26 × 1.65 = 42.9 chunks
Why? This provides better structure distribution and prevents clustering. Also in the early days of MVS i wanted to make all the structures rarer without having to individually change all of the values... and its too late to go back now xD
Vanilla Minecraft exclusion zone:
{
"exclusion_zone": {
"chunk_count": 10,
"other_set": "minecraft:villages"
}
}Prevents spawning within 10 chunks of villages.
Moogs Structure Lib enhanced exclusion:
{
"super_exclusion_zone": {
"chunk_count": 5,
"other_set": "#mvs:common_avoid",
"allowed_chunk_count": 10
}
}Behavior:
- Checks for structures in
other_setwithinchunk_countchunks - If found, prevents placement
- If
allowed_chunk_countis specified:- If structures exist within
allowed_chunk_countrange, allows placement - Otherwise, prevents placement
- If structures exist within
Use case: Allow structures only when other structures are nearby (or prevent when nearby).
{
"spacing": 20,
"separation": 15
}Spawns frequently, close together.
{
"spacing": 50,
"separation": 35
}Moderate rarity, reasonable spacing.
{
"spacing": 100,
"separation": 80,
"min_distance_from_world_origin": 1000
}Very rare, far from spawn.
{
"spacing": 30,
"separation": 25,
"super_exclusion_zone": {
"chunk_count": 5,
"other_set": "#namespace:avoid_tag"
}
}Prevents overlap with tagged structures.
Structures not spawning?
- Verify
spacing > separation(critical!) - Check salt is unique
- Verify structure set JSON syntax
- Check exclusion zones aren't too restrictive
Structures too common/rare?
- Adjust spacing (higher = rarer)
- Remember the 1.65x multiplier
- Test in new worlds
Structures spawning too close?
- Increase separation
- Use exclusion zones
- Check other structure sets
Exclusion zones not working?
- Verify structure set tags exist
- Check tag syntax
- Ensure chunk_count is appropriate
- Test exclusion zone logic
- Unique Salts - Never reuse salts across structure sets
- Spacing > Separation - Always ensure spacing is greater
- Appropriate Values - Match spacing to structure rarity
- Exclusion Zones - Use them to prevent overlap
- Testing - Always test structure placement in new worlds
- Documentation - Comment your placement values for future reference
Next: Learn about NBT Files to understand where structure files go!