mirror of
https://github.com/minetest-mods/craftguide.git
synced 2024-11-29 13:53:43 +01:00
Notify outdated client on joinplayer
This commit is contained in:
parent
cd17b8d38e
commit
f075e67be9
92
init.lua
92
init.lua
@ -111,6 +111,20 @@ local function get_fs_version(name)
|
|||||||
return info and info.formspec_version or 1
|
return info and info.formspec_version or 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function outdated(name)
|
||||||
|
local fs = fmt([[
|
||||||
|
size[6.6,1.3]
|
||||||
|
image[0,0;1,1;%s]
|
||||||
|
label[1,0;%s]
|
||||||
|
button_exit[2.8,0.8;1,1;;OK]
|
||||||
|
]],
|
||||||
|
PNG.book,
|
||||||
|
"Your Minetest client is outdated.\n" ..
|
||||||
|
"Get the latest version on minetest.net to use the Crafting Guide.")
|
||||||
|
|
||||||
|
return show_formspec(name, "craftguide", fs)
|
||||||
|
end
|
||||||
|
|
||||||
local function mul_elem(elem, n)
|
local function mul_elem(elem, n)
|
||||||
local fstr, elems = "", {}
|
local fstr, elems = "", {}
|
||||||
|
|
||||||
@ -1549,10 +1563,13 @@ on_mods_loaded(get_init_items)
|
|||||||
on_joinplayer(function(player)
|
on_joinplayer(function(player)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
init_data(name)
|
init_data(name)
|
||||||
|
|
||||||
|
if pdata[name].fs_version < FORMSPEC_MINIMAL_VERSION then
|
||||||
|
outdated(name)
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local function fields(player, _f)
|
local function fields(player, _f)
|
||||||
if not player then return end
|
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local data = pdata[name]
|
local data = pdata[name]
|
||||||
|
|
||||||
@ -1654,9 +1671,8 @@ if sfinv_only then
|
|||||||
get = function(self, player, context)
|
get = function(self, player, context)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local data = pdata[name]
|
local data = pdata[name]
|
||||||
local formspec = make_fs(data)
|
|
||||||
|
|
||||||
return sfinv.make_formspec(player, context, formspec)
|
return sfinv.make_formspec(player, context, make_fs(data))
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_enter = function(self, player, context)
|
on_enter = function(self, player, context)
|
||||||
@ -1685,17 +1701,7 @@ else
|
|||||||
local data = pdata[name]
|
local data = pdata[name]
|
||||||
|
|
||||||
if data.fs_version < FORMSPEC_MINIMAL_VERSION then
|
if data.fs_version < FORMSPEC_MINIMAL_VERSION then
|
||||||
local fs = fmt([[
|
return outdated(name)
|
||||||
size[6.6,1.3]
|
|
||||||
image[0,0;1,1;%s]
|
|
||||||
label[1,0;%s]
|
|
||||||
button_exit[2.8,0.8;1,1;;OK]
|
|
||||||
]],
|
|
||||||
PNG.nothing,
|
|
||||||
"Your Minetest client is outdated.\n" ..
|
|
||||||
"Get the latest version on minetest.net to use the Crafting Guide.")
|
|
||||||
|
|
||||||
return show_formspec(name, "craftguide", fs)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(recipe_filters) then
|
if next(recipe_filters) then
|
||||||
@ -1872,6 +1878,34 @@ if progressive_mode then
|
|||||||
return inv_items
|
return inv_items
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function init_hud(player, data)
|
||||||
|
data.hud = {
|
||||||
|
bg = player:hud_add{
|
||||||
|
hud_elem_type = "image",
|
||||||
|
position = {x = 0.78, y = 1},
|
||||||
|
alignment = {x = 1, y = 1},
|
||||||
|
scale = {x = 370, y = 112},
|
||||||
|
text = PNG.bg,
|
||||||
|
},
|
||||||
|
|
||||||
|
book = player:hud_add{
|
||||||
|
hud_elem_type = "image",
|
||||||
|
position = {x = 0.79, y = 1.02},
|
||||||
|
alignment = {x = 1, y = 1},
|
||||||
|
scale = {x = 4, y = 4},
|
||||||
|
text = PNG.book,
|
||||||
|
},
|
||||||
|
|
||||||
|
text = player:hud_add{
|
||||||
|
hud_elem_type = "text",
|
||||||
|
position = {x = 0.84, y = 1.04},
|
||||||
|
alignment = {x = 1, y = 1},
|
||||||
|
number = 0xffffff,
|
||||||
|
text = "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
local function show_hud_success(player, data)
|
local function show_hud_success(player, data)
|
||||||
-- It'd better to have an engine function `hud_move` to only need
|
-- It'd better to have an engine function `hud_move` to only need
|
||||||
-- 2 calls for the notification's back and forth.
|
-- 2 calls for the notification's back and forth.
|
||||||
@ -1976,33 +2010,9 @@ if progressive_mode then
|
|||||||
data.inv_items = dslz(meta:get_string "inv_items") or {}
|
data.inv_items = dslz(meta:get_string "inv_items") or {}
|
||||||
data.known_recipes = dslz(meta:get_string "known_recipes") or 0
|
data.known_recipes = dslz(meta:get_string "known_recipes") or 0
|
||||||
|
|
||||||
if not singleplayer then return end
|
if singleplayer then
|
||||||
|
init_hud(player, data)
|
||||||
data.hud = {
|
end
|
||||||
bg = player:hud_add{
|
|
||||||
hud_elem_type = "image",
|
|
||||||
position = {x = 0.78, y = 1},
|
|
||||||
alignment = {x = 1, y = 1},
|
|
||||||
scale = {x = 370, y = 112},
|
|
||||||
text = PNG.bg,
|
|
||||||
},
|
|
||||||
|
|
||||||
book = player:hud_add{
|
|
||||||
hud_elem_type = "image",
|
|
||||||
position = {x = 0.79, y = 1.02},
|
|
||||||
alignment = {x = 1, y = 1},
|
|
||||||
scale = {x = 4, y = 4},
|
|
||||||
text = PNG.book,
|
|
||||||
},
|
|
||||||
|
|
||||||
text = player:hud_add{
|
|
||||||
hud_elem_type = "text",
|
|
||||||
position = {x = 0.84, y = 1.04},
|
|
||||||
alignment = {x = 1, y = 1},
|
|
||||||
number = 0xffffff,
|
|
||||||
text = "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local to_save = {"inv_items", "known_recipes"}
|
local to_save = {"inv_items", "known_recipes"}
|
||||||
|
Loading…
Reference in New Issue
Block a user