diff options
Diffstat (limited to 'node_defs.lua')
-rw-r--r-- | node_defs.lua | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/node_defs.lua b/node_defs.lua new file mode 100644 index 0000000..0ba7ae7 --- /dev/null +++ b/node_defs.lua @@ -0,0 +1,287 @@ +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"}, +} + +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", + visual_scale = 1.3, + tiles = { "moretrees_"..leaves[i][1].."_leaves.png" }, + paramtype = "light", + groups = {tree=1, snappy=3, flammable=2}, + sounds = default.node_sound_leaves_defaults(), + }) + 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 }, +} + +moretrees.avoidnodes = {} + +table.insert(moretrees.avoidnodes, "default:jungletree") +table.insert(moretrees.avoidnodes, "jungletree:sapling") +table.insert(moretrees.avoidnodes, "conifers:trunk") +table.insert(moretrees.avoidnodes, "conifers:sapling") + +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") + table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling") + + minetest.register_node("moretrees:"..treename.."_trunk", { + description = treedesc.." Trunk", + tiles = { + "moretrees_"..treename.."_top.png", + "moretrees_"..treename.."_top.png", + "moretrees_"..treename..".png" + }, + is_ground_content = true, + groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + }) + + minetest.register_node("moretrees:"..treename.."_planks", { + description = treedesc.." Planks", + tiles = {"moretrees_"..treename.."_wood.png"}, + is_ground_content = true, + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, + sounds = default.node_sound_wood_defaults(), + }) + + minetest.register_node("moretrees:"..treename.."_sapling", { + description = treedesc.." Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"moretrees_"..treename.."_sapling.png"}, + inventory_image = "moretrees_"..treename.."_sapling.png", + wield_image = "moretrees_"..treename.."_sapling.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1}, + sounds = default.node_sound_defaults(), + }) + + if (fruit ~= nil) then + minetest.register_node("moretrees:"..fruit, { + description = fruitdesc, + drawtype = "plantlike", + visual_scale = 0.8, + tiles = { "moretrees_"..fruit..".png" }, + inventory_image = "moretrees_"..fruit..".png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = selbox + }, + groups = {fleshy=3,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), + }) + end + +end + +--- For backward compatibility, jungle trees and firs ("conifers") are defined +--- separately. + +-- Nodes for jungle trees + +minetest.register_node(":jungletree:sapling", { + description = "Jungle Tree Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"jungletree_sapling.png"}, + inventory_image = "jungletree_sapling.png", + wield_image = "default_sapling.png", + paramtype = "light", + walkable = false, + groups = {snappy=2,dig_immediate=3,flammable=2}, +}) + +local leaves = {"green","yellow","red"} +for color = 1, 3 do + local leave_name = ":jungletree:leaves_"..leaves[color] + minetest.register_node(leave_name, { + description = "Jungle Tree Leaves", + drawtype = "allfaces_optional", + tiles = {"jungletree_leaves_"..leaves[color]..".png"}, + paramtype = "light", + groups = {snappy=3, leafdecay=3, flammable=2}, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'jungletree:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {"jungletree:leaves_"..leaves[color]}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + }) +end + +-- Nodes for conifers + +minetest.register_node(":conifers:trunk", { + description = "Conifer trunk", + tile_images = { + "conifers_trunktop.png", + "conifers_trunktop.png", + "conifers_trunk.png", + "conifers_trunk.png", + "conifers_trunk.png", + "conifers_trunk.png" + }, + paramtype = "facedir_simple", + 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(":conifers:trunk_reversed", { + description = "Conifer reversed trunk", + tile_images = { + "conifers_trunk_reversed.png", + "conifers_trunk_reversed.png", + "conifers_trunktop.png", + "conifers_trunktop.png", + "conifers_trunk_reversed.png", + "conifers_trunk_reversed.png" + }, + --inventory_image = minetest.inventorycube( + --"conifers_trunk.png", + --"conifers_trunktop.png", + --"conifers_trunk.png" + --), + paramtype = "facedir_simple", + material = minetest.digprop_woodlike(1.0), + legacy_facedir_simple = true, + 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(":conifers:leaves", { + description = "Conifer leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tile_images = { "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 = {'conifers:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'conifers:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults() +}) + +minetest.register_node(":conifers:leaves_special", { + description = "Bright conifer leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tile_images = { "conifers_leaves_special.png" }, + paramtype = "light", + groups = { + snappy = 3, + leafdecay = 3, + flammable = 2 + }, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'conifers:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'conifers:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults() +}) + +minetest.register_node(":conifers:sapling", { + 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(), +}) + |