Creative: Prevent unauthorized item access (#1840)
authorSmallJoker <SmallJoker@users.noreply.github.com>
Sat, 22 Jul 2017 18:16:25 +0000 (20:16 +0200)
committersfan5 <sfan5@live.de>
Sun, 19 Nov 2017 21:57:28 +0000 (22:57 +0100)
mods/creative/inventory.lua

index 0e1d813eafc81313f7661e47a1a8ee4bd36d78b4..00b2aa550dbd54ffa9a560e63a27f95e087230c7 100644 (file)
@@ -10,22 +10,25 @@ function creative.init_creative_inventory(player)
 
        minetest.create_detached_inventory("creative_" .. player_name, {
                allow_move = function(inv, from_list, from_index, to_list, to_index, count, player2)
-                       if not to_list == "main" then
-                               return count
-                       else
+                       local name = player2 and player2:get_player_name() or ""
+                       if not creative.is_enabled_for(name) or
+                                       to_list == "main" then
                                return 0
                        end
+                       return count
                end,
                allow_put = function(inv, listname, index, stack, player2)
                        return 0
                end,
                allow_take = function(inv, listname, index, stack, player2)
+                       local name = player2 and player2:get_player_name() or ""
+                       if not creative.is_enabled_for(name) then
+                               return 0
+                       end
                        return -1
                end,
                on_move = function(inv, from_list, from_index, to_list, to_index, count, player2)
                end,
-               on_put = function(inv, listname, index, stack, player2)
-               end,
                on_take = function(inv, listname, index, stack, player2)
                        if stack and stack:get_count() > 0 then
                                minetest.log("action", player_name .. " takes " .. stack:get_name().. " from creative inventory")