Fix item entities not dropping when digging below

This commit is contained in:
Wuzzy 2019-09-15 10:48:27 +02:00
parent 1d4060f8c7
commit 421b268716
2 changed files with 9 additions and 8 deletions

View File

@ -24,6 +24,7 @@ minetest.register_entity(
itemstring = "", itemstring = "",
physical_state = true, physical_state = true,
item_magnet = false, -- set by other mod that implements item magnet
set_item = function(self, itemstring) set_item = function(self, itemstring)
self.itemstring = itemstring self.itemstring = itemstring
@ -116,6 +117,10 @@ minetest.register_entity(
return return
end end
if self.item_magnet then
return
end
p.y = p.y - 0.3 p.y = p.y - 0.3
local nn = minetest.get_node(p).name local nn = minetest.get_node(p).name
-- If node is not registered or node is walkably solid: -- If node is not registered or node is walkably solid:

View File

@ -48,7 +48,7 @@ minetest.register_globalstep(
for _,object in ipairs(in_radius) do for _,object in ipairs(in_radius) do
if not object:is_player() and object:get_luaentity() if not object:is_player() and object:get_luaentity()
and object:get_luaentity().name == "__builtin:item" and valid(object) then and object:get_luaentity().name == "__builtin:item" and valid(object) then
local pos1 = pos local pos1 = table.copy(pos)
pos1.y = pos1.y + 0.2 pos1.y = pos1.y + 0.2
@ -71,11 +71,10 @@ minetest.register_globalstep(
vec.y = vec.y*3 vec.y = vec.y*3
vec.z = vec.z*3 vec.z = vec.z*3
object:get_luaentity().item_magnet = true
object:set_velocity(vec) object:set_velocity(vec)
object:set_properties({ physical = false })
object:get_luaentity().physical_state = false
object:get_luaentity().object:set_properties({physical = false})
else else
local lua = object:get_luaentity() local lua = object:get_luaentity()
@ -113,10 +112,7 @@ minetest.register_globalstep(
end end
else else
object:set_velocity({x = 0, y = object:get_velocity().y, z = 0}) object:set_velocity({x = 0, y = object:get_velocity().y, z = 0})
object:get_luaentity().item_magnet = false
object:get_luaentity().physical_state = true
object:get_luaentity().object:set_properties({physical = true})
end end
end end
end end