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