-- this code is taken from https://github.com/VanessaE/dreambuilder_game/blob/master/mods/default/trees.lua local c_air = minetest.get_content_id("air") local c_ignore = minetest.get_content_id("ignore") local c_tree = minetest.get_content_id("default:tree") local c_leaves = minetest.get_content_id("default:leaves") local c_sapling = minetest.get_content_id("default:sapling"); local c_junglesapling = minetest.get_content_id("default:junglesapling"); mg_villages.grow_tree = function(data, a, pos, is_apple_tree, seed) --[[ NOTE: Tree-placing code is currently duplicated in the engine and in games that have saplings; both are deprecated but not replaced yet ]]-- local hight = math.random(4, 5) for x_area = -2, 2 do for y_area = -1, 2 do for z_area = -2, 2 do if math.random(1,30) < 23 then --randomize leaves local area_l = a:index(pos.x+x_area, pos.y+hight+y_area-1, pos.z+z_area) --sets area for leaves if data[area_l] == c_air or data[area_l] == c_ignore then --sets if it's air or ignore data[area_l] = c_leaves --add leaves now end end end end end for tree_h = 0, hight-1 do -- add the trunk local area_t = a:index(pos.x, pos.y+tree_h, pos.z) --set area for tree if data[area_t] == c_air or data[area_t] == c_leaves or data[area_t] == c_sapling then --sets if air data[area_t] = c_tree --add tree now end end end local c_jungletree = minetest.get_content_id("default:jungletree") local c_jungleleaves = minetest.get_content_id("default:jungleleaves") mg_villages.grow_jungletree = function(data, a, pos, seed) --[[ NOTE: Tree-placing code is currently duplicated in the engine and in games that have saplings; both are deprecated but not replaced yet ]]-- local hight = math.random(8, 12) for x_area = -3, 3 do for y_area = -2, 2 do for z_area = -3, 3 do if math.random(1,30) < 23 then --randomize leaves local area_l = a:index(pos.x+x_area, pos.y+hight+y_area-1, pos.z+z_area) --sets area for leaves if data[area_l] == c_air or data[area_l] == c_ignore then --sets if it's air or ignore data[area_l] = c_jungleleaves --add leaves now end end end end end for tree_h = 0, hight-1 do -- add the trunk local area_t = a:index(pos.x, pos.y+tree_h, pos.z) --set area for tree if data[area_t] == c_air or data[area_t] == c_jungleleaves or data[area_t] == c_junglesapling then --sets if air data[area_t] = c_jungletree --add tree now end end for roots_x = -1, 1 do for roots_z = -1, 1 do if math.random(1, 3) >= 2 then --randomize roots if a:contains(pos.x+roots_x, pos.y-1, pos.z+roots_z) and data[a:index(pos.x+roots_x, pos.y-1, pos.z+roots_z)] == c_air then data[a:index(pos.x+roots_x, pos.y-1, pos.z+roots_z)] = c_jungletree elseif a:contains(pos.x+roots_x, pos.y, pos.z+roots_z) and data[a:index(pos.x+roots_x, pos.y, pos.z+roots_z)] == c_air then data[a:index(pos.x+roots_x, pos.y, pos.z+roots_z)] = c_jungletree end end end end end