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++;
}
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
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;
};
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;
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;