forked from mtcontrib/plantlife_modpack
0af7b69afa
When it's this far out of hand you really need to clean up or else everyone will be submitting patches with more whitespace problems.
152 lines
4.4 KiB
Lua
152 lines
4.4 KiB
Lua
-- 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.set_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.set_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.set_node(radius_2a, {name="woodsoils:grass_with_leaves_2"})
|
|
end
|
|
if string.find(node_2b.name, "dirt_with_grass") then
|
|
minetest.set_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.set_node(radius_3a, {name="woodsoils:grass_with_leaves_1"})
|
|
end
|
|
if string.find(node_3b.name, "dirt_with_grass") then
|
|
minetest.set_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.set_node(pos, {name="default:papyrus"})
|
|
end
|
|
end
|
|
end
|
|
end,
|
|
})
|