Modified tree generation and sapling growth calls

to comply with new plantlife API

In addition to that, there have been numerous other, smaller changes:

* Tweaked palm tree model to add coconuts

* Tweaked size of all "fruit" items (really just cones).  Rotated their images
  in inventory and wield.

* Changed descriptions of sideways trunks to "Sideways Xxxx Trunk"

* Tweaked names of jungle tree leaves to be Jungle Tree Leaves (Xxxx)

* Moved jungletree trunk, sideways trunk, sapling into nodedef loop

* Renamed trunks and trunk tops to bear "_trunk" and "_trunk_top" in their
  filenames.

* Added copies of default jungle tree trunks and tops, with naming similar to
  the above change.

* Re-arranged init.lua to put all leaves/needles definitions in one place.

* Deleted some outdated textures.

* combined leaves definitions back into main loop with an exception for
  jungletrees (if that one is called for, it is skipped, because leaves for
  those trees are explicitly defined later)

* Made all leaves drop saplings when dug, 1/20 chance.

* Added leafdecay radii to main tree table but disabled the use of it.  To be
  implemented in the future.  Disabled leaf decay for firs.
This commit is contained in:
Vanessa Ezekowitz 2013-01-24 23:22:46 -05:00
parent 6dc817acb0
commit 4db9b3076d
28 changed files with 117 additions and 265 deletions

View File

@ -59,10 +59,10 @@ minetest.register_alias("mapgen_leaves", "air")
plantslib:register_generate_plant(moretrees.beech_biome, moretrees.beech_model)
]]--
-- sapling growth setup
-- sapling growth
local sapling_interval = 500
local sapling_chance = 10
local sapling_interval = 1
local sapling_chance = 1
for i in ipairs(simple_trees) do
local tree_name = trees[i][1]
@ -71,27 +71,46 @@ for i in ipairs(simple_trees) do
plantslib:dbg(dump(moretrees[tree_biome].surface))
plantslib:grow_plants(
sapling_interval,
sapling_chance,
"moretrees:"..tree_name.."_sapling",
nil,
nil,
moretrees[tree_biome].surface,
nil,
nil,
nil,
nil,
nil,
moretrees[tree_model],
nil
)
plantslib:grow_plants({
grow_delay = sapling_interval,
grow_chance = sapling_chance,
grow_plant = "moretrees:"..tree_name.."_sapling",
grow_nodes = moretrees[tree_biome].surface,
grow_function = moretrees[tree_model],
})
end
plantslib:grow_plants(sapling_interval,sapling_chance,"moretrees:birch_sapling",nil,nil,nil,nil,nil,nil,nil,nil,"moretrees:grow_birch",nil)
plantslib:grow_plants(sapling_interval,sapling_chance,"moretrees:spruce_sapling",nil,nil,nil,nil,nil,nil,nil,nil,"moretrees:grow_spruce",nil)
plantslib:grow_plants(sapling_interval,sapling_chance,"moretrees:fir_sapling",nil,nil,nil,nil,nil,nil,nil,nil,"moretrees:grow_fir",nil)
plantslib:grow_plants(sapling_interval,sapling_chance,"moretrees:jungletree_sapling",nil,nil,nil,nil,nil,nil,nil,nil,"moretrees:grow_jungletree",nil)
plantslib:grow_plants({
grow_delay = sapling_interval,
grow_chance = sapling_chance,
grow_plant = "moretrees:birch_sapling",
grow_nodes = moretrees.birch_biome.surface,
grow_function = "moretrees:grow_birch"
})
plantslib:grow_plants({
grow_delay = sapling_interval,
grow_chance = sapling_chance,
grow_plant = "moretrees:spruce_sapling",
grow_nodes = moretrees.spruce_biome.surface,
grow_function = "moretrees:grow_spruce"
})
plantslib:grow_plants({
grow_delay = sapling_interval,
grow_chance = sapling_chance,
grow_plant = "moretrees:fir_sapling",
grow_nodes = moretrees.fir_biome.surface,
grow_function = "moretrees:grow_fir"
})
plantslib:grow_plants({
grow_delay = sapling_interval,
grow_chance = sapling_chance,
grow_plant = "moretrees:jungletree_sapling",
grow_nodes = moretrees.jungletree_biome.surface,
grow_function = "moretrees:grow_jungletree"
})
-- Code to spawn a birch tree

View File

@ -1,16 +1,3 @@
leaves = {
{"beech", "Beech Leaves"},
{"apple_tree", "Apple Tree Leaves"},
{"oak", "Oak Leaves"},
{"sequoia", "Sequoia Needles"},
{"birch", "Birch Leaves"},
{"palm", "Palm Leaves"},
{"spruce", "Spruce Needles"},
{"pine", "Pine Needles"},
{"willow", "Willow Leaves"},
{"rubber_tree", "Rubber Tree Leaves"},
}
moretrees.avoidnodes = {}
table.insert(moretrees.avoidnodes, "default:jungletree")
@ -21,31 +8,20 @@ table.insert(moretrees.avoidnodes, "moretrees:jungletree_leaves_yellow")
table.insert(moretrees.avoidnodes, "moretrees:fir_trunk")
table.insert(moretrees.avoidnodes, "moretrees:fir_leaves")
table.insert(moretrees.avoidnodes, "moretrees:fir_leaves_bright")
for i in ipairs(leaves) do
local name = leaves[i]
minetest.register_node("moretrees:"..leaves[i][1].."_leaves", {
description = leaves[i][2],
drawtype = "allfaces_optional",
tiles = { "moretrees_"..leaves[i][1].."_leaves.png" },
paramtype = "light",
groups = {tree=1, snappy=3, flammable=2},
sounds = default.node_sound_leaves_defaults(),
})
table.insert(moretrees.avoidnodes, "moretrees:"..leaves[i][1].."_leaves")
end
trees = {
{"beech", "Beech", nil, nil, nil },
{"apple_tree", "Apple Tree", nil, nil, nil },
{"oak", "Oak", "acorn", "Acorn", {-0.2, -0.5, -0.2, 0.2, 0, 0.2} },
{"sequoia", "Sequoia", nil, nil, nil },
{"birch", "Birch", nil, nil, nil },
{"palm", "Palm", "coconut", "Coconut", {-0.2, -0.5, -0.2, 0.2, 0, 0.2} },
{"spruce", "Spruce", "spruce_cone", "Spruce Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2} },
{"pine", "Pine", "pine_cone", "Pine Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2} },
{"willow", "Willow", nil, nil, nil },
{"rubber_tree", "Rubber Tree", nil, nil, nil },
{"beech", "Beech", 4 },
{"apple_tree", "Apple Tree", 10 },
{"oak", "Oak", 10, "acorn", "Acorn", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"sequoia", "Sequoia", 7 },
{"birch", "Birch", 10 },
{"palm", "Palm", 15, "coconut", "Coconut", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 1.0 },
{"spruce", "Spruce", 10, "spruce_cone", "Spruce Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"pine", "Pine", 10, "pine_cone", "Pine Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"willow", "Willow", 15 },
{"rubber_tree", "Rubber Tree", 7 },
{"jungletree", "Jungle Tree"},
{"fir", "Fir", 15, "fir_cone", "Fir Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
}
simple_trees = { "beech", "apple_tree", "oak", "sequoia", "palm", "pine", "willow", "rubber_tree"}
@ -53,18 +29,18 @@ simple_trees = { "beech", "apple_tree", "oak", "sequoia", "palm", "pine", "willo
for i in ipairs(trees) do
local treename = trees[i][1]
local treedesc = trees[i][2]
local fruit = trees[i][3]
local fruitdesc = trees[i][4]
local selbox = trees[i][5]
table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_trunk")
local leafdecayradius = trees[i][3] -- future use, not yet implemented.
local fruit = trees[i][4]
local fruitdesc = trees[i][5]
local selbox = trees[i][6]
local vscale = trees[i][7]
minetest.register_node("moretrees:"..treename.."_trunk", {
description = treedesc.." Trunk",
description = treedesc.." Tree Trunk",
tiles = {
"moretrees_"..treename.."_top.png",
"moretrees_"..treename.."_top.png",
"moretrees_"..treename..".png"
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk.png"
},
is_ground_content = true,
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
@ -72,14 +48,14 @@ for i in ipairs(trees) do
})
minetest.register_node("moretrees:"..treename.."_trunk_sideways", {
description = treedesc.." Trunk (sideways)",
description = "Sideways "..treedesc.." Tree Trunk",
tiles = {
"moretrees_"..treename..".png^[transformR90",
"moretrees_"..treename..".png^[transformR90",
"moretrees_"..treename.."_top.png",
"moretrees_"..treename.."_top.png",
"moretrees_"..treename..".png^[transformR90",
"moretrees_"..treename..".png^[transformR90"
"moretrees_"..treename.."_trunk.png^[transformR90",
"moretrees_"..treename.."_trunk.png^[transformR90",
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk.png^[transformR90",
"moretrees_"..treename.."_trunk.png^[transformR90"
},
is_ground_content = true,
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
@ -87,7 +63,7 @@ for i in ipairs(trees) do
})
minetest.register_node("moretrees:"..treename.."_planks", {
description = treedesc.." Planks",
description = treedesc.." Beech Planks",
tiles = {"moretrees_"..treename.."_wood.png"},
is_ground_content = true,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
@ -95,7 +71,7 @@ for i in ipairs(trees) do
})
minetest.register_node("moretrees:"..treename.."_sapling", {
description = treedesc.." Sapling",
description = treedesc.." Tree Sapling",
drawtype = "plantlike",
tiles = {"moretrees_"..treename.."_sapling.png"},
inventory_image = "moretrees_"..treename.."_sapling.png",
@ -114,7 +90,9 @@ for i in ipairs(trees) do
description = fruitdesc,
drawtype = "plantlike",
tiles = { "moretrees_"..fruit..".png" },
inventory_image = "moretrees_"..fruit..".png",
inventory_image = "moretrees_"..fruit..".png^[transformR180",
wield_image = "moretrees_"..fruit..".png^[transformR180",
visual_scale = vscale,
paramtype = "light",
sunlight_propagates = true,
walkable = false,
@ -127,165 +105,61 @@ for i in ipairs(trees) do
})
end
-- player will get sapling with 1/20 chance
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
if treename ~= "jungletree" then
minetest.register_node("moretrees:"..treename.."_leaves", {
description = treedesc.." Tree Leaves",
drawtype = "allfaces_optional",
tiles = { "moretrees_"..treename.."_leaves.png" },
paramtype = "light",
groups = {tree=1, snappy=3, flammable=2 },
sounds = default.node_sound_leaves_defaults(),
-- player will get sapling with 1/20 chance
-- player will get leaves only if he/she gets no
-- saplings, because max_items is 1.
drop = {
max_items = 1,
items = {
{items = {"moretrees:"..treename.."_sapling"}, rarity = 20 },
{items = {"moretrees:"..treename.."_leaves"} }
}
},
})
end
table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_trunk")
table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_leaves")
end
-- Nodes for jungle trees
-- Extra leaves for jungle trees:
minetest.register_node("moretrees:jungletree_sapling", {
description = "Jungle Tree Sapling",
drawtype = "plantlike",
tiles = {"moretrees_jungletree_sapling.png"},
inventory_image = "moretrees_jungletree_sapling.png",
paramtype = "light",
walkable = false,
groups = {snappy=2,dig_immediate=3,flammable=2},
})
minetest.register_node("moretrees:jungletree_trunk", {
description = "Jungle Tree trunk (sideways)",
tiles = {
"default_jungletree_top.png",
"default_jungletree_top.png",
"default_jungletree.png",
"default_jungletree.png",
"default_jungletree.png",
"default_jungletree.png"
},
groups = {wood=1,snappy=2,dig_immediate=3,flammable=2},
})
minetest.register_node("moretrees:jungletree_planks", {
description = "Jungle Tree Planks",
tiles = {
"moretrees_jungletree_wood.png",
},
groups = {wood=1,snappy=2,dig_immediate=3,flammable=2},
})
minetest.register_node("moretrees:jungletree_trunk_sideways", {
description = "Jungle Tree trunk (sideways)",
tiles = {
"default_jungletree.png^[transformR90",
"default_jungletree.png^[transformR90",
"default_jungletree_top.png",
"default_jungletree_top.png",
"default_jungletree.png^[transformR90",
"default_jungletree.png^[transformR90"
},
groups = {wood=1,snappy=2,dig_immediate=3,flammable=2},
})
local leaves = {"green","yellow","red"}
local jungleleaves = {"green","yellow","red"}
local jungleleavesnames = {"Green", "Yellow", "Red"}
for color = 1, 3 do
local leave_name = "moretrees:jungletree_leaves_"..leaves[color]
local leave_name = "moretrees:jungletree_leaves_"..jungleleaves[color]
minetest.register_node(leave_name, {
description = "Jungle Tree Leaves",
description = "Jungle Tree Leaves ("..jungleleavesnames[color]..")",
drawtype = "allfaces_optional",
tiles = {"moretrees_jungletree_leaves_"..leaves[color]..".png"},
tiles = {"moretrees_jungletree_leaves_"..jungleleaves[color]..".png"},
paramtype = "light",
groups = {snappy=3, leafdecay=3, flammable=2},
groups = {snappy=3, flammable=2},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/20 chance
items = {'moretrees:jungletree_sapling'},
rarity = 20,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {"moretrees:jungletree_leaves_"..leaves[color]},
}
{items = {'moretrees:jungletree_sapling'}, rarity = 20 },
{items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} }
}
},
sounds = default.node_sound_leaves_defaults(),
})
end
-- Nodes for firs
minetest.register_node("moretrees:fir_trunk", {
description = "Fir trunk",
tile_images = {
"moretrees_fir_trunktop.png",
"moretrees_fir_trunktop.png",
"moretrees_fir_trunk.png",
"moretrees_fir_trunk.png",
"moretrees_fir_trunk.png",
"moretrees_fir_trunk.png"
},
is_ground_content = true,
groups = {
tree = 1,
snappy = 2,
choppy = 2,
oddly_breakable_by_hand = 1,
flammable = 2,
wood = 1
},
sounds = default.node_sound_wood_defaults()
})
minetest.register_node("moretrees:fir_trunk_sideways", {
description = "Fir Trunk (sideways)",
tile_images = {
"moretrees_fir_trunk.png^[transformR90",
"moretrees_fir_trunk.png^[transformR90",
"moretrees_fir_trunktop.png",
"moretrees_fir_trunktop.png",
"moretrees_fir_trunk.png^[transformR90",
"moretrees_fir_trunk.png^[transformR90"
},
paramtype2 = "facedir",
material = minetest.digprop_woodlike(1.0),
groups = {
tree = 1,
snappy = 2,
choppy = 2,
oddly_breakable_by_hand = 1,
flammable = 2,
wood = 1
},
sounds = default.node_sound_wood_defaults()
})
minetest.register_node("moretrees:fir_planks", {
description = "Fir Planks",
tiles = {
"moretrees_fir_wood.png",
},
groups = {wood=1,snappy=2,dig_immediate=3,flammable=2},
})
minetest.register_node("moretrees:fir_leaves", {
drawtype = "allfaces_optional",
description = "Fir Leaves",
tile_images = { "moretrees_fir_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 = {'moretrees:fir_sapling'},
rarity = 20,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'moretrees:fir_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults()
})
-- Extra needles for firs
minetest.register_node("moretrees:fir_leaves_bright", {
drawtype = "allfaces_optional",
@ -293,59 +167,18 @@ minetest.register_node("moretrees:fir_leaves_bright", {
tile_images = { "moretrees_fir_leaves_bright.png" },
paramtype = "light",
groups = {
snappy = 3,
leafdecay = 3,
flammable = 2
},
groups = {snappy=3, flammable=2 },
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/20 chance
items = {'moretrees:fir_sapling'},
rarity = 20,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'moretrees:fir_leaves'},
}
{items = {'moretrees:fir_sapling'}, rarity = 20 },
{items = {'moretrees:fir_leaves'} }
}
},
sounds = default.node_sound_leaves_defaults()
})
minetest.register_node("moretrees:fir_sapling", {
description = "Fir sapling",
drawtype = "plantlike",
tile_images = {"moretrees_fir_sapling.png"},
inventory_image = "moretrees_fir_sapling.png",
paramtype = "light",
walkable = false,
groups = {
snappy = 2,
dig_immediate = 3,
flammable = 2
},
sounds = default.node_sound_defaults(),
})
minetest.register_node("moretrees:fir_cone", {
description = "Fir cone",
drawtype = "plantlike",
tiles = {"moretrees_fir_cone.png"},
inventory_image = "moretrees_fir_cone.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
groups = {fleshy=3,dig_immediate=3,flammable=2},
sounds = default.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
},
})
-- Backward compatbility with old mods/nodes:

View File

Before

Width:  |  Height:  |  Size: 754 B

After

Width:  |  Height:  |  Size: 754 B

View File

Before

Width:  |  Height:  |  Size: 800 B

After

Width:  |  Height:  |  Size: 800 B

View File

Before

Width:  |  Height:  |  Size: 706 B

After

Width:  |  Height:  |  Size: 706 B

View File

Before

Width:  |  Height:  |  Size: 843 B

After

Width:  |  Height:  |  Size: 843 B

View File

Before

Width:  |  Height:  |  Size: 989 B

After

Width:  |  Height:  |  Size: 989 B

View File

Before

Width:  |  Height:  |  Size: 830 B

After

Width:  |  Height:  |  Size: 830 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

View File

Before

Width:  |  Height:  |  Size: 768 B

After

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

View File

Before

Width:  |  Height:  |  Size: 816 B

After

Width:  |  Height:  |  Size: 816 B

View File

Before

Width:  |  Height:  |  Size: 792 B

After

Width:  |  Height:  |  Size: 792 B

View File

Before

Width:  |  Height:  |  Size: 640 B

After

Width:  |  Height:  |  Size: 640 B

View File

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 738 B

View File

Before

Width:  |  Height:  |  Size: 872 B

After

Width:  |  Height:  |  Size: 872 B

View File

Before

Width:  |  Height:  |  Size: 777 B

After

Width:  |  Height:  |  Size: 777 B

View File

Before

Width:  |  Height:  |  Size: 808 B

After

Width:  |  Height:  |  Size: 808 B

View File

Before

Width:  |  Height:  |  Size: 791 B

After

Width:  |  Height:  |  Size: 791 B

View File

Before

Width:  |  Height:  |  Size: 508 B

After

Width:  |  Height:  |  Size: 508 B

View File

Before

Width:  |  Height:  |  Size: 787 B

After

Width:  |  Height:  |  Size: 787 B

View File

Before

Width:  |  Height:  |  Size: 699 B

After

Width:  |  Height:  |  Size: 699 B

View File

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 738 B

View File

Before

Width:  |  Height:  |  Size: 510 B

After

Width:  |  Height:  |  Size: 510 B

View File

Before

Width:  |  Height:  |  Size: 805 B

After

Width:  |  Height:  |  Size: 805 B

View File

@ -89,7 +89,7 @@ moretrees.birch_model2={
}
moretrees.palm_model={
axiom="FFccc&FFFFFdddFA//A//A//A//A//A",
axiom="FFcccccc&FFFFFddd[^&&&GR][^///&&&GR][^//////&&&GR][^***&&&GR]FA//A//A//A//A//A",
rules_a="[&fb&bbb[++f--&ffff&ff][--f++&ffff&ff]&ffff&bbbb&b]",
rules_b="f",
rules_c="/",