]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/itemhandling/init.lua
Make items remove and get destroyed by fire nodes properly again
[Crafter.git] / mods / itemhandling / init.lua
index ab7421fae475d13ca33aec419e41340d797f00c6..da51fdfd7e0ed64dab64abc2f158420f44be7f95 100644 (file)
@@ -186,9 +186,10 @@ local get_staticdata = function(self)
        })
 end
 
+local data
 local on_activate = function(self, staticdata, dtime_s)
        if string.sub(staticdata, 1, string.len("return")) == "return" then
-               local data = minetest.deserialize(staticdata)
+               data = minetest.deserialize(staticdata)
                if data and type(data) == "table" then
                        self.itemstring = data.itemstring
                        self.age = (data.age or 0) + dtime_s
@@ -258,6 +259,8 @@ local vel
 local def
 local slip_factor
 local change
+local slippery
+local i_node
 local item_step = function(self, dtime, moveresult)
        pos = self.object:get_pos()
        if not pos then
@@ -334,12 +337,15 @@ local item_step = function(self, dtime, moveresult)
                node = nil
        end
        
+
+       i_node = minetest.get_node_or_nil(pos)
+
        -- Remove nodes in 'ignore' and burns items
-       if node then
-               if node.name == "ignore" then
+       if i_node then
+               if i_node.name == "ignore" then
                        self.object:remove()
                        return
-               elseif node and burn_nodes[node.name] then
+               elseif i_node and burn_nodes[i_node.name] then
                        minetest.add_particlespawner({
                                amount = 6,
                                time = 0.001,
@@ -366,7 +372,7 @@ local item_step = function(self, dtime, moveresult)
 
        is_stuck = false
        snode = minetest.get_node_or_nil(pos)
-       if snode ~= "air" then
+       if snode and snode ~= "air" then
                snode = minetest.registered_nodes[snode.name] or {}
                is_stuck = (snode.walkable == nil or snode.walkable == true)
                        and (snode.collision_box == nil or snode.collision_box.type == "regular")