X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=builtin%2Fitem_entity.lua;h=46415e53854fa08199ab1ac5bfb8ced3dd57b548;hb=e215c9a84f72b6e6e1acb0437a09f545bc7cc07e;hp=2d763d50bc77fbaf6c7916171034addb1d0f7b72;hpb=43df78102c0a95001443979827d747cfe5bd2e37;p=oweals%2Fminetest.git diff --git a/builtin/item_entity.lua b/builtin/item_entity.lua index 2d763d50b..46415e538 100644 --- a/builtin/item_entity.lua +++ b/builtin/item_entity.lua @@ -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})