From: rubenwardy <rubenwardy@gmail.com>
Date: Tue, 29 Nov 2016 09:26:56 +0000 (+0000)
Subject: Add sfinv.get_homepage_name(player)
X-Git-Tag: 0.4.15~8
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0ff09e018d25cfa99ddeed33916c866e1b011661;p=oweals%2Fminetest_game.git

Add sfinv.get_homepage_name(player)

Also sets creative:all as default inventory page
Fixes #1423
---

diff --git a/game_api.txt b/game_api.txt
index a2c4e312..38718c36 100644
--- a/game_api.txt
+++ b/game_api.txt
@@ -411,6 +411,7 @@ Sfinv API
             If context is nil, it is either found or created.
 * sfinv.get_formspec(player, context) - builds current page's formspec
 * sfinv.get_nav_fs(player, context, nav, current_idx) - see above
+* sfinv.get_homepage_name(player) - get the page name of the first page to show to a player
 * sfinv.make_formspec(player, context, content, show_inv, size) - adds a theme to a formspec
     * show_inv, defaults to false. Whether to show the player's main inventory
     * size, defaults to `size[8,8.6]` if not specified
@@ -422,7 +423,6 @@ Sfinv API
 
 * pages - table of pages[pagename] = def
 * pages_unordered - array table of pages in order of addition (used to build navigation tabs).
-* homepage_name - name of default page
 * contexts - contexts[playername] = player_context
 * enabled - set to false to disable. Good for inventory rehaul mods like unified inventory
 
diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua
index 8dedffc4..be24b3a2 100644
--- a/mods/creative/inventory.lua
+++ b/mods/creative/inventory.lua
@@ -169,3 +169,12 @@ creative.register_tab("all", "All", minetest.registered_items)
 creative.register_tab("nodes", "Nodes", minetest.registered_nodes)
 creative.register_tab("tools", "Tools", minetest.registered_tools)
 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
+		return "creative:all"
+	else
+		return old_homepage_name(player)
+	end
+end
diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua
index a8c997f6..2fef3c84 100644
--- a/mods/sfinv/api.lua
+++ b/mods/sfinv/api.lua
@@ -1,7 +1,6 @@
 sfinv = {
 	pages = {},
 	pages_unordered = {},
-	homepage_name = "sfinv:crafting",
 	contexts = {},
 	enabled = true
 }
@@ -57,6 +56,10 @@ function sfinv.make_formspec(player, context, content, show_inv, size)
 	return table.concat(tmp, "")
 end
 
+function sfinv.get_homepage_name(player)
+	return "sfinv:crafting"
+end
+
 function sfinv.get_formspec(player, context)
 	-- Generate navigation tabs
 	local nav = {}
@@ -81,7 +84,7 @@ function sfinv.get_formspec(player, context)
 		return page:get(player, context)
 	else
 		local old_page = context.page
-		context.page = sfinv.homepage_name
+		context.page = sfinv.get_homepage_name(player)
 		assert(sfinv.pages[context.page], "[sfinv] Invalid homepage")
 		minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) .. " so using switching to homepage")
 		return sfinv.get_formspec(player, context)
@@ -94,7 +97,7 @@ function sfinv.set_player_inventory_formspec(player, context)
 		context = sfinv.contexts[name]
 		if not context then
 			context = {
-				page = sfinv.homepage_name
+				page = sfinv.get_homepage_name(player)
 			}
 			sfinv.contexts[name] = context
 		end