mirror of
https://github.com/moparisthebest/minetest
synced 2024-12-23 08:08:47 -05:00
Better apple tree generation
This commit is contained in:
parent
b22cb69a15
commit
ae6d83a41e
@ -80,16 +80,12 @@ static s16 find_ground_level_clever(VoxelManipulator &vmanip, v2s16 p2d)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void make_tree(VoxelManipulator &vmanip, v3s16 p0)
|
static void make_tree(VoxelManipulator &vmanip, v3s16 p0, bool is_apple_tree)
|
||||||
{
|
{
|
||||||
MapNode treenode(CONTENT_TREE);
|
MapNode treenode(CONTENT_TREE);
|
||||||
MapNode leavesnode(CONTENT_LEAVES);
|
MapNode leavesnode(CONTENT_LEAVES);
|
||||||
MapNode applenode(CONTENT_APPLE);
|
MapNode applenode(CONTENT_APPLE);
|
||||||
|
|
||||||
bool is_apple_tree = myrand_range(0,100) < 35?true:false;
|
|
||||||
s16 apple_count = 0;
|
|
||||||
|
|
||||||
|
|
||||||
s16 trunk_h = myrand_range(4, 5);
|
s16 trunk_h = myrand_range(4, 5);
|
||||||
v3s16 p1 = p0;
|
v3s16 p1 = p0;
|
||||||
for(s16 ii=0; ii<trunk_h; ii++)
|
for(s16 ii=0; ii<trunk_h; ii++)
|
||||||
@ -143,7 +139,6 @@ static void make_tree(VoxelManipulator &vmanip, v3s16 p0)
|
|||||||
for(s16 y=leaves_a.MinEdge.Y; y<=leaves_a.MaxEdge.Y; y++)
|
for(s16 y=leaves_a.MinEdge.Y; y<=leaves_a.MaxEdge.Y; y++)
|
||||||
for(s16 x=leaves_a.MinEdge.X; x<=leaves_a.MaxEdge.X; x++)
|
for(s16 x=leaves_a.MinEdge.X; x<=leaves_a.MaxEdge.X; x++)
|
||||||
{
|
{
|
||||||
bool is_apple = myrand_range(0,100) < 50?true:false;
|
|
||||||
v3s16 p(x,y,z);
|
v3s16 p(x,y,z);
|
||||||
p += p1;
|
p += p1;
|
||||||
if(vmanip.m_area.contains(p) == false)
|
if(vmanip.m_area.contains(p) == false)
|
||||||
@ -154,9 +149,9 @@ static void make_tree(VoxelManipulator &vmanip, v3s16 p0)
|
|||||||
continue;
|
continue;
|
||||||
u32 i = leaves_a.index(x,y,z);
|
u32 i = leaves_a.index(x,y,z);
|
||||||
if(leaves_d[i] == 1) {
|
if(leaves_d[i] == 1) {
|
||||||
if(is_apple_tree && is_apple && apple_count < 4) {
|
bool is_apple = myrand_range(0,99) < 10;
|
||||||
|
if(is_apple_tree && is_apple) {
|
||||||
vmanip.m_data[vi] = applenode;
|
vmanip.m_data[vi] = applenode;
|
||||||
apple_count++;
|
|
||||||
} else {
|
} else {
|
||||||
vmanip.m_data[vi] = leavesnode;
|
vmanip.m_data[vi] = leavesnode;
|
||||||
}
|
}
|
||||||
@ -2141,7 +2136,16 @@ void make_block(BlockMakeData *data)
|
|||||||
p.Y++;
|
p.Y++;
|
||||||
//if(surface_humidity_2d(data->seed, v2s16(x, y)) < 0.5)
|
//if(surface_humidity_2d(data->seed, v2s16(x, y)) < 0.5)
|
||||||
if(is_jungle == false)
|
if(is_jungle == false)
|
||||||
make_tree(vmanip, p);
|
{
|
||||||
|
bool is_apple_tree;
|
||||||
|
if(myrand_range(0,4) != 0)
|
||||||
|
is_apple_tree = false;
|
||||||
|
else
|
||||||
|
is_apple_tree = noise2d_perlin(
|
||||||
|
0.5+(float)p.X/100, 0.5+(float)p.Z/100,
|
||||||
|
data->seed+342902, 3, 0.45) > 0.2;
|
||||||
|
make_tree(vmanip, p, is_apple_tree);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
make_jungletree(vmanip, p);
|
make_jungletree(vmanip, p);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user