123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- -- 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,
- })
|