ShadowNinja
2013-10-03 cda054a9368643e97c514eea43ff43a3e34dc2ab
commit | author | age
ee0765 1 -- Code of rubber tree by PilzAdam
S 2
3 minetest.register_node(":moretrees:rubber_tree_sapling", {
4     description = "Rubber Tree Sapling",
5     drawtype = "plantlike",
6     tiles = {"technic_rubber_sapling.png"},
7     inventory_image = "technic_rubber_sapling.png",
8     wield_image = "technic_rubber_sapling.png",
9     paramtype = "light",
10     walkable = false,
11     groups = {dig_immediate=3, flammable=2},
12     sounds = default.node_sound_defaults(),
13 })
14
15 minetest.register_craft({
16     type = "fuel",
17     recipe = "moretrees:rubber_tree_sapling",
18     burntime = 10
19 })
20
21 minetest.register_node(":moretrees:rubber_tree_trunk", {
22     description = "Rubber Tree",
23     tiles = {"default_tree_top.png", "default_tree_top.png",
24         "technic_rubber_tree_full.png"},
25     groups = {tree=1, snappy=1, choppy=2, oddly_breakable_by_hand=1,
26         flammable=2},
27     drop = "default:tree",
28     sounds = default.node_sound_wood_defaults(),
29 })
30
31 minetest.register_node(":moretrees:rubber_tree_trunk_empty", {
32     tiles = {"default_tree_top.png", "default_tree_top.png",
33         "technic_rubber_tree_empty.png"},
34     groups = {tree=1, snappy=1, choppy=2, oddly_breakable_by_hand=1,
35             flammable=2, not_in_creative_inventory=1},
36     drop = "default:tree",
37     sounds = default.node_sound_wood_defaults(),
38 })
39
40 minetest.register_abm({
41     nodenames = {"moretrees:rubber_tree_trunk_empty"},
42     interval = 60,
43     chance = 15,
44     action = function(pos, node)
45         minetest.set_node(pos, {name="moretrees:rubber_tree_trunk"})
46     end
47 })
48
49 minetest.register_node(":moretrees:rubber_tree_leaves", {
50     drawtype = "allfaces_optional",
51     visual_scale = 1.3,
52     tiles = {"technic_rubber_leaves.png"},
53     paramtype = "light",
54     groups = {snappy=3, leafdecay=3, flammable=2, not_in_creative_inventory=1},
55     drop = {
56         max_items = 1,
57         items = {{
58             items = {"moretrees:rubber_tree_sapling"},
59             rarity = 20,
60         }}
61     },
62     sounds = default.node_sound_leaves_defaults(),
63 })
64
65 technic.rubber_tree_model={
66     axiom = "FFFFA",
67     rules_a = "[&FFBFA]////[&BFFFA]////[&FBFFA]",
68     rules_b = "[&FFA]////[&FFA]////[&FFA]",
69     trunk = "moretrees:rubber_tree_trunk",
70     leaves = "moretrees:rubber_tree_leaves",
71     angle = 35,
72     iterations = 3,
73     random_level = 1,
74     trunk_type = "double",
75     thin_branches = true
76 }
77
78 minetest.register_abm({
79     nodenames = {"moretrees:rubber_tree_sapling"},
80     interval = 60,
81     chance = 20,
82     action = function(pos, node)
83         minetest.remove_node(pos)
84         minetest.spawn_tree(pos, technic.rubber_tree_model)
85     end
86 })
87
88 if technic.config:get_bool("enable_rubber_tree_generation") then
89     minetest.register_on_generated(function(minp, maxp, blockseed)
90         if math.random(1, 100) > 5 then
91             return
92         end
93         local tmp = {
94                 x = (maxp.x - minp.x) / 2 + minp.x,
95                 y = (maxp.y - minp.y) / 2 + minp.y,
96                 z = (maxp.z - minp.z) / 2 + minp.z}
97         local pos = minetest.find_node_near(tmp, maxp.x - minp.x,
98                 {"default:dirt_with_grass"})
99         if pos ~= nil then
100             minetest.spawn_tree({x=pos.x, y=pos.y+1, z=pos.z}, technic.rubber_tree_model)
101         end
102     end)
103 end
104