Tweak some textures, new chest texture
[oweals/minetest_game.git] / mods / default / functions.lua
index aa0d4cec41d108947ce15f4783887fd5d6ba3b38..fe553c516eea3393f34cada05759b82c9962a390 100644 (file)
@@ -9,16 +9,18 @@ function default.node_sound_defaults(table)
        table.footstep = table.footstep or
                        {name="", gain=1.0}
        table.dug = table.dug or
-                       {name="default_dug_node", gain=1.0}
+                       {name="default_dug_node", gain=0.25}
        table.place = table.place or
-                       {name="default_place_node", gain=0.5}
+                       {name="default_place_node_hard", gain=1.0}
        return table
 end
 
 function default.node_sound_stone_defaults(table)
        table = table or {}
        table.footstep = table.footstep or
-                       {name="default_hard_footstep", gain=0.2}
+                       {name="default_hard_footstep", gain=0.5}
+       table.dug = table.dug or
+                       {name="default_hard_footstep", gain=1.0}
        default.node_sound_defaults(table)
        return table
 end
@@ -26,9 +28,11 @@ end
 function default.node_sound_dirt_defaults(table)
        table = table or {}
        table.footstep = table.footstep or
-                       {name="", gain=0.5}
-       --table.dug = table.dug or
-       --              {name="default_dirt_break", gain=0.5}
+                       {name="default_dirt_footstep", gain=1.0}
+       table.dug = table.dug or
+                       {name="default_dirt_footstep", gain=1.5}
+       table.place = table.place or
+                       {name="default_place_node", gain=1.0}
        default.node_sound_defaults(table)
        return table
 end
@@ -36,11 +40,11 @@ end
 function default.node_sound_sand_defaults(table)
        table = table or {}
        table.footstep = table.footstep or
-                       {name="default_grass_footstep", gain=0.25}
-       --table.dug = table.dug or
-       --              {name="default_dirt_break", gain=0.25}
+                       {name="default_sand_footstep", gain=0.2}
        table.dug = table.dug or
-                       {name="", gain=0.25}
+                       {name="default_sand_footstep", gain=0.4}
+       table.place = table.place or
+                       {name="default_place_node", gain=1.0}
        default.node_sound_defaults(table)
        return table
 end
@@ -48,7 +52,9 @@ end
 function default.node_sound_wood_defaults(table)
        table = table or {}
        table.footstep = table.footstep or
-                       {name="default_hard_footstep", gain=0.3}
+                       {name="default_wood_footstep", gain=0.5}
+       table.dug = table.dug or
+                       {name="default_wood_footstep", gain=1.0}
        default.node_sound_defaults(table)
        return table
 end
@@ -56,11 +62,13 @@ end
 function default.node_sound_leaves_defaults(table)
        table = table or {}
        table.footstep = table.footstep or
-                       {name="default_grass_footstep", gain=0.25}
+                       {name="default_grass_footstep", gain=0.35}
+       table.dug = table.dug or
+                       {name="default_grass_footstep", gain=0.7}
        table.dig = table.dig or
                        {name="default_dig_crumbly", gain=0.4}
-       table.dug = table.dug or
-                       {name="", gain=1.0}
+       table.place = table.place or
+                       {name="default_place_node", gain=1.0}
        default.node_sound_defaults(table)
        return table
 end
@@ -68,7 +76,7 @@ end
 function default.node_sound_glass_defaults(table)
        table = table or {}
        table.footstep = table.footstep or
-                       {name="default_hard_footstep", gain=0.25}
+                       {name="default_glass_footstep", gain=0.5}
        table.dug = table.dug or
                        {name="default_break_glass", gain=1.0}
        default.node_sound_defaults(table)
@@ -118,16 +126,19 @@ function on_punchnode(p, node)
 end
 minetest.register_on_punchnode(on_punchnode)
 
+
 --
 -- Lavacooling
 --
 
 default.cool_lava_source = function(pos)
-       minetest.env:set_node(pos, {name="default:obsidian"})
+       minetest.set_node(pos, {name="default:obsidian"})
+       minetest.sound_play("default_cool_lava", {pos = pos,  gain = 0.25})
 end
 
 default.cool_lava_flowing = function(pos)
-       minetest.env:set_node(pos, {name="default:stone"})
+       minetest.set_node(pos, {name="default:stone"})
+       minetest.sound_play("default_cool_lava", {pos = pos,  gain = 0.25})
 end
 
 minetest.register_abm({
@@ -161,17 +172,17 @@ minetest.register_abm({
        chance = 20,
        action = function(pos, node)
                pos.y = pos.y-1
-               local name = minetest.env:get_node(pos).name
+               local name = minetest.get_node(pos).name
                if minetest.get_item_group(name, "sand") ~= 0 then
                        pos.y = pos.y+1
                        local height = 0
-                       while minetest.env:get_node(pos).name == "default:cactus" and height < 4 do
+                       while minetest.get_node(pos).name == "default:cactus" and height < 4 do
                                height = height+1
                                pos.y = pos.y+1
                        end
                        if height < 4 then
-                               if minetest.env:get_node(pos).name == "air" then
-                                       minetest.env:set_node(pos, {name="default:cactus"})
+                               if minetest.get_node(pos).name == "air" then
+                                       minetest.set_node(pos, {name="default:cactus"})
                                end
                        end
                end
@@ -185,26 +196,39 @@ minetest.register_abm({
        chance = 20,
        action = function(pos, node)
                pos.y = pos.y-1
-               local name = minetest.env:get_node(pos).name
+               local name = minetest.get_node(pos).name
                if name == "default:dirt" or name == "default:dirt_with_grass" then
-                       if minetest.env:find_node_near(pos, 3, {"group:water"}) == nil then
+                       if minetest.find_node_near(pos, 3, {"group:water"}) == nil then
                                return
                        end
                        pos.y = pos.y+1
                        local height = 0
-                       while minetest.env:get_node(pos).name == "default:papyrus" and height < 4 do
+                       while minetest.get_node(pos).name == "default:papyrus" and height < 4 do
                                height = height+1
                                pos.y = pos.y+1
                        end
                        if height < 4 then
-                               if minetest.env:get_node(pos).name == "air" then
-                                       minetest.env:set_node(pos, {name="default:papyrus"})
+                               if minetest.get_node(pos).name == "air" then
+                                       minetest.set_node(pos, {name="default:papyrus"})
                                end
                        end
                end
        end,
 })
 
+--
+-- dig upwards
+--
+
+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
+
 --
 -- Leafdecay
 --
@@ -246,7 +270,7 @@ minetest.register_abm({
                        --print("not groups.leafdecay")
                        return
                end
-               local n0 = minetest.env:get_node(p0)
+               local n0 = minetest.get_node(p0)
                if n0.param2 ~= 0 then
                        --print("param2 ~= 0")
                        return
@@ -256,7 +280,7 @@ minetest.register_abm({
                        p0_hash = minetest.hash_node_position(p0)
                        local trunkp = default.leafdecay_trunk_cache[p0_hash]
                        if trunkp then
-                               local n = minetest.env:get_node(trunkp)
+                               local n = minetest.get_node(trunkp)
                                local reg = minetest.registered_nodes[n.name]
                                -- Assume ignore is a trunk, to make the thing work at the border of the active area
                                if n.name == "ignore" or (reg and reg.groups.tree and reg.groups.tree ~= 0) then
@@ -274,7 +298,7 @@ minetest.register_abm({
                default.leafdecay_trunk_find_allow_accumulator =
                                default.leafdecay_trunk_find_allow_accumulator - 1
                -- Assume ignore is a trunk, to make the thing work at the border of the active area
-               local p1 = minetest.env:find_node_near(p0, d, {"ignore", "group:tree"})
+               local p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"})
                if p1 then
                        do_preserve = true
                        if default.leafdecay_enable_cache then
@@ -294,12 +318,13 @@ minetest.register_abm({
                                                y = p0.y - 0.5 + math.random(),
                                                z = p0.z - 0.5 + math.random(),
                                        }
-                                       minetest.env:add_item(p_drop, itemname)
+                                       minetest.add_item(p_drop, itemname)
                                end
                        end
                        -- Remove node
-                       minetest.env:remove_node(p0)
+                       minetest.remove_node(p0)
                        nodeupdate(p0)
                end
        end
 })
+