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