mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 01:05:48 +01:00 
			
		
		
		
	Better apple tree generation
This commit is contained in:
		@@ -80,16 +80,12 @@ static s16 find_ground_level_clever(VoxelManipulator &vmanip, v2s16 p2d)
 | 
			
		||||
}
 | 
			
		||||
#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 leavesnode(CONTENT_LEAVES);
 | 
			
		||||
	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);
 | 
			
		||||
	v3s16 p1 = p0;
 | 
			
		||||
	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 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);
 | 
			
		||||
		p += p1;
 | 
			
		||||
		if(vmanip.m_area.contains(p) == false)
 | 
			
		||||
@@ -154,9 +149,9 @@ static void make_tree(VoxelManipulator &vmanip, v3s16 p0)
 | 
			
		||||
			continue;
 | 
			
		||||
		u32 i = leaves_a.index(x,y,z);
 | 
			
		||||
		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;
 | 
			
		||||
				apple_count++;
 | 
			
		||||
			} else {
 | 
			
		||||
				vmanip.m_data[vi] = leavesnode;
 | 
			
		||||
			}
 | 
			
		||||
@@ -2141,7 +2136,16 @@ void make_block(BlockMakeData *data)
 | 
			
		||||
					p.Y++;
 | 
			
		||||
					//if(surface_humidity_2d(data->seed, v2s16(x, y)) < 0.5)
 | 
			
		||||
					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
 | 
			
		||||
						make_jungletree(vmanip, p);
 | 
			
		||||
				}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user