forked from nalc/nalc_game
		
	Use full stacks in the creative inventory and add a trash field
This commit is contained in:
		@@ -14,11 +14,7 @@ minetest.after(0, function()
 | 
				
			|||||||
			end
 | 
								end
 | 
				
			||||||
		end,
 | 
							end,
 | 
				
			||||||
		allow_put = function(inv, listname, index, stack, player)
 | 
							allow_put = function(inv, listname, index, stack, player)
 | 
				
			||||||
			if minetest.setting_getbool("creative_mode") then
 | 
								return 0
 | 
				
			||||||
				return -1
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
				return 0
 | 
					 | 
				
			||||||
			end
 | 
					 | 
				
			||||||
		end,
 | 
							end,
 | 
				
			||||||
		allow_take = function(inv, listname, index, stack, player)
 | 
							allow_take = function(inv, listname, index, stack, player)
 | 
				
			||||||
			if minetest.setting_getbool("creative_mode") then
 | 
								if minetest.setting_getbool("creative_mode") then
 | 
				
			||||||
@@ -54,8 +50,7 @@ minetest.after(0, function()
 | 
				
			|||||||
		if stack:get_stack_max() == 1 then
 | 
							if stack:get_stack_max() == 1 then
 | 
				
			||||||
			stack2 = ItemStack(stack:get_name())
 | 
								stack2 = ItemStack(stack:get_name())
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			-- Insert half full so that a taken stack can be put back
 | 
								stack2 = ItemStack(stack:get_name().." "..stack:get_stack_max())
 | 
				
			||||||
			stack2 = ItemStack(stack:get_name().." "..(stack:get_stack_max()/2))
 | 
					 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
		inv:add_item("main", stack2)
 | 
							inv:add_item("main", stack2)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
@@ -63,6 +58,24 @@ minetest.after(0, function()
 | 
				
			|||||||
	print("creative inventory size: "..dump(creative_inventory.creative_inventory_size))
 | 
						print("creative inventory size: "..dump(creative_inventory.creative_inventory_size))
 | 
				
			||||||
end)
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Create the trash field
 | 
				
			||||||
 | 
					local trash = minetest.create_detached_inventory("creative_trash", {
 | 
				
			||||||
 | 
						-- Allow the stack to be placed and remove it in on_put()
 | 
				
			||||||
 | 
						-- This allows the creative inventory to restore the stack
 | 
				
			||||||
 | 
						allow_put = function(inv, listname, index, stack, player)
 | 
				
			||||||
 | 
							if minetest.setting_getbool("creative_mode") then
 | 
				
			||||||
 | 
								return stack:get_count()
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								return 0
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end,
 | 
				
			||||||
 | 
						on_put = function(inv, listname, index, stack, player)
 | 
				
			||||||
 | 
							inv:set_stack(listname, index, "")
 | 
				
			||||||
 | 
						end,
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					trash:set_size("main", 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
creative_inventory.set_creative_formspec = function(player, start_i, pagenum)
 | 
					creative_inventory.set_creative_formspec = function(player, start_i, pagenum)
 | 
				
			||||||
	pagenum = math.floor(pagenum)
 | 
						pagenum = math.floor(pagenum)
 | 
				
			||||||
	local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1)
 | 
						local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1)
 | 
				
			||||||
@@ -74,7 +87,9 @@ creative_inventory.set_creative_formspec = function(player, start_i, pagenum)
 | 
				
			|||||||
			"list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]"..
 | 
								"list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]"..
 | 
				
			||||||
			"label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]"..
 | 
								"label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]"..
 | 
				
			||||||
			"button[0.3,6.5;1.6,1;creative_prev;<<]"..
 | 
								"button[0.3,6.5;1.6,1;creative_prev;<<]"..
 | 
				
			||||||
			"button[2.7,6.5;1.6,1;creative_next;>>]")
 | 
								"button[2.7,6.5;1.6,1;creative_next;>>]"..
 | 
				
			||||||
 | 
								"label[5,1.5;Trash:]"..
 | 
				
			||||||
 | 
								"list[detached:creative_trash;main;5,2;1,1;]")
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
minetest.register_on_joinplayer(function(player)
 | 
					minetest.register_on_joinplayer(function(player)
 | 
				
			||||||
	-- If in creative mode, modify player's inventory forms
 | 
						-- If in creative mode, modify player's inventory forms
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user