Fix negative offsets not being supported by container[]
[oweals/minetest.git] / builtin / game / falling.lua
index 4806a7427a3f1f373331c4df5a921e34ecc091ef..df213e304f0912ec9df80304a13eca672717e94b 100644 (file)
@@ -52,12 +52,12 @@ core.register_entity(":__builtin:falling_node", {
 
        on_step = function(self, dtime)
                -- Set gravity
-               local acceleration = self.object:getacceleration()
+               local acceleration = self.object:get_acceleration()
                if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then
-                       self.object:setacceleration({x = 0, y = -10, z = 0})
+                       self.object:set_acceleration({x = 0, y = -10, z = 0})
                end
                -- Turn to actual node when colliding with ground, or continue to move
-               local pos = self.object:getpos()
+               local pos = self.object:get_pos()
                -- Position of bottom center point
                local bcp = {x = pos.x, y = pos.y - 0.7, z = pos.z}
                -- 'bcn' is nil for unloaded nodes
@@ -116,7 +116,7 @@ core.register_entity(":__builtin:falling_node", {
                                        local meta = core.get_meta(np)
                                        meta:from_table(self.meta)
                                end
-                               if def.sounds and def.sounds.place and def.sounds.place.name then
+                               if def.sounds and def.sounds.place then
                                        core.sound_play(def.sounds.place, {pos = np})
                                end
                        end
@@ -124,10 +124,10 @@ core.register_entity(":__builtin:falling_node", {
                        core.check_for_falling(np)
                        return
                end
-               local vel = self.object:getvelocity()
+               local vel = self.object:get_velocity()
                if vector.equals(vel, {x = 0, y = 0, z = 0}) then
-                       local npos = self.object:getpos()
-                       self.object:setpos(vector.round(npos))
+                       local npos = self.object:get_pos()
+                       self.object:set_pos(vector.round(npos))
                end
        end
 })
@@ -141,6 +141,11 @@ local function convert_to_falling_node(pos, node)
        local meta = core.get_meta(pos)
        local metatable = meta and meta:to_table() or {}
 
+       local def = core.registered_nodes[node.name]
+       if def and def.sounds and def.sounds.fall then
+               core.sound_play(def.sounds.fall, {pos = pos})
+       end
+
        obj:get_luaentity():set_node(node, metatable)
        core.remove_node(pos)
        return true
@@ -170,6 +175,9 @@ local function drop_attached_node(p)
                drops = drop_stacks
                def.preserve_metadata(pos_copy, node_copy, oldmeta, drops)
        end
+       if def and def.sounds and def.sounds.fall then
+               core.sound_play(def.sounds.fall, {pos = p})
+       end
        core.remove_node(p)
        for _, item in pairs(drops) do
                local pos = {