forked from luanti-org/minetest_game
		
	Creative: Add creative.is_enabled_for
This commit is contained in:
		| @@ -1,3 +1,9 @@ | ||||
| creative = {} | ||||
|  | ||||
| function creative.is_enabled_for(name) | ||||
| 	return minetest.setting_getbool("creative_mode") | ||||
| end | ||||
|  | ||||
| dofile(minetest.get_modpath("creative") .. "/inventory.lua") | ||||
|  | ||||
| if minetest.setting_getbool("creative_mode") then | ||||
| @@ -28,22 +34,25 @@ if minetest.setting_getbool("creative_mode") then | ||||
| 			damage_groups = {fleshy = 10}, | ||||
| 		} | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| 	minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) | ||||
| 		return true | ||||
| 	end) | ||||
| -- Unlimited node placement | ||||
| minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) | ||||
| 	return creative.is_enabled_for(placer:get_player_name()) | ||||
| 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 | ||||
| -- Don't pick up if the item is already in the inventory | ||||
| function minetest.handle_node_drops(pos, drops, digger) | ||||
| 	if not digger or not digger:is_player() or | ||||
| 			not creative.is_enabled_for(digger:get_player_name()) 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 | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| creative = {} | ||||
| local player_inventory = {} | ||||
|  | ||||
| function creative.init_creative_inventory(player) | ||||
| @@ -79,7 +78,7 @@ function creative.register_tab(name, title, items) | ||||
| 	sfinv.register_page("creative:" .. name, { | ||||
| 		title = title, | ||||
| 		is_in_nav = function(self, player, context) | ||||
| 			return minetest.setting_getbool("creative_mode") | ||||
| 			return creative.is_enabled_for(player:get_player_name()) | ||||
| 		end, | ||||
| 		get = function(self, player, context) | ||||
| 			local player_name = player:get_player_name() | ||||
| @@ -172,7 +171,7 @@ creative.register_tab("craftitems", "Items", minetest.registered_craftitems) | ||||
|  | ||||
| local old_homepage_name = sfinv.get_homepage_name | ||||
| function sfinv.get_homepage_name(player) | ||||
| 	if minetest.setting_getbool("creative_mode") then | ||||
| 	if creative.is_enabled_for(player:get_player_name()) then | ||||
| 		return "creative:all" | ||||
| 	else | ||||
| 		return old_homepage_name(player) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user