diff --git a/init.lua b/init.lua index a05297e..94af930 100644 --- a/init.lua +++ b/init.lua @@ -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 diff --git a/node_defs.lua b/node_defs.lua index 8e3b21e..396bf67 100644 --- a/node_defs.lua +++ b/node_defs.lua @@ -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: diff --git a/textures/moretrees_apple_tree.png b/textures/moretrees_apple_tree_trunk.png similarity index 100% rename from textures/moretrees_apple_tree.png rename to textures/moretrees_apple_tree_trunk.png diff --git a/textures/moretrees_apple_tree_top.png b/textures/moretrees_apple_tree_trunk_top.png similarity index 100% rename from textures/moretrees_apple_tree_top.png rename to textures/moretrees_apple_tree_trunk_top.png diff --git a/textures/moretrees_beech.png b/textures/moretrees_beech_trunk.png similarity index 100% rename from textures/moretrees_beech.png rename to textures/moretrees_beech_trunk.png diff --git a/textures/moretrees_beech_top.png b/textures/moretrees_beech_trunk_top.png similarity index 100% rename from textures/moretrees_beech_top.png rename to textures/moretrees_beech_trunk_top.png diff --git a/textures/moretrees_birch.png b/textures/moretrees_birch_trunk.png similarity index 100% rename from textures/moretrees_birch.png rename to textures/moretrees_birch_trunk.png diff --git a/textures/moretrees_birch_top.png b/textures/moretrees_birch_trunk_top.png similarity index 100% rename from textures/moretrees_birch_top.png rename to textures/moretrees_birch_trunk_top.png diff --git a/textures/moretrees_fir_trunk_reversed.png b/textures/moretrees_fir_trunk_reversed.png deleted file mode 100644 index 0730e31..0000000 Binary files a/textures/moretrees_fir_trunk_reversed.png and /dev/null differ diff --git a/textures/moretrees_fir_trunktop.png b/textures/moretrees_fir_trunk_top.png similarity index 100% rename from textures/moretrees_fir_trunktop.png rename to textures/moretrees_fir_trunk_top.png diff --git a/textures/moretrees_jungletree_bark.png b/textures/moretrees_jungletree_bark.png deleted file mode 100644 index d826fdd..0000000 Binary files a/textures/moretrees_jungletree_bark.png and /dev/null differ diff --git a/textures/moretrees_jungletree_trunk.png b/textures/moretrees_jungletree_trunk.png new file mode 100644 index 0000000..d8c2635 Binary files /dev/null and b/textures/moretrees_jungletree_trunk.png differ diff --git a/textures/moretrees_jungletree_trunk_top.png b/textures/moretrees_jungletree_trunk_top.png new file mode 100644 index 0000000..805272a Binary files /dev/null and b/textures/moretrees_jungletree_trunk_top.png differ diff --git a/textures/moretrees_oak.png b/textures/moretrees_oak_trunk.png similarity index 100% rename from textures/moretrees_oak.png rename to textures/moretrees_oak_trunk.png diff --git a/textures/moretrees_oak_top.png b/textures/moretrees_oak_trunk_top.png similarity index 100% rename from textures/moretrees_oak_top.png rename to textures/moretrees_oak_trunk_top.png diff --git a/textures/moretrees_palm.png b/textures/moretrees_palm_trunk.png similarity index 100% rename from textures/moretrees_palm.png rename to textures/moretrees_palm_trunk.png diff --git a/textures/moretrees_palm_top.png b/textures/moretrees_palm_trunk_top.png similarity index 100% rename from textures/moretrees_palm_top.png rename to textures/moretrees_palm_trunk_top.png diff --git a/textures/moretrees_pine.png b/textures/moretrees_pine_trunk.png similarity index 100% rename from textures/moretrees_pine.png rename to textures/moretrees_pine_trunk.png diff --git a/textures/moretrees_pine_top.png b/textures/moretrees_pine_trunk_top.png similarity index 100% rename from textures/moretrees_pine_top.png rename to textures/moretrees_pine_trunk_top.png diff --git a/textures/moretrees_rubber_tree.png b/textures/moretrees_rubber_tree_trunk.png similarity index 100% rename from textures/moretrees_rubber_tree.png rename to textures/moretrees_rubber_tree_trunk.png diff --git a/textures/moretrees_rubber_tree_top.png b/textures/moretrees_rubber_tree_trunk_top.png similarity index 100% rename from textures/moretrees_rubber_tree_top.png rename to textures/moretrees_rubber_tree_trunk_top.png diff --git a/textures/moretrees_sequoia.png b/textures/moretrees_sequoia_trunk.png similarity index 100% rename from textures/moretrees_sequoia.png rename to textures/moretrees_sequoia_trunk.png diff --git a/textures/moretrees_sequoia_top.png b/textures/moretrees_sequoia_trunk_top.png similarity index 100% rename from textures/moretrees_sequoia_top.png rename to textures/moretrees_sequoia_trunk_top.png diff --git a/textures/moretrees_spruce.png b/textures/moretrees_spruce_trunk.png similarity index 100% rename from textures/moretrees_spruce.png rename to textures/moretrees_spruce_trunk.png diff --git a/textures/moretrees_spruce_top.png b/textures/moretrees_spruce_trunk_top.png similarity index 100% rename from textures/moretrees_spruce_top.png rename to textures/moretrees_spruce_trunk_top.png diff --git a/textures/moretrees_willow.png b/textures/moretrees_willow_trunk.png similarity index 100% rename from textures/moretrees_willow.png rename to textures/moretrees_willow_trunk.png diff --git a/textures/moretrees_willow_top.png b/textures/moretrees_willow_trunk_top.png similarity index 100% rename from textures/moretrees_willow_top.png rename to textures/moretrees_willow_trunk_top.png diff --git a/tree_models.lua b/tree_models.lua index e9e03e9..01a70f1 100644 --- a/tree_models.lua +++ b/tree_models.lua @@ -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="/",