Correct node definitons for pine saplings and pine needles
[oweals/minetest_game.git] / mods / default / functions.lua
index e62b3d6bacfff27c39b839d10f85f6522ef676ea..ecb7f61226a65fffa605411e0352bcba59c60584 100644 (file)
@@ -40,9 +40,9 @@ end
 function default.node_sound_sand_defaults(table)
        table = table or {}
        table.footstep = table.footstep or
-                       {name="default_sand_footstep", gain=0.5}
+                       {name="default_sand_footstep", gain=0.2}
        table.dug = table.dug or
-                       {name="default_sand_footstep", gain=1.0}
+                       {name="default_sand_footstep", gain=0.4}
        table.place = table.place or
                        {name="default_place_node", gain=1.0}
        default.node_sound_defaults(table)
@@ -64,7 +64,7 @@ function default.node_sound_leaves_defaults(table)
        table.footstep = table.footstep or
                        {name="default_grass_footstep", gain=0.35}
        table.dug = table.dug or
-                       {name="default_grass_footstep", gain=0.85}
+                       {name="default_grass_footstep", gain=0.7}
        table.dig = table.dig or
                        {name="default_dig_crumbly", gain=0.4}
        table.place = table.place or
@@ -126,6 +126,7 @@ function on_punchnode(p, node)
 end
 minetest.register_on_punchnode(on_punchnode)
 
+
 --
 -- Lavacooling
 --
@@ -216,19 +217,21 @@ minetest.register_abm({
 })
 
 --
--- Leafdecay
+-- dig upwards
 --
 
--- 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.
+function default.dig_up(pos, node, digger)
+       if digger == nil then return end
+       local np = {x = pos.x, y = pos.y + 1, z = pos.z}
+       local nn = minetest.get_node(np)
+       if nn.name == node.name then
+               minetest.node_dig(np, nn, digger)
+       end
+end
+
 --
--- 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.
+-- Leafdecay
 --
--- 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
@@ -241,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"},
@@ -295,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
@@ -313,3 +322,4 @@ minetest.register_abm({
                end
        end
 })
+