Translated using Weblate (Polish)
[oweals/minetest.git] / builtin / item_entity.lua
index 2d763d50bc77fbaf6c7916171034addb1d0f7b72..46415e53854fa08199ab1ac5bfb8ced3dd57b548 100644 (file)
@@ -57,11 +57,23 @@ minetest.register_entity("__builtin:item", {
        end,
 
        get_staticdata = function(self)
-               return self.itemstring
+               --return self.itemstring
+               return minetest.serialize({
+                       itemstring = self.itemstring,
+                       always_collect = self.always_collect,
+               })
        end,
 
        on_activate = function(self, staticdata)
-               self.itemstring = staticdata
+               if string.sub(staticdata, 1, string.len("return")) == "return" then
+                       local data = minetest.deserialize(staticdata)
+                       if data and type(data) == "table" then
+                               self.itemstring = data.itemstring
+                               self.always_collect = data.always_collect
+                       end
+               else
+                       self.itemstring = staticdata
+               end
                self.object:set_armor_groups({immortal=1})
                self.object:setvelocity({x=0, y=2, z=0})
                self.object:setacceleration({x=0, y=-10, z=0})
@@ -72,8 +84,9 @@ minetest.register_entity("__builtin:item", {
                local p = self.object:getpos()
                p.y = p.y - 0.3
                local nn = minetest.env:get_node(p).name
-               -- If node is not registered or node is walkably solid
-               if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable then
+               -- If node is not registered or node is walkably solid and resting on nodebox
+               local v = self.object:getvelocity()
+               if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable and v.y == 0 then
                        if self.physical_state then
                                self.object:setvelocity({x=0,y=0,z=0})
                                self.object:setacceleration({x=0, y=0, z=0})