4 --local sapling_min = 120
5 --local sapling_max = 720
7 local function sapling_grow(pos)
8 if minetest.get_node_light(pos, nil) < 10 then
9 --print("failed to grow at "..dump(pos))
12 --print("growing at "..dump(pos))
13 if minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y-1,pos.z)).name, "soil") > 0 then
14 local good_to_grow = true
15 --check if room to grow (leaves or air)
17 local node_name = minetest.get_node(vector.new(pos.x,pos.y+i,pos.z)).name
18 if node_name ~= "air" and node_name ~= "main:leaves" then
22 if good_to_grow == true then
23 minetest.set_node(pos,{name="main:tree"})
24 local schemmy = math.random(1,2)
26 minetest.place_schematic(pos, tree_big,"0",nil,false,"place_center_x, place_center_z")
27 elseif schemmy == 2 then
28 minetest.place_schematic(pos, tree_small,"0",nil,false,"place_center_x, place_center_z")
36 minetest.set_node(vector.new(pos.x,pos.y+i,pos.z),{name="main:tree"})
42 minetest.register_node("main:sapling", {
43 description = "Sapling",
44 drawtype = "plantlike",
45 inventory_image = "sapling.png",
50 is_ground_content = false,
51 tiles = {"sapling.png"},
52 groups = {leaves = 1, plant = 1, axe = 1, hand = 0,instant=1, sapling=1, attached_node=1,flammable=1},
53 sounds = main.dirtSound(),
54 drop = "main:sapling",
55 node_placement_prediction = "",
58 fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
60 on_place = function(itemstack, placer, pointed_thing)
61 if not pointed_thing.type == "node" then
65 local sneak = placer:get_player_control().sneak
66 local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
68 if not sneak and noddef.on_rightclick then
69 minetest.item_place(itemstack, placer, pointed_thing)
73 local buildable = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name].buildable_to
75 if buildable and minetest.get_node_group(minetest.get_node(vector.new(pointed_thing.under.x,pointed_thing.under.y-1,pointed_thing.under.z)).name, "soil") > 0 then
76 return(minetest.item_place(itemstack, placer, pointed_thing))
78 local buildable = minetest.registered_nodes[minetest.get_node(pointed_thing.above).name].buildable_to
79 if buildable and minetest.get_node_group(minetest.get_node(vector.new(pointed_thing.above.x,pointed_thing.above.y-1,pointed_thing.above.z)).name, "soil") > 0 then
80 return(minetest.item_place(itemstack, placer, pointed_thing))
83 local pos = pointed_thing.above
84 if minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y-1,pos.z)).name, "soil") > 0 and minetest.get_node(pointed_thing.above).name == "air" then
85 minetest.set_node(pointed_thing.above, {name="main:sapling"})
86 minetest.sound_play("dirt",{pos=pointed_thing.above})
87 itemstack:take_item(1)
94 --growing abm for sapling
95 minetest.register_abm({
97 nodenames = {"group:sapling"},
98 neighbors = {"group:soil"},
102 action = function(pos)