From a1d35f3d69dbed8cd9ce317a11f2bd2f7c816c75 Mon Sep 17 00:00:00 2001
From: SmallJoker <SmallJoker@users.noreply.github.com>
Date: Sat, 22 Jul 2017 20:16:25 +0200
Subject: [PATCH] Creative: Prevent unauthorized item access (#1840)

---
 mods/creative/inventory.lua | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua
index 0e1d813..00b2aa5 100644
--- a/mods/creative/inventory.lua
+++ b/mods/creative/inventory.lua
@@ -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")