-- generating of forest soils local RaDiuS = { -- WE1 NS1 WE2 NS2 WE3 NS3 {-1,-2, -2,-2, -2,-3}, { 0,-2, -3,-1, -3,-2}, { 1,-2, -3, 0, -4,-1}, {-2,-1, -3, 1, -4, 0}, {-1,-1, -2, 2, -4, 1}, { 0,-1, -1, 3, -3, 2}, { 1,-1, 0, 3, -2, 3}, { 2,-1, 1, 3, -1, 4}, {-2, 0, 2, 2, 0, 4}, {-1, 0, 3, 1, 1, 4}, { 0, 0, 3, 0, 2, 3}, { 1, 0, 3,-1, 3, 2}, { 2, 0, 2,-2, 4, 1}, {-2, 1, 1,-3, 4, 0}, {-1, 1, 0,-3, 4,-1}, { 0, 1, -1,-3, 3,-2}, { 1, 1, 0, 0, 2,-3}, { 2, 1, 0, 0, 1,-4}, {-1, 2, 0, 0, 0,-4}, { 0, 2, 0, 0, -1,-4}, { 1, 2, 0, 0, 0, 0}, } -- e = + , n = + abstract_woodsoils.place_soil = function(pos) if minetest.get_item_group(minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name, "soil") > 0 or minetest.get_item_group(minetest.get_node({x=pos.x,y=pos.y-2,z=pos.z}).name, "soil") > 0 then for i in pairs(RaDiuS) do local WE1 = RaDiuS[i][1] local NS1 = RaDiuS[i][2] local WE2 = RaDiuS[i][3] local NS2 = RaDiuS[i][4] local WE3 = RaDiuS[i][5] local NS3 = RaDiuS[i][6] local radius_1a = {x=pos.x+WE1,y=pos.y-1,z=pos.z+NS1} local radius_1b = {x=pos.x+WE1,y=pos.y-2,z=pos.z+NS1} local radius_2a = {x=pos.x+WE2,y=pos.y-1,z=pos.z+NS2} local radius_2b = {x=pos.x+WE2,y=pos.y-2,z=pos.z+NS2} local radius_3a = {x=pos.x+WE3,y=pos.y-1,z=pos.z+NS3} local radius_3b = {x=pos.x+WE3,y=pos.y-2,z=pos.z+NS3} --local node_1a = minetest.get_node(radius_1a) --local node_1b = minetest.get_node(radius_1b) local node_2a = minetest.get_node(radius_2a) local node_2b = minetest.get_node(radius_2b) local node_3a = minetest.get_node(radius_3a) local node_3b = minetest.get_node(radius_3b) -- Dirt with Leaves 1 if minetest.get_item_group(minetest.get_node(radius_1a).name, "soil") > 0 then minetest.swap_node(radius_1a, {name="woodsoils:dirt_with_leaves_1"}) end if minetest.get_item_group(minetest.get_node(radius_1b).name, "soil") > 0 then minetest.swap_node(radius_1b, {name="woodsoils:dirt_with_leaves_1"}) end -- Grass with Leaves 2 if string.find(node_2a.name, "dirt_with_grass") then minetest.swap_node(radius_2a, {name="woodsoils:grass_with_leaves_2"}) end if string.find(node_2b.name, "dirt_with_grass") then minetest.swap_node(radius_2b, {name="woodsoils:grass_with_leaves_2"}) end -- Grass with Leaves 1 if string.find(node_3a.name, "dirt_with_grass") then minetest.swap_node(radius_3a, {name="woodsoils:grass_with_leaves_1"}) end if string.find(node_3b.name, "dirt_with_grass") then minetest.swap_node(radius_3b, {name="woodsoils:grass_with_leaves_1"}) end end end end biome_lib:register_generate_plant({ surface = { "group:tree", "ferns:fern_03", "ferns:fern_02", "ferns:fern_01" }, max_count = 1000, rarity = 1, min_elevation = 1, max_elevation = 40, near_nodes = {"group:tree","ferns:fern_03","ferns:fern_02","ferns:fern_01"}, near_nodes_size = 5, near_nodes_vertical = 1, near_nodes_count = 4, plantlife_limit = -1, check_air = false, }, "abstract_woodsoils.place_soil" ) biome_lib:register_generate_plant({ surface = { "moretrees:apple_tree_sapling_ongen", "moretrees:beech_sapling_ongen", "moretrees:birch_sapling_ongen", "moretrees:fir_sapling_ongen", "moretrees:jungletree_sapling_ongen", "moretrees:oak_sapling_ongen", "moretrees:palm_sapling_ongen", "moretrees:rubber_tree_sapling_ongen", "moretrees:sequoia_sapling_ongen", "moretrees:spruce_sapling_ongen", "moretrees:willow_sapling_ongen" }, max_count = 1000, rarity = 2, min_elevation = 1, max_elevation = 40, plantlife_limit = -0.9, check_air = false, }, "abstract_woodsoils.place_soil" ) minetest.register_abm({ nodenames = {"default:papyrus"}, neighbors = { "woodsoils:dirt_with_leaves_1", "woodsoils:dirt_with_leaves_2", "woodsoils:grass_with_leaves_1", "woodsoils:grass_with_leaves_2" }, interval = 50, chance = 20, action = function(pos, node) pos.y = pos.y-1 local name = minetest.get_node(pos).name if string.find(name, "_with_leaves_") then if minetest.find_node_near(pos, 3, {"group:water"}) == nil then return end pos.y = pos.y+1 local height = 0 while minetest.get_node(pos).name == "default:papyrus" and height < 4 do height = height+1 pos.y = pos.y+1 end if height < 4 then if minetest.get_node(pos).name == "air" then minetest.swap_node(pos, {name="default:papyrus"}) end end end end, })