Correct node definitons for pine saplings and pine needles
[oweals/minetest_game.git] / mods / default / functions.lua
index 80e8c80d1232ad4d15747845721c7d44c1119c80..ecb7f61226a65fffa605411e0352bcba59c60584 100644 (file)
@@ -127,56 +127,6 @@ end
 minetest.register_on_punchnode(on_punchnode)
 
 
---
--- Grow trees
---
-
-minetest.register_abm({
-       nodenames = {"default:sapling"},
-       interval = 10,
-       chance = 50,
-       action = function(pos, node)
-               local nu =  minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
-               local is_soil = minetest.get_item_group(nu, "soil")
-               if is_soil == 0 then
-                       return
-               end
-               
-               minetest.log("action", "A sapling grows into a tree at "..minetest.pos_to_string(pos))
-               local vm = minetest.get_voxel_manip()
-               local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
-               local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
-               local data = vm:get_data()
-               default.grow_tree(data, a, pos, math.random(1, 4) == 1, math.random(1,100000))
-               vm:set_data(data)
-               vm:write_to_map(data)
-               vm:update_map()
-       end
-})
-
-minetest.register_abm({
-       nodenames = {"default:junglesapling"},
-       interval = 10,
-       chance = 50,
-       action = function(pos, node)
-               local nu =  minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
-               local is_soil = minetest.get_item_group(nu, "soil")
-               if is_soil == 0 then
-                       return
-               end
-               
-               minetest.log("action", "A jungle sapling grows into a tree at "..minetest.pos_to_string(pos))
-               local vm = minetest.get_voxel_manip()
-               local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y-1, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
-               local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
-               local data = vm:get_data()
-               default.grow_jungletree(data, a, pos, math.random(1,100000))
-               vm:set_data(data)
-               vm:write_to_map(data)
-               vm:update_map()
-       end
-})
-
 --
 -- Lavacooling
 --
@@ -283,17 +233,6 @@ end
 -- Leafdecay
 --
 
--- To enable leaf decay for a node, add it to the "leafdecay" group.
---
--- The rating of the group determines how far from a node in the group "tree"
--- the node can be without decaying.
---
--- If param2 of the node is ~= 0, the node will always be preserved. Thus, if
--- the player places a node of that kind, you will want to set param2=1 or so.
---
--- If the node is in the leafdecay_drop group then the it will always be dropped
--- as an item
-
 default.leafdecay_trunk_cache = {}
 default.leafdecay_enable_cache = true
 -- Spread the load of finding trunks
@@ -305,6 +244,12 @@ minetest.register_globalstep(function(dtime)
                        math.floor(dtime * finds_per_second)
 end)
 
+default.after_place_leaves = function(pos, placer, itemstack, pointed_thing)
+       local node = minetest.get_node(pos)
+       node.param2 = 1
+       minetest.set_node(pos, node)
+end
+
 minetest.register_abm({
        nodenames = {"group:leafdecay"},
        neighbors = {"air", "group:liquid"},
@@ -359,7 +304,7 @@ minetest.register_abm({
                end
                if not do_preserve then
                        -- Drop stuff other than the node itself
-                       itemstacks = minetest.get_node_drops(n0.name)
+                       local itemstacks = minetest.get_node_drops(n0.name)
                        for _, itemname in ipairs(itemstacks) do
                                if minetest.get_item_group(n0.name, "leafdecay_drop") ~= 0 or
                                                itemname ~= n0.name then