diff --git a/init.lua b/init.lua index 437ae97..5178ba4 100644 --- a/init.lua +++ b/init.lua @@ -95,7 +95,7 @@ end chesttools.may_use = function( pos, player ) - if( not( player ) or not(pos) or not(pos.x)) then + if not (pos and player and player.is_player and player:is_player() and not player.is_fake_player) then return false; end local name = player:get_player_name(); @@ -190,7 +190,7 @@ chesttools.on_receive_fields = function(pos, formname, fields, player) selected = 'main'; end local inv_list = 'main'; - if( selected == 'main' ) then + if( selected == 'main' ) then inv_list = 'main'; elseif( selected == 'craft' ) then inv_list = 'craft'; @@ -457,7 +457,7 @@ chesttools.form_input_handler = function( player, formname, fields) chesttools.update_chest( pos, formname, fields, player); return true; -- this function was responsible for handling the input end - + return; end end @@ -497,10 +497,11 @@ chesttools.register_chest = function(node_name, desc, name, paramtype2, palette, "listring[current_player;main]") end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); + can_dig = function(pos, player) + 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() - return inv:is_empty("main") and player and player:is_player() 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, allow_metadata_inventory_move = function(pos, from_list, from_index, @@ -601,7 +602,7 @@ chesttools.register_chest = function(node_name, desc, name, paramtype2, palette, formspec = 'size['..tostring(offset)..',6.5]'..formspec; -- only show the formspec if it really is a chest that can be updated if( can_be_upgraded ) then - minetest.show_formspec( name, "chesttools:update", formspec ); + minetest.show_formspec( name, "chesttools:update", formspec ); end return nil; end,