From 61e60724f6b0875d14dc7f185d914702eddb806e Mon Sep 17 00:00:00 2001
From: PilzAdam <adam-k@outlook.com>
Date: Mon, 17 Dec 2012 20:27:01 +0100
Subject: [PATCH] Use infinite stacks in creative mode and make the hand break
 anything

---
 mods/creative/depends.txt |  1 +
 mods/creative/init.lua    | 49 ++++++++++++++++++++++++++++++++-------
 2 files changed, 41 insertions(+), 9 deletions(-)
 create mode 100644 mods/creative/depends.txt

diff --git a/mods/creative/depends.txt b/mods/creative/depends.txt
new file mode 100644
index 00000000..4ad96d51
--- /dev/null
+++ b/mods/creative/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/mods/creative/init.lua b/mods/creative/init.lua
index 22877b5a..8ec21bc6 100644
--- a/mods/creative/init.lua
+++ b/mods/creative/init.lua
@@ -44,15 +44,7 @@ minetest.after(0, function()
 	table.sort(creative_list)
 	inv:set_size("main", #creative_list)
 	for _,itemstring in ipairs(creative_list) do
-		local stack = ItemStack(itemstring)
-		-- Make a stack of the right number of items
-		local stack2 = nil
-		if stack:get_stack_max() == 1 then
-			stack2 = ItemStack(stack:get_name())
-		else
-			stack2 = ItemStack(stack:get_name().." "..stack:get_stack_max())
-		end
-		inv:add_item("main", stack2)
+		inv:add_item("main", ItemStack(itemstring))
 	end
 	creative_inventory.creative_inventory_size = #creative_list
 	print("creative inventory size: "..dump(creative_inventory.creative_inventory_size))
@@ -129,3 +121,42 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
 	creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1)
 end)
 
+if minetest.setting_getbool("creative_mode") then
+	
+	minetest.register_item(":", {
+		type = "none",
+		wield_image = "wieldhand.png",
+		wield_scale = {x=1,y=1,z=2.5},
+		tool_capabilities = {
+			full_punch_interval = 0.5,
+			max_drop_level = 3,
+			groupcaps = {
+				crumbly = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3},
+				cracky = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3},
+				snappy = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3},
+				choppy = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3},
+				oddly_breakable_by_hand = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3},
+			}
+		}
+	})
+	
+	minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
+		return true
+	end)
+	
+	function minetest.handle_node_drops(pos, drops, digger)
+		if not digger or not digger:is_player() then
+			return
+		end
+		local inv = digger:get_inventory()
+		if inv then
+			for _,item in ipairs(drops) do
+				item = ItemStack(item):get_name()
+				if not inv:contains_item("main", item) then
+					inv:add_item("main", item)
+				end
+			end
+		end
+	end
+	
+end
-- 
GitLab