]> git.lizzy.rs Git - xdecor.git/commitdiff
Fix a few issues with itemframe #85
authorJP Guerrero <jeanpatrick.guerrero@gmail.com>
Thu, 8 Mar 2018 20:32:50 +0000 (21:32 +0100)
committerJP Guerrero <jeanpatrick.guerrero@gmail.com>
Thu, 8 Mar 2018 20:32:50 +0000 (21:32 +0100)
src/itemframe.lua

index 5b890bed2b454ac776d495edf7e7b85bcc655924..525322452f29f11ffb90b1d92c78e0726898cf52 100644 (file)
@@ -69,9 +69,11 @@ end
 
 function itemframe.rightclick(pos, node, clicker, itemstack)
        local meta = minetest.get_meta(pos)
-       local player = clicker:get_player_name()
+       local player_name = clicker:get_player_name()
        local owner = meta:get_string("owner")
-       if player ~= owner or not itemstack then
+       local admin = minetest.check_player_privs(player_name, "protection_bypass")
+
+       if not admin and (player_name ~= owner or not itemstack) then
                return itemstack
        end
 
@@ -85,19 +87,22 @@ end
 
 function itemframe.punch(pos, node, puncher)
        local meta = minetest.get_meta(pos)
-       local player = puncher:get_player_name()
+       local player_name = puncher:get_player_name()
        local owner = meta:get_string("owner")
+       local admin = minetest.check_player_privs(player_name, "protection_bypass")
 
-       if player ~= owner then return end
+       if not admin and player_name ~= owner then return end
        drop_item(pos, node)
 end
 
 function itemframe.dig(pos, player)
+       if not player then return end
        local meta = minetest.get_meta(pos)
-       local pname = player and player:get_player_name()
+       local player_name = player and player:get_player_name()
        local owner = meta:get_string("owner")
+       local admin = minetest.check_player_privs(player_name, "protection_bypass")
 
-       return pname == owner
+       return admin or player_name == owner
 end
 
 xdecor.register("itemframe", {