Skip to content

Commit

Permalink
Change mapgen order to ores > dungeons > decorations (#7656)
Browse files Browse the repository at this point in the history
Previously dungeons > decorations > ores.
Decorations depend on the node they are placed on, and ore types are
increasingly able to place large continuous volumes of nodes, such as
strata. Decorations are increasingly being used underground.

The new order avoids a node being changed by ore generation after a
decoration has been placed on it.
The new order also avoids ores appearing in the walls of a dungeon if
the wall nodes match the local stone node.
  • Loading branch information
paramat committed Aug 20, 2018
1 parent 5a26e46 commit 8516f28
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 18 deletions.
6 changes: 3 additions & 3 deletions src/mapgen/mapgen_carpathian.cpp
Expand Up @@ -273,6 +273,9 @@ void MapgenCarpathian::makeChunk(BlockMakeData *data)
generateCavesRandomWalk(stone_surface_max_y, large_cave_depth);
}

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Generate dungeons
if ((flags & MG_DUNGEONS) && full_node_min.Y >= dungeon_ymin &&
full_node_max.Y <= dungeon_ymax)
Expand All @@ -282,9 +285,6 @@ void MapgenCarpathian::makeChunk(BlockMakeData *data)
if (flags & MG_DECORATIONS)
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Sprinkle some dust on top after everything else was generated
if (flags & MG_BIOMES)
dustTopNodes();
Expand Down
6 changes: 3 additions & 3 deletions src/mapgen/mapgen_flat.cpp
Expand Up @@ -207,6 +207,9 @@ void MapgenFlat::makeChunk(BlockMakeData *data)
generateCavesRandomWalk(stone_surface_max_y, large_cave_depth);
}

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

if ((flags & MG_DUNGEONS) && full_node_min.Y >= dungeon_ymin &&
full_node_max.Y <= dungeon_ymax)
generateDungeons(stone_surface_max_y);
Expand All @@ -215,9 +218,6 @@ void MapgenFlat::makeChunk(BlockMakeData *data)
if (flags & MG_DECORATIONS)
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Sprinkle some dust on top after everything else was generated
if (flags & MG_BIOMES)
dustTopNodes();
Expand Down
6 changes: 3 additions & 3 deletions src/mapgen/mapgen_fractal.cpp
Expand Up @@ -218,6 +218,9 @@ void MapgenFractal::makeChunk(BlockMakeData *data)
generateCavesRandomWalk(stone_surface_max_y, large_cave_depth);
}

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

if ((flags & MG_DUNGEONS) && full_node_min.Y >= dungeon_ymin &&
full_node_max.Y <= dungeon_ymax)
generateDungeons(stone_surface_max_y);
Expand All @@ -226,9 +229,6 @@ void MapgenFractal::makeChunk(BlockMakeData *data)
if (flags & MG_DECORATIONS)
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Sprinkle some dust on top after everything else was generated
if (flags & MG_BIOMES)
dustTopNodes();
Expand Down
6 changes: 3 additions & 3 deletions src/mapgen/mapgen_v5.cpp
Expand Up @@ -232,6 +232,9 @@ void MapgenV5::makeChunk(BlockMakeData *data)
generateCavesRandomWalk(stone_surface_max_y, large_cave_depth);
}

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Generate dungeons and desert temples
if ((flags & MG_DUNGEONS) && full_node_min.Y >= dungeon_ymin &&
full_node_max.Y <= dungeon_ymax)
Expand All @@ -241,9 +244,6 @@ void MapgenV5::makeChunk(BlockMakeData *data)
if (flags & MG_DECORATIONS)
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Sprinkle some dust on top after everything else was generated
if (flags & MG_BIOMES)
dustTopNodes();
Expand Down
6 changes: 3 additions & 3 deletions src/mapgen/mapgen_v7.cpp
Expand Up @@ -352,6 +352,9 @@ void MapgenV7::makeChunk(BlockMakeData *data)
generateCavesRandomWalk(stone_surface_max_y, large_cave_depth);
}

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Generate dungeons
if ((flags & MG_DUNGEONS) && full_node_min.Y >= dungeon_ymin &&
full_node_max.Y <= dungeon_ymax)
Expand All @@ -361,9 +364,6 @@ void MapgenV7::makeChunk(BlockMakeData *data)
if (flags & MG_DECORATIONS)
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Sprinkle some dust on top after everything else was generated
if (flags & MG_BIOMES)
dustTopNodes();
Expand Down
6 changes: 3 additions & 3 deletions src/mapgen/mapgen_valleys.cpp
Expand Up @@ -253,6 +253,9 @@ void MapgenValleys::makeChunk(BlockMakeData *data)
generateCavesRandomWalk(stone_surface_max_y, large_cave_depth);
}

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Dungeon creation
if ((flags & MG_DUNGEONS) && full_node_min.Y >= dungeon_ymin &&
full_node_max.Y <= dungeon_ymax)
Expand All @@ -262,9 +265,6 @@ void MapgenValleys::makeChunk(BlockMakeData *data)
if (flags & MG_DECORATIONS)
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);

// Generate the registered ores
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);

// Sprinkle some dust on top after everything else was generated
if (flags & MG_BIOMES)
dustTopNodes();
Expand Down

0 comments on commit 8516f28

Please sign in to comment.