Fix inventory tabs disappearing sometimes
This commit is contained in:
parent
56a5301d55
commit
f1a55b23aa
@ -200,7 +200,7 @@ local function check_achievement_gotten(player, aname)
|
||||
minetest.log("action", "[rp_achievements] " .. name .. " got achievement '"..aname.."'")
|
||||
end
|
||||
|
||||
if rp_formspec.get_invpage(player) == "rp_achievements:achievements" then
|
||||
if rp_formspec.get_current_invpage(player) == "rp_achievements:achievements" then
|
||||
local form = achievements.get_formspec(name)
|
||||
player:set_inventory_formspec(form)
|
||||
end
|
||||
@ -440,7 +440,7 @@ function achievements.get_formspec(name, row)
|
||||
achievement_list = achievement_list .. minetest.formspec_escape(def.description)
|
||||
end
|
||||
|
||||
local form = rp_formspec.get_page("rp_achievements:achievements")
|
||||
local form = rp_formspec.get_page("rp_achievements:achievements", true)
|
||||
|
||||
form = form .. "set_focus[achievement_list]"
|
||||
form = form .. "table[0.25,2.5;7.9,5.5;achievement_list;" .. achievement_list
|
||||
|
@ -41,7 +41,7 @@ form_armor = form_armor .. "listring[current_player;armor]"
|
||||
form_armor = form_armor .. rp_formspec.get_itemslot_bg(2.25, 0.75, 1, 3)
|
||||
|
||||
function armor.get_formspec(name)
|
||||
local form = rp_formspec.get_page("rp_armor:armor")
|
||||
local form = rp_formspec.get_page("rp_armor:armor", true)
|
||||
return form
|
||||
end
|
||||
|
||||
|
@ -382,7 +382,7 @@ function crafting.get_formspec(name, select_craft_id)
|
||||
end
|
||||
end
|
||||
|
||||
local form = rp_formspec.get_page("rp_crafting:crafting")
|
||||
local form = rp_formspec.get_page("rp_crafting:crafting", true)
|
||||
|
||||
if craft_count > 0 then
|
||||
form = form .. "table[2.25,0.25;4.75,3.75;craft_list;" .. craft_list
|
||||
|
@ -250,7 +250,7 @@ creative.get_formspec = function(playername)
|
||||
end
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
if player then
|
||||
local form = rp_formspec.get_page("rp_creative:creative")
|
||||
local form = rp_formspec.get_page("rp_creative:creative", true)
|
||||
local page, start_i = get_page_and_start_i(playername)
|
||||
form = form .. creative.get_creative_formspec(player, start_i, page)
|
||||
return form
|
||||
@ -320,7 +320,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
page = 1
|
||||
end
|
||||
|
||||
local form = rp_formspec.get_page("rp_creative:creative")
|
||||
local form = rp_formspec.get_page("rp_creative:creative", true)
|
||||
form = form .. creative.get_creative_formspec(player, start_i, start_i / (creative.slots_num) + 1)
|
||||
if changed then
|
||||
player:set_inventory_formspec(form)
|
||||
|
@ -273,10 +273,17 @@ function rp_formspec.register_invtab(name, def)
|
||||
local rdef = table.copy(def)
|
||||
rp_formspec.registered_invtabs[name] = def
|
||||
table.insert(registered_invtabs_order, name)
|
||||
invtabs_cached_needs_update = true
|
||||
end
|
||||
|
||||
local invtabs_cached
|
||||
local invtabs_cached_needs_update = true
|
||||
|
||||
-- Returns a formspec string for all the inventory tabs
|
||||
local function get_invtabs()
|
||||
if not invtabs_cached_needs_update then
|
||||
return invtabs_cached
|
||||
end
|
||||
local form = ""
|
||||
local tabx = -0.9
|
||||
local taby = 0.5
|
||||
@ -287,19 +294,23 @@ local function get_invtabs()
|
||||
form = form .. rp_formspec.tab(tabx, taby, "_rp_formspec_tab_"..tabname, def.icon, def.tooltip)
|
||||
taby = taby + tabplus
|
||||
end
|
||||
invtabs_cached = form
|
||||
return form
|
||||
end
|
||||
|
||||
|
||||
-- Pages
|
||||
|
||||
function rp_formspec.get_page(name)
|
||||
function rp_formspec.get_page(name, with_invtabs)
|
||||
local page = rp_formspec.registered_pages[name]
|
||||
|
||||
if page == nil then
|
||||
minetest.log("warning", "[rp_formspec] UI page '" .. name .. "' is not yet registered")
|
||||
return ""
|
||||
end
|
||||
if with_invtabs then
|
||||
page = page .. get_invtabs()
|
||||
end
|
||||
|
||||
return page
|
||||
end
|
||||
@ -358,19 +369,15 @@ function rp_formspec.receive_fields(player, form_name, fields)
|
||||
end
|
||||
end
|
||||
if invpagename and form then
|
||||
rp_formspec.set_invpage(player, invpagename)
|
||||
rp_formspec.set_current_invpage(player, invpagename)
|
||||
end
|
||||
end
|
||||
|
||||
function rp_formspec.register_invpage(name, def)
|
||||
local rdef = table.copy(def)
|
||||
if rdef.with_invtabs == nil then
|
||||
rdef.with_invtabs = true
|
||||
end
|
||||
rp_formspec.registered_invpages[name] = rdef
|
||||
rp_formspec.registered_invpages[name] = def
|
||||
end
|
||||
|
||||
function rp_formspec.set_invpage(player, page)
|
||||
function rp_formspec.set_current_invpage(player, page)
|
||||
local def = rp_formspec.registered_invpages[page]
|
||||
local pname = player:get_player_name()
|
||||
local formspec
|
||||
@ -379,14 +386,11 @@ function rp_formspec.set_invpage(player, page)
|
||||
else
|
||||
formspec = rp_formspec.registered_pages[page]
|
||||
end
|
||||
if def.with_invtabs then
|
||||
formspec = formspec .. get_invtabs()
|
||||
end
|
||||
player:set_inventory_formspec(formspec)
|
||||
current_invpage[pname] = page
|
||||
end
|
||||
|
||||
function rp_formspec.get_invpage(player)
|
||||
function rp_formspec.get_current_invpage(player)
|
||||
local pname = player:get_player_name()
|
||||
return current_invpage[pname]
|
||||
end
|
||||
@ -405,12 +409,12 @@ minetest.register_on_joinplayer(
|
||||
local pname = player:get_player_name()
|
||||
for invpagename,def in pairs(rp_formspec.registered_invpages) do
|
||||
if def.is_startpage and def.is_startpage(pname) then
|
||||
rp_formspec.set_invpage(player, invpagename)
|
||||
rp_formspec.set_current_invpage(player, invpagename)
|
||||
end
|
||||
end
|
||||
-- Fallback invpage
|
||||
if not rp_formspec.get_invpage(player) then
|
||||
rp_formspec.set_invpage(player, "rp_formspec:inventory")
|
||||
if not rp_formspec.get_current_invpage(player) then
|
||||
rp_formspec.set_current_invpage(player, "rp_formspec:inventory")
|
||||
end
|
||||
end)
|
||||
|
||||
|
@ -241,7 +241,7 @@ minetest.register_on_joinplayer(on_joinplayer)
|
||||
minetest.register_on_leaveplayer(on_leaveplayer)
|
||||
|
||||
local function get_formspec(playername)
|
||||
local form = rp_formspec.get_page("rp_player_skins:player_skins")
|
||||
local form = rp_formspec.get_page("rp_player_skins:player_skins", true)
|
||||
form = form .. "model[0.2,0.2;4.6,9.2;player_skins_skin_select_model;character.b3d;"..player_skins.skins[playername]..";0,180;false;false;0,0]"
|
||||
return form
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user