+
+ /*
+ Add blobs of dirt and gravel underground
+ */
+ {
+ PseudoRandom pr(blockseed+983);
+ for(int i=0; i<volume_nodes/12/12/12; i++){
+ v3s16 size(
+ pr.range(1, 6),
+ pr.range(1, 6),
+ pr.range(1, 6)
+ );
+ v3s16 p0(
+ pr.range(node_min.X, node_max.X)-size.X/2,
+ pr.range(node_min.Y, node_max.Y)-size.Y/2,
+ pr.range(node_min.Z, node_max.Z)-size.Z/2
+ );
+ MapNode n1;
+ if(p0.Y > -32 && pr.range(0,1) == 0)
+ n1 = MapNode(c_dirt);
+ else
+ n1 = MapNode(c_gravel);
+ for(int x1=0; x1<size.X; x1++)
+ for(int y1=0; y1<size.Y; y1++)
+ for(int z1=0; z1<size.Z; z1++)
+ {
+ v3s16 p = p0 + v3s16(x1,y1,z1);
+ u32 i = vmanip.m_area.index(p);
+ if(!vmanip.m_area.contains(i))
+ continue;
+ if(vmanip.m_data[i].getContent() != c_stone)
+ continue;
+ vmanip.m_data[i] = n1;
+ }
+ }
+ }