LocalPlayer::accelerateHorizontal: cleanups
[oweals/minetest.git] / src / mapgen_fractal.cpp
index b43dcd3f0acef373845f1e314ebcc1d3d11c05e0..3663599a5a7faa4299a654cedd9aa4e6b9a8f6ab 100644 (file)
@@ -49,19 +49,19 @@ FlagDesc flagdesc_mapgen_fractal[] = {
 MapgenFractal::MapgenFractal(int mapgenid, MapgenFractalParams *params, EmergeManager *emerge)
        : MapgenBasic(mapgenid, params, emerge)
 {
-       this->spflags          = params->spflags;
-       this->cave_width       = params->cave_width;
-       this->large_cave_depth = params->large_cave_depth;
-       this->lava_depth       = params->lava_depth;
-       this->fractal          = params->fractal;
-       this->iterations       = params->iterations;
-       this->scale            = params->scale;
-       this->offset           = params->offset;
-       this->slice_w          = params->slice_w;
-       this->julia_x          = params->julia_x;
-       this->julia_y          = params->julia_y;
-       this->julia_z          = params->julia_z;
-       this->julia_w          = params->julia_w;
+       spflags          = params->spflags;
+       cave_width       = params->cave_width;
+       large_cave_depth = params->large_cave_depth;
+       lava_depth       = params->lava_depth;
+       fractal          = params->fractal;
+       iterations       = params->iterations;
+       scale            = params->scale;
+       offset           = params->offset;
+       slice_w          = params->slice_w;
+       julia_x          = params->julia_x;
+       julia_y          = params->julia_y;
+       julia_z          = params->julia_z;
+       julia_w          = params->julia_w;
 
        //// 2D terrain noise
        noise_seabed       = new Noise(&params->np_seabed, seed, csize.X, csize.Z);
@@ -70,8 +70,8 @@ MapgenFractal::MapgenFractal(int mapgenid, MapgenFractalParams *params, EmergeMa
        MapgenBasic::np_cave1 = params->np_cave1;
        MapgenBasic::np_cave2 = params->np_cave2;
 
-       this->formula = fractal / 2 + fractal % 2;
-       this->julia   = fractal % 2 == 0;
+       formula = fractal / 2 + fractal % 2;
+       julia   = fractal % 2 == 0;
 }
 
 
@@ -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,20 +200,25 @@ void MapgenFractal::makeChunk(BlockMakeData *data)
 
        // Init biome generator, place biome-specific nodes, and build biomemap
        biomegen->calcBiomeNoise(node_min);
-       MgStoneType stone_type = generateBiomes();
+
+       MgStoneType mgstone_type;
+       content_t biome_stone;
+       generateBiomes(&mgstone_type, &biome_stone, water_level - 1);
 
        if (flags & MG_CAVES)
                generateCaves(stone_surface_max_y, large_cave_depth);
 
        if (flags & MG_DUNGEONS)
-               generateDungeons(stone_surface_max_y, stone_type);
+               generateDungeons(stone_surface_max_y, mgstone_type, biome_stone);
 
        // 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();