try placing the bones farther up first before escalating to drop the items

this should solve most cases of protection related deaths in which players dig straight down
This commit is contained in:
Tim 2014-12-30 05:07:14 +01:00
parent b8f088a00e
commit 97d73f7358

View file

@ -139,17 +139,24 @@ minetest.register_on_dieplayer(function(player)
local player_inv = player:get_inventory()
if (not may_replace(pos, player)) then
-- drop items instead of delete
for i=1,player_inv:get_size("main") do
minetest.add_item(pos, player_inv:get_stack("main", i))
if (may_replace({x=pos.x, y=pos.y+1, z=pos.z}, player)) then
-- drop one node above if there's space
-- this should solve most cases of protection related deaths in which players dig straight down
-- yet keeps the bones reachable
pos.y = pos.y+1
else
-- drop items instead of delete
for i=1,player_inv:get_size("main") do
minetest.add_item(pos, player_inv:get_stack("main", i))
end
for i=1,player_inv:get_size("craft") do
minetest.add_item(pos, player_inv:get_stack("craft", i))
end
-- empty lists main and craft
player_inv:set_list("main", {})
player_inv:set_list("craft", {})
return
end
for i=1,player_inv:get_size("craft") do
minetest.add_item(pos, player_inv:get_stack("craft", i))
end
-- empty lists main and craft
player_inv:set_list("main", {})
player_inv:set_list("craft", {})
return
end
minetest.set_node(pos, {name="bones:bones", param2=param2})