Skip to content
Permalink
Browse files

Change mapgen order to ores > dungeons > decorations (#7656)

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 8516f284580a366d014f13a0bbd797da49d4df7e
@@ -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)
@@ -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();
@@ -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);
@@ -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();
@@ -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);
@@ -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();
@@ -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)
@@ -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();
@@ -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)
@@ -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();
@@ -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)
@@ -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();

0 comments on commit 8516f28

Please sign in to comment.
You can’t perform that action at this time.