From: Paramat Date: Mon, 20 Aug 2018 17:24:53 +0000 (+0100) Subject: Change mapgen order to ores > dungeons > decorations (#7656) X-Git-Tag: 5.0.0~248 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8516f284580a366d014f13a0bbd797da49d4df7e;p=oweals%2Fminetest.git 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. --- diff --git a/src/mapgen/mapgen_carpathian.cpp b/src/mapgen/mapgen_carpathian.cpp index c1e07030c..f7daef708 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 e2bc42918..11b27f85c 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 b915cd8f9..68a66bba9 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 3e8f42acf..c5be727b9 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 e266e29c8..1354bf256 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 0a0f93a75..404ec585a 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();