Noise: Prevent unittest crash caused by division by zero
[oweals/minetest.git] / src / mapgen_fractal.cpp
index 4fe0d836968d29e910b67b65dd79c2bd86458d0e..720408dbb68d10995a5d308dc3dd2c4cff4e811f 100644 (file)
@@ -156,7 +156,8 @@ int MapgenFractal::getSpawnLevelAtPoint(v2s16 p)
                        air_count = 0;
                } else if (solid_below) {  // Air above solid node
                        air_count++;
-                       if (air_count == 2)
+                       // 3 to account for snowblock dust
+                       if (air_count == 3)
                                return y - 2;
                }
        }
@@ -199,7 +200,7 @@ void MapgenFractal::makeChunk(BlockMakeData *data)
 
        // Init biome generator, place biome-specific nodes, and build biomemap
        biomegen->calcBiomeNoise(node_min);
-       MgStoneType stone_type = generateBiomes();
+       MgStoneType stone_type = generateBiomes(water_level - 1);
 
        if (flags & MG_CAVES)
                generateCaves(stone_surface_max_y, large_cave_depth);
@@ -209,10 +210,12 @@ void MapgenFractal::makeChunk(BlockMakeData *data)
 
        // Generate the registered decorations
        if (flags & MG_DECORATIONS)
-               m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);
+               m_emerge->decomgr->placeAllDecos(this, blockseed,
+                       node_min, node_max, water_level - 1);
 
        // Generate the registered ores
-       m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);
+       m_emerge->oremgr->placeAllOres(this, blockseed,
+               node_min, node_max, water_level - 1);
 
        // Sprinkle some dust on top after everything else was generated
        dustTopNodes();