]> git.lizzy.rs Git - minetest.git/blobdiff - src/mapgen.cpp
Make m_media_fetch_threads to contain MediaFetchThread* instead of MediaFetchThread
[minetest.git] / src / mapgen.cpp
index a487e8f6dd04bd4d5da39ca82c3b2c75a755524a..782f00b62bb0de7e7e10c0285b0f7d3d2bfe4f10 100644 (file)
@@ -132,7 +132,8 @@ void make_tree(ManualMapVoxelManipulator &vmanip, v3s16 p0,
        for(s16 ii=0; ii<trunk_h; ii++)
        {
                if(vmanip.m_area.contains(p1))
-                       vmanip.m_data[vmanip.m_area.index(p1)] = treenode;
+                       if(ii == 0 || vmanip.getNodeNoExNoEmerge(p1).getContent() == CONTENT_AIR)
+                               vmanip.m_data[vmanip.m_area.index(p1)] = treenode;
                p1.Y++;
        }
 
@@ -1228,7 +1229,7 @@ double base_rock_level_2d(u64 seed, v2s16 p)
                        0.5+(float)p.X/125., 0.5+(float)p.Y/125.,
                        seed-932, 5, 0.7);
        b = rangelim(b, 0.0, 1000.0);
-       b = pow(b, 7);
+       b = b*b*b*b*b*b*b;
        b *= 5;
        b = rangelim(b, 0.5, 1000.0);
        // Values 1.5...100 give quite horrible looking slopes
@@ -1297,7 +1298,9 @@ BiomeType get_biome(u64 seed, v2s16 p2d)
        double d = noise2d_perlin(
                        0.6+(float)p2d.X/250, 0.2+(float)p2d.Y/250,
                        seed+9130, 3, 0.50);
-       if(d > 0.35)
+       if(d > 0.45) 
+               return BT_DESERT;
+       if(d > 0.35 && (noise2d( p2d.X, p2d.Y, int(seed) ) + 1.0) > ( 0.45 - d ) * 20.0  ) 
                return BT_DESERT;
        return BT_NORMAL;
 };
@@ -1759,8 +1762,9 @@ void make_block(BlockMakeData *data)
                                                                        vmanip.m_data[i] = airnode;
                                                                }
                                                        } else {
-                                                               // Don't replace air or water or lava
-                                                               if(vmanip.m_data[i].getContent() == CONTENT_AIR ||
+                                                               // Don't replace air or water or lava or ignore
+                                                               if(vmanip.m_data[i].getContent() == CONTENT_IGNORE ||
+                                                               vmanip.m_data[i].getContent() == CONTENT_AIR ||
                                                                vmanip.m_data[i].getContent() == c_water_source ||
                                                                vmanip.m_data[i].getContent() == c_lava_source)
                                                                        continue;
@@ -2059,13 +2063,14 @@ void make_block(BlockMakeData *data)
                                
                                bool old_is_water = (n->getContent() == c_water_source);
                                // Move mud to new place
-                               if(!dropped_to_unknown)
+                               if(!dropped_to_unknown) {
                                        *n2 = *n;
-                               // Set old place to be air (or water)
-                               if(old_is_water)
-                                       *n = MapNode(c_water_source);
-                               else
-                                       *n = MapNode(CONTENT_AIR);
+                                       // Set old place to be air (or water)
+                                       if(old_is_water)
+                                               *n = MapNode(c_water_source);
+                                       else
+                                               *n = MapNode(CONTENT_AIR);
+                               }
 
                                // Done
                                break;