Fix tab access on priv revoking
This commit is contained in:
parent
1dd742e887
commit
44a6256589
11
src/api.lua
11
src/api.lua
|
@ -167,6 +167,13 @@ function i3.set_fs(player)
|
||||||
sort_inventory(player, data)
|
sort_inventory(player, data)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for i, tab in ipairs(i3.tabs) do
|
||||||
|
if data.tab == i and tab.access and not tab.access(player, data) then
|
||||||
|
data.tab = 1
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local fs = make_fs(player, data)
|
local fs = make_fs(player, data)
|
||||||
player:set_inventory_formspec(fs)
|
player:set_inventory_formspec(fs)
|
||||||
end
|
end
|
||||||
|
@ -221,8 +228,8 @@ function i3.set_tab(player, tabname)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
for i, def in ipairs(i3.tabs) do
|
for i, tab in ipairs(i3.tabs) do
|
||||||
if def.name == tabname then
|
if tab.name == tabname then
|
||||||
data.tab = i
|
data.tab = i
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
11
src/gui.lua
11
src/gui.lua
|
@ -1516,6 +1516,7 @@ local function make_fs(player, data)
|
||||||
fs("bg9", 0, 0, data.inv_width, full_height, PNG.bg_full, 10)
|
fs("bg9", 0, 0, data.inv_width, full_height, PNG.bg_full, 10)
|
||||||
|
|
||||||
local tab = i3.tabs[data.tab]
|
local tab = i3.tabs[data.tab]
|
||||||
|
|
||||||
if tab then
|
if tab then
|
||||||
tab.formspec(player, data, fs)
|
tab.formspec(player, data, fs)
|
||||||
end
|
end
|
||||||
|
@ -1526,7 +1527,15 @@ local function make_fs(player, data)
|
||||||
get_items_fs(fs, data, player, full_height)
|
get_items_fs(fs, data, player, full_height)
|
||||||
end
|
end
|
||||||
|
|
||||||
if #i3.tabs > 1 then
|
local visible_tabs = 1
|
||||||
|
|
||||||
|
for _, def in ipairs(i3.tabs) do
|
||||||
|
if visible_tabs < 2 and def.access and def.access(player, data) then
|
||||||
|
visible_tabs++
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if visible_tabs > 1 then
|
||||||
get_tabs_fs(fs, player, data, full_height)
|
get_tabs_fs(fs, player, data, full_height)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -16,30 +16,18 @@ i3.new_tab("test2", {
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
i3.new_tab("test3", {
|
i3.new_tab("test_creative", {
|
||||||
description = "Test 3",
|
description = "Test creative",
|
||||||
|
|
||||||
access = function(player, data)
|
access = function(player, data)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
if name == "singleplayer" then
|
return core.is_creative_enabled(name)
|
||||||
return true
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
|
|
||||||
formspec = function(player, data, fs)
|
formspec = function(player, data, fs)
|
||||||
fs("label[3,1;Test 3]")
|
fs("label[3,1;Creative enabled]")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
fields = function(player, data, fields)
|
fields = i3.set_fs,
|
||||||
i3.set_fs(player, "label[3,2;Test extra_fs]")
|
|
||||||
end,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
i3.override_tab("test2", {
|
|
||||||
description = "Test override",
|
|
||||||
image = "i3_mesepick.png",
|
|
||||||
|
|
||||||
formspec = function(player, data, fs)
|
|
||||||
fs("label[3,1;Override!]")
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue