First push
|
@ -0,0 +1,125 @@
|
|||
abstract_trees.grow_conifertree = function(pos)
|
||||
local size = 5+math.random(10)
|
||||
local slope = size/3
|
||||
local rad = 1
|
||||
minetest.env:add_node({x=pos.x, y=pos.y+size, z=pos.z}, {name="trees:leaves_conifer"})
|
||||
for i=1,size,1 do
|
||||
local spawn = {x=pos.x, y=pos.y+size-i, z=pos.z}
|
||||
|
||||
if i < size * 0.75 then
|
||||
for k=-rad,rad,1 do
|
||||
for n=-rad,rad,1 do
|
||||
minetest.env:add_node({x=pos.x+k, y=pos.y+size-i, z=pos.z+n}, {name="trees:leaves_conifer"})
|
||||
end
|
||||
end
|
||||
if i > slope*rad then
|
||||
i = i - 1
|
||||
minetest.env:add_node({x=pos.x+rad, y=pos.y+size-i, z=pos.z+rad}, {name="trees:leaves_conifer"})
|
||||
minetest.env:add_node({x=pos.x+rad, y=pos.y+size-i, z=pos.z-rad}, {name="trees:leaves_conifer"})
|
||||
minetest.env:add_node({x=pos.x-rad, y=pos.y+size-i, z=pos.z+rad}, {name="trees:leaves_conifer"})
|
||||
minetest.env:add_node({x=pos.x-rad, y=pos.y+size-i, z=pos.z-rad}, {name="trees:leaves_conifer"})
|
||||
i = i + 1
|
||||
rad = rad + 1
|
||||
minetest.env:add_node({x=pos.x+rad, y=pos.y+size-i, z=pos.z+rad}, {name="trees:leaves_conifer"})
|
||||
minetest.env:add_node({x=pos.x+rad, y=pos.y+size-i, z=pos.z-rad}, {name="trees:leaves_conifer"})
|
||||
minetest.env:add_node({x=pos.x-rad, y=pos.y+size-i, z=pos.z+rad}, {name="trees:leaves_conifer"})
|
||||
minetest.env:add_node({x=pos.x-rad, y=pos.y+size-i, z=pos.z-rad}, {name="trees:leaves_conifer"})
|
||||
end
|
||||
end
|
||||
minetest.env:add_node(spawn, {name="trees:tree_conifer"})
|
||||
end
|
||||
end
|
||||
--nodes
|
||||
minetest.register_node("trees:tree_conifer", {
|
||||
description = "Conifer trunk",
|
||||
tile_images = {
|
||||
"conifers_trunktop.png",
|
||||
"conifers_trunktop.png",
|
||||
"conifers_trunk.png",
|
||||
"conifers_trunk.png",
|
||||
"conifers_trunk.png",
|
||||
"conifers_trunk.png"
|
||||
},
|
||||
is_ground_content = true,
|
||||
groups = {
|
||||
tree = 1,
|
||||
snappy = 2,
|
||||
choppy = 2,
|
||||
oddly_breakable_by_hand = 1,
|
||||
flammable = 2
|
||||
},
|
||||
sounds = default.node_sound_wood_defaults()
|
||||
})
|
||||
|
||||
minetest.register_node("trees:leaves_conifer", {
|
||||
description = "Conifer leaves",
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.3,
|
||||
tile_images = { "conifers_leaves.png" },
|
||||
--inventory_image = "conifers_leaves.png",
|
||||
paramtype = "light",
|
||||
groups = {
|
||||
snappy = 3,
|
||||
leafdecay = 3,
|
||||
flammable = 2
|
||||
},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
-- player will get sapling with 1/20 chance
|
||||
items = {'trees:sapling_conifer'},
|
||||
rarity = 20,
|
||||
},
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
||||
})
|
||||
|
||||
minetest.register_node("trees:sapling_conifer", {
|
||||
description = "Conifer sapling",
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tile_images = {"conifers_sapling.png"},
|
||||
inventory_image = "conifers_sapling.png",
|
||||
wield_image = "conifers_sapling.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
groups = {
|
||||
snappy = 2,
|
||||
dig_immediate = 3,
|
||||
flammable = 2
|
||||
},
|
||||
sounds = default.node_sound_defaults(),
|
||||
})
|
||||
-- abm
|
||||
minetest.register_abm({
|
||||
nodenames = "trees:sapling_conifer",
|
||||
interval = INTERVAL,
|
||||
chance = SAPLING_CHANCE,
|
||||
|
||||
action = function(pos, node, _, _)
|
||||
if minetest.env:get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then
|
||||
conifers:make_conifer({x = pos.x, y = pos.y, z = pos.z}, math.random(0, 1))
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
--spawn
|
||||
plantslib:register_generate_plant({
|
||||
surface = {"default:dirt", "default:dirt_with_grass", "snow:dirt_with_snow", "snow:snow"},
|
||||
max_count = 30,
|
||||
avoid_nodes = {"group:tree"},
|
||||
avoid_radius = 2,
|
||||
rarity = 50,
|
||||
seed_diff = 777,
|
||||
min_elevation = -1,
|
||||
max_elevation = 100,
|
||||
plantlife_limit = -0.6,
|
||||
humidity_max = -1,
|
||||
humidity_min = 0.2,
|
||||
temp_max = 0,
|
||||
temp_min = -0.8,
|
||||
},
|
||||
"abstract_trees.grow_conifertree"
|
||||
)
|
|
@ -0,0 +1,2 @@
|
|||
default
|
||||
plants_lib
|
|
@ -0,0 +1,21 @@
|
|||
abstrac_trees.add_tree_branch = function(pos, leaves)
|
||||
local leave = "jungletree:leaves_"..leaves[math.random(1,3)]
|
||||
minetest.env:add_node(pos, {name="default:jungletree"})
|
||||
for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do
|
||||
for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do
|
||||
local p = {x=pos.x+i, y=pos.y, z=pos.z+k}
|
||||
local n = minetest.env:get_node(p)
|
||||
if (n.name=="air") then
|
||||
minetest.env:add_node(p, {name=leave})
|
||||
end
|
||||
local chance = math.abs(i+k)
|
||||
if (chance < 1) then
|
||||
p = {x=pos.x+i, y=pos.y+1, z=pos.z+k}
|
||||
n = minetest.env:get_node(p)
|
||||
if (n.name=="air") then
|
||||
minetest.env:add_node(p, {name=leave})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,19 @@
|
|||
abstract_trees = {}
|
||||
|
||||
dofile(minetest.get_modpath("trees").."/jungletree.lua")
|
||||
dofile(minetest.get_modpath("trees").."/mangrovetree.lua")
|
||||
dofile(minetest.get_modpath("trees").."/palmtree.lua")
|
||||
dofile(minetest.get_modpath("trees").."/conifertree.lua")
|
||||
|
||||
--testing tool
|
||||
minetest.register_tool("trees:drawer", {
|
||||
description = "palmtree spawner",
|
||||
inventory_image = "default_stick.png",
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.under then
|
||||
local height = 4+math.ceil(math.random(11))
|
||||
abstract_trees.grow_conifertree(pointed_thing.above, height)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
local function add_tree_branch(pos)
|
||||
--chooze random leave
|
||||
local leaves = {"green","yellow","red"}
|
||||
local leave = "trees:leaves_"..leaves[math.random(1,3)]
|
||||
minetest.env:add_node(pos, {name="default:jungletree"})
|
||||
for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do
|
||||
for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do
|
||||
local p = {x=pos.x+i, y=pos.y, z=pos.z+k}
|
||||
local n = minetest.env:get_node(p)
|
||||
if (n.name=="air") then
|
||||
minetest.env:add_node(p, {name=leave})
|
||||
end
|
||||
local chance = math.abs(i+k)
|
||||
if (chance < 1) then
|
||||
p = {x=pos.x+i, y=pos.y+1, z=pos.z+k}
|
||||
n = minetest.env:get_node(p)
|
||||
if (n.name=="air") then
|
||||
minetest.env:add_node(p, {name=leave})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
abstract_trees.grow_jungletree = function(pos)
|
||||
local size = 5+math.random(6)
|
||||
if size < 8 then
|
||||
for i = size, -2, -1 do
|
||||
local p = {x=pos.x, y=pos.y+i, z=pos.z}
|
||||
minetest.env:add_node(p, {name="default:jungletree"})
|
||||
if i == size then
|
||||
add_tree_branch({x=pos.x, y=pos.y+size+math.random(0, 1), z=pos.z})
|
||||
add_tree_branch({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z})
|
||||
add_tree_branch({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z})
|
||||
add_tree_branch({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1})
|
||||
add_tree_branch({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1})
|
||||
end
|
||||
if i < 0 then
|
||||
minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="default:jungletree"})
|
||||
end
|
||||
if (math.sin(i/size*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then
|
||||
branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)}
|
||||
add_tree_branch(branch_pos)
|
||||
end
|
||||
end
|
||||
else
|
||||
for i = size, -1, -1 do
|
||||
if (math.sin(i/size*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then
|
||||
branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)}
|
||||
add_tree_branch(branch_pos)
|
||||
end
|
||||
if i < math.random(0,1) then
|
||||
minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="default:jungletree"})
|
||||
end
|
||||
if i == size then
|
||||
add_tree_branch({x=pos.x+1, y=pos.y+i, z=pos.z+1})
|
||||
add_tree_branch({x=pos.x+2, y=pos.y+i, z=pos.z-1})
|
||||
add_tree_branch({x=pos.x, y=pos.y+i, z=pos.z-2})
|
||||
add_tree_branch({x=pos.x-1, y=pos.y+i, z=pos.z})
|
||||
add_tree_branch({x=pos.x+1, y=pos.y+i, z=pos.z+2})
|
||||
add_tree_branch({x=pos.x+3, y=pos.y+i, z=pos.z-1})
|
||||
add_tree_branch({x=pos.x, y=pos.y+i, z=pos.z-3})
|
||||
add_tree_branch({x=pos.x-2, y=pos.y+i, z=pos.z})
|
||||
add_tree_branch({x=pos.x+1, y=pos.y+i, z=pos.z})
|
||||
add_tree_branch({x=pos.x+1, y=pos.y+i, z=pos.z-1})
|
||||
add_tree_branch({x=pos.x, y=pos.y+i, z=pos.z-1})
|
||||
add_tree_branch({x=pos.x, y=pos.y+i, z=pos.z})
|
||||
else
|
||||
minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="default:jungletree"})
|
||||
minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="default:jungletree"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--nodes
|
||||
local leaves = {"green","yellow","red"}
|
||||
for color = 1, 3 do
|
||||
local leave_name = "trees:leaves_"..leaves[color]
|
||||
minetest.register_node(leave_name, {
|
||||
description = "Jungle Tree Leaves",
|
||||
drawtype = "allfaces_optional",
|
||||
tiles = {"trees_leaves_"..leaves[color]..".png"},
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, leafdecay=3, flammable=2},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'trees:jungletree_sapling'},rarity = 20},
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_node("trees:jungletree_sapling", {
|
||||
description = "Jungle Tree Sapling",
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"trees_jungletree_sapling.png"},
|
||||
inventory_image = "trees_jungletree_sapling.png",
|
||||
wield_image = "trees_jungletree_sapling.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
groups = {snappy=2,dig_immediate=3,flammable=2},
|
||||
})
|
||||
|
||||
--abm
|
||||
minetest.register_abm({
|
||||
nodenames = {"trees:jungletree_sapling"},
|
||||
interval = 5,
|
||||
chance = 2,
|
||||
action = function(pos, node)
|
||||
abstract_trees.grow_jungletree(pos)
|
||||
end,
|
||||
})
|
||||
|
||||
--spawn
|
||||
plantslib:register_generate_plant({
|
||||
surface = "default:dirt_with_grass",
|
||||
max_count = 30,
|
||||
avoid_nodes = {"group:tree"},
|
||||
avoid_radius = 2,
|
||||
rarity = 40,
|
||||
seed_diff = 112,
|
||||
min_elevation = -1,
|
||||
max_elevation = 40,
|
||||
plantlife_limit = -0.6,
|
||||
humidity_max = -0.9,
|
||||
humidity_min = 0.4,
|
||||
temp_max = -0.9,
|
||||
temp_min = 0,
|
||||
},
|
||||
"abstract_trees.grow_jungletree"
|
||||
)
|
|
@ -0,0 +1,127 @@
|
|||
--function
|
||||
local function add_leaves(pos, leave)
|
||||
for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do
|
||||
for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do
|
||||
for n = math.floor(math.random(1)), 0, -1 do
|
||||
local p = {x=pos.x+i, y=pos.y+n, z=pos.z+k}
|
||||
local n = minetest.env:get_node(p)
|
||||
if (n.name=="air") then
|
||||
minetest.env:add_node(p, {name=leave})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
abstract_trees.grow_mangrovetree = function(pos)
|
||||
local size = 6+math.random(6)
|
||||
local trunk_node
|
||||
local leaves_node
|
||||
if math.ceil(math.random(2)) == 1 then
|
||||
trunk_node = "trees:tree_dead_mangrove"
|
||||
leaves_node = "trees:leaves_dead_mangrove"
|
||||
else
|
||||
trunk_node = "trees:tree_mangrove"
|
||||
leaves_node = "trees:leaves_mangrove"
|
||||
end
|
||||
local top = {x=pos.x, y=pos.y+size, z=pos.z}
|
||||
if math.ceil(math.random(2)) == 1 then
|
||||
minetest.env:add_node({x=top.x+1, y=top.y, z=top.z}, {name=trunk_node})
|
||||
add_leaves({x=top.x+1, y=top.y, z=top.z},leaves_node)
|
||||
minetest.env:add_node({x=top.x-1, y=top.y, z=top.z}, {name=trunk_node})
|
||||
add_leaves({x=top.x-1, y=top.y, z=top.z},leaves_node)
|
||||
else
|
||||
minetest.env:add_node({x=top.x, y=top.y, z=top.z-1}, {name=trunk_node})
|
||||
add_leaves({x=top.x, y=top.y, z=top.z-1},leaves_node)
|
||||
minetest.env:add_node({x=top.x, y=top.y, z=top.z+1}, {name=trunk_node})
|
||||
add_leaves({x=top.x, y=top.y, z=top.z+1},leaves_node)
|
||||
end
|
||||
for i=1, size, 1 do
|
||||
if math.ceil(math.random(2)) == 1 then
|
||||
local dir = {
|
||||
x=math.ceil(math.random(3))-2,
|
||||
y=math.ceil(math.random(3))-2,
|
||||
z=math.ceil(math.random(3))-2,
|
||||
}
|
||||
if i > size/2 then
|
||||
minetest.env:add_node({x=pos.x+dir.x, y=top.y-i, z=pos.z+dir.z}, {name=leaves_node})
|
||||
else
|
||||
minetest.env:add_node({x=pos.x+dir.x*2, y=top.y-i, z=pos.z+dir.z*2}, {name=leaves_node})
|
||||
minetest.env:add_node({x=pos.x+dir.x, y=top.y-i, z=pos.z+dir.z}, {name=trunk_node})
|
||||
end
|
||||
end
|
||||
minetest.env:add_node({x=top.x, y=top.y-i, z=top.z}, {name=trunk_node})
|
||||
end
|
||||
minetest.env:add_node({x=pos.x-1, y=pos.y, z=pos.z}, {name=trunk_node})
|
||||
minetest.env:add_node({x=pos.x+1, y=pos.y, z=pos.z}, {name=trunk_node})
|
||||
minetest.env:add_node({x=pos.x, y=pos.y, z=pos.z+1}, {name=trunk_node})
|
||||
minetest.env:add_node({x=pos.x, y=pos.y, z=pos.z-1}, {name=trunk_node})
|
||||
end
|
||||
--nodes
|
||||
name = "dead_mangrove"
|
||||
minetest.register_node("trees:leaves_"..name, {
|
||||
description = name.. " Leaves",
|
||||
drawtype = "allfaces_optional",
|
||||
tiles = {"trees_leaves_"..name..".png"},
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, leafdecay=3, flammable=2},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
minetest.register_node("trees:tree_"..name, {
|
||||
description = name.. " Tree",
|
||||
tiles = {"trees_tree_top_"..name..".png", "trees_tree_top_"..name..".png", "trees_tree_"..name..".png"},
|
||||
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
name = "mangrove"
|
||||
minetest.register_node("trees:leaves_"..name, {
|
||||
description = name.. " Leaves",
|
||||
drawtype = "allfaces_optional",
|
||||
tiles = {"trees_leaves_"..name..".png"},
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, leafdecay=3, flammable=2},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'jungletree:sapling'},rarity = 20},
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
minetest.register_node("trees:tree_"..name, {
|
||||
description = name.. " Tree",
|
||||
tiles = {"trees_tree_top_"..name..".png", "trees_tree_top_"..name..".png", "trees_tree_"..name..".png"},
|
||||
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
minetest.register_node("trees:wood_"..name, {
|
||||
description = name.. " Wood",
|
||||
tiles = {"trees_wood_"..name..".png"},
|
||||
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
--spawning
|
||||
plantslib:register_generate_plant({
|
||||
surface = "default:dirt",
|
||||
max_count = 30,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 1,
|
||||
near_nodes_vertical = 3,
|
||||
near_nodes_count = 6,
|
||||
avoid_nodes = {"group:tree", "default:sand"},
|
||||
avoid_radius = 3,
|
||||
rarity = 50,
|
||||
seed_diff = 666,
|
||||
min_elevation = -3,
|
||||
max_elevation = 2,
|
||||
plantlife_limit = -0.5,
|
||||
check_air = false,
|
||||
humidity_max = -1,
|
||||
humidity_min = 0.5,
|
||||
temp_max = -0.8,
|
||||
temp_min = 0,
|
||||
},
|
||||
"abstract_trees.grow_mangrovetree"
|
||||
)
|
||||
|
||||
--abstract_trees.grow_mangrovetree(pointed_thing.above, height)
|
|
@ -0,0 +1,36 @@
|
|||
abstract_trees.trees_register_nodes_tree = function(name)
|
||||
|
||||
minetest.register_node("trees:leaves_"..name, {
|
||||
description = name.. " Leaves",
|
||||
drawtype = "allfaces_optional",
|
||||
tiles = {"trees_leaves_"..name..".png"},
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, leafdecay=3, flammable=2},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'jungletree:sapling'},rarity = 20},
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("trees:tree_"..name, {
|
||||
description = name.. " Tree",
|
||||
|
||||
tiles = {"trees_tree_top_"..name..".png", "trees_tree_top_"..name..".png", "trees_tree_"..name..".png"},
|
||||
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("trees:wood_"..name, {
|
||||
description = name.. " Wood",
|
||||
tiles = {"trees_wood_"..name..".png"},
|
||||
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
abstract_trees.trees_register_nodes_tree("palm")
|
||||
abstract_trees.trees_register_nodes_tree("mangrove")
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
--function
|
||||
abstract_trees.grow_palmtree = function(pos, size)
|
||||
local size = 4+math.random(6)
|
||||
local trunk_section_height = 2
|
||||
local trunk_node = "trees:tree_palm"
|
||||
local leaves_node = "trees:leaves_palm"
|
||||
local offset = {x=pos.x, y=pos.y+size+1, z=pos.z}
|
||||
local total_size = 0
|
||||
local leavetrav = 0
|
||||
for i=0,size/2.5,1 do
|
||||
for ii=0,size/2.5-i,1 do
|
||||
local spawn_pos = {x=offset.x, y=offset.y-i, z=offset.z+leavetrav}
|
||||
minetest.env:add_node(spawn_pos, {name=leaves_node})
|
||||
local spawn_pos = {x=offset.x, y=offset.y-i, z=offset.z-leavetrav}
|
||||
minetest.env:add_node(spawn_pos, {name=leaves_node})
|
||||
local spawn_pos = {x=offset.x+leavetrav, y=offset.y-i, z=offset.z}
|
||||
minetest.env:add_node(spawn_pos, {name=leaves_node})
|
||||
local spawn_pos = {x=offset.x-leavetrav, y=offset.y-i, z=offset.z}
|
||||
minetest.env:add_node(spawn_pos, {name=leaves_node})
|
||||
leavetrav = leavetrav + 1
|
||||
end
|
||||
leavetrav = leavetrav - 1
|
||||
end
|
||||
local offset = {x=pos.x, y=pos.y, z=pos.z}
|
||||
while total_size < size do
|
||||
for i=trunk_section_height-2,trunk_section_height*2-4,1 do
|
||||
if total_size > size then return end
|
||||
local spawn_pos = {x=offset.x, y=pos.y+size-i, z=offset.z}
|
||||
minetest.env:add_node(spawn_pos, {name=trunk_node})
|
||||
total_size = total_size + 1
|
||||
end
|
||||
offset = {x=offset.x+math.ceil(math.random(3))-2, y=offset.y, z=offset.z+math.ceil(math.random(3))-2}
|
||||
trunk_section_height = trunk_section_height * 2 -1
|
||||
end
|
||||
end
|
||||
|
||||
--nodes
|
||||
name = "palm"
|
||||
minetest.register_node("trees:leaves_"..name, {
|
||||
description = name.. " Leaves",
|
||||
drawtype = "allfaces_optional",
|
||||
tiles = {"trees_leaves_palm.png"},
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, flammable=2},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'trees:sapling_palm'},rarity = 20},
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
minetest.register_node("trees:tree_"..name, {
|
||||
description = name.. " Tree",
|
||||
tiles = {"trees_tree_top_"..name..".png", "trees_tree_top_"..name..".png", "trees_tree_"..name..".png"},
|
||||
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
minetest.register_node("trees:wood_"..name, {
|
||||
description = name.. " Wood",
|
||||
tiles = {"trees_wood_"..name..".png"},
|
||||
groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
--spawn
|
||||
plantslib:register_generate_plant({
|
||||
surface = "default:sand",
|
||||
seed_diff = 330,
|
||||
min_elevation = -1,
|
||||
max_elevation = 5,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 15,
|
||||
near_nodes_count = 6,
|
||||
avoid_nodes = {"group:tree"},
|
||||
avoid_radius = 9,
|
||||
plantlife_limit = -0.8,
|
||||
temp_min = 0.15,
|
||||
temp_max = -0.25,
|
||||
rarity = 50,
|
||||
max_count = 10,
|
||||
},
|
||||
"abstract_trees.grow_palmtree"
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
_______ ______ _______ _______ _______
|
||||
| || _ | | || || |
|
||||
|_ _|| | || | ___|| ___|| _____|
|
||||
| | | |_||_ | |___ | |___ | |_____
|
||||
| | | __ || ___|| ___||_____ |
|
||||
| | | | | || |___ | |___ _____| |
|
||||
|___| |___| |_||_______||_______||_______|
|
||||
|
||||
BY: bas080
|
||||
DESCRIPTION: Bigger trees but still tiny trees
|
||||
VERSION: 1.0
|
||||
LICENCE: WTFPL
|
||||
FORUM: http://forum.minetest.net/viewtopic.php?id=2344
|
||||
|
||||
Changelog
|
||||
---------
|
||||
1.0
|
||||
* Trees
|
||||
- Palm
|
||||
- Mangrove
|
||||
- Jungle
|
||||
* Spawning of trees
|
After Width: | Height: | Size: 215 B |
After Width: | Height: | Size: 428 B |
After Width: | Height: | Size: 425 B |
After Width: | Height: | Size: 408 B |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 469 B |
After Width: | Height: | Size: 436 B |
After Width: | Height: | Size: 585 B |
After Width: | Height: | Size: 665 B |
After Width: | Height: | Size: 640 B |
After Width: | Height: | Size: 586 B |
After Width: | Height: | Size: 654 B |
After Width: | Height: | Size: 738 B |
After Width: | Height: | Size: 604 B |
After Width: | Height: | Size: 414 B |