allow players who can access the chest to dig it

This commit is contained in:
flux 2022-04-01 13:31:24 -07:00
parent d1093fe448
commit 6d2bfe336a
1 changed files with 7 additions and 6 deletions

View File

@ -164,7 +164,7 @@ chesttools.on_receive_fields = function(pos, formname, fields, player)
selected = 'main'; selected = 'main';
end end
local inv_list = 'main'; local inv_list = 'main';
if( selected == 'main' ) then if( selected == 'main' ) then
inv_list = 'main'; inv_list = 'main';
elseif( selected == 'craft' ) then elseif( selected == 'craft' ) then
inv_list = 'craft'; inv_list = 'craft';
@ -431,7 +431,7 @@ chesttools.form_input_handler = function( player, formname, fields)
chesttools.update_chest( pos, formname, fields, player); chesttools.update_chest( pos, formname, fields, player);
return true; -- this function was responsible for handling the input return true; -- this function was responsible for handling the input
end end
return; return;
end end
end end
@ -469,10 +469,11 @@ minetest.register_node( 'chesttools:shared_chest', {
"listring[current_player;main]") "listring[current_player;main]")
end, end,
can_dig = function(pos,player) can_dig = function(pos, player)
local meta = minetest.get_meta(pos); local player_name = (player and player.get_player_name and player:get_player_name()) or ""
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
return inv:is_empty("main") and player:get_player_name() == meta:get_string('owner'); return player_name and inv:is_empty("main") and not minetest.is_protected(pos, player_name)
end, end,
allow_metadata_inventory_move = function(pos, from_list, from_index, allow_metadata_inventory_move = function(pos, from_list, from_index,
@ -573,7 +574,7 @@ minetest.register_node( 'chesttools:shared_chest', {
formspec = 'size['..tostring(offset)..',6.5]'..formspec; formspec = 'size['..tostring(offset)..',6.5]'..formspec;
-- only show the formspec if it really is a chest that can be updated -- only show the formspec if it really is a chest that can be updated
if( can_be_upgraded ) then if( can_be_upgraded ) then
minetest.show_formspec( name, "chesttools:update", formspec ); minetest.show_formspec( name, "chesttools:update", formspec );
end end
return nil; return nil;
end, end,