Add sfinv.get_homepage_name(player) 1429/head
authorrubenwardy <rubenwardy@gmail.com>
Tue, 29 Nov 2016 09:26:56 +0000 (09:26 +0000)
committerrubenwardy <rubenwardy@gmail.com>
Mon, 5 Dec 2016 01:39:50 +0000 (01:39 +0000)
Also sets creative:all as default inventory page
Fixes #1423

game_api.txt
mods/creative/inventory.lua
mods/sfinv/api.lua

index a2c4e312483b1759869a8623983fbedc09b608c0..38718c365eb2c76033065514c7b85ef6eb96de59 100644 (file)
@@ -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
 
index 8dedffc48ed6c7f860e0877c89f3860879445b2b..be24b3a27e75ec91895962f32cf71fa865af3e5c 100644 (file)
@@ -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
index a8c997f6af209bd1fd5e73356489be0c3fe7edf1..2fef3c8439e7da05607ebae860e2c902940a9bc9 100644 (file)
@@ -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