From 97d73f73585a1a74fdbee4399916ec80150b68d5 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 30 Dec 2014 05:07:14 +0100 Subject: [PATCH] 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 --- mods/bones/init.lua | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 3c24bfa0..49f823c3 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -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})