Fix shift-descend to ladders from a floor
[oweals/minetest.git] / src / mapgen.cpp
index a487e8f6dd04bd4d5da39ca82c3b2c75a755524a..67e92f4498bca02d0f458a64cb818e7b498fa760 100644 (file)
@@ -1297,7 +1297,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 +1761,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 +2062,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;