From 8516f284580a366d014f13a0bbd797da49d4df7e Mon Sep 17 00:00:00 2001 From: Paramat Date: Mon, 20 Aug 2018 18:24:53 +0100 Subject: [PATCH] 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. --- src/mapgen/mapgen_carpathian.cpp | 6 +++--- src/mapgen/mapgen_flat.cpp | 6 +++--- src/mapgen/mapgen_fractal.cpp | 6 +++--- src/mapgen/mapgen_v5.cpp | 6 +++--- src/mapgen/mapgen_v7.cpp | 6 +++--- src/mapgen/mapgen_valleys.cpp | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/mapgen/mapgen_carpathian.cpp b/src/mapgen/mapgen_carpathian.cpp index c1e07030ce..f7daef7081 100644 --- a/src/mapgen/mapgen_carpathian.cpp +++ b/src/mapgen/mapgen_carpathian.cpp @@ -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(); diff --git a/src/mapgen/mapgen_flat.cpp b/src/mapgen/mapgen_flat.cpp index e2bc42918f..11b27f85ce 100644 --- a/src/mapgen/mapgen_flat.cpp +++ b/src/mapgen/mapgen_flat.cpp @@ -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(); diff --git a/src/mapgen/mapgen_fractal.cpp b/src/mapgen/mapgen_fractal.cpp index b915cd8f92..68a66bba99 100644 --- a/src/mapgen/mapgen_fractal.cpp +++ b/src/mapgen/mapgen_fractal.cpp @@ -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(); diff --git a/src/mapgen/mapgen_v5.cpp b/src/mapgen/mapgen_v5.cpp index 3e8f42acf3..c5be727b97 100644 --- a/src/mapgen/mapgen_v5.cpp +++ b/src/mapgen/mapgen_v5.cpp @@ -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(); diff --git a/src/mapgen/mapgen_v7.cpp b/src/mapgen/mapgen_v7.cpp index e266e29c8d..1354bf2566 100644 --- a/src/mapgen/mapgen_v7.cpp +++ b/src/mapgen/mapgen_v7.cpp @@ -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(); diff --git a/src/mapgen/mapgen_valleys.cpp b/src/mapgen/mapgen_valleys.cpp index 0a0f93a75f..404ec585a8 100644 --- a/src/mapgen/mapgen_valleys.cpp +++ b/src/mapgen/mapgen_valleys.cpp @@ -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();