nodecore-cd2025/mods/nc_api/setup_clientversion.lua
2023-05-12 06:58:25 -04:00

48 lines
1.5 KiB
Lua

-- LUALOCALS < ---------------------------------------------------------
local minetest, nodecore, string
= minetest, nodecore, string
local string_format
= string.format
-- LUALOCALS > ---------------------------------------------------------
local minproto = 41
local minrelease = "5.6"
local rejected = {}
local kickmsg = string_format("\n\n%s\n%s",
nodecore.translate("Your Minetest version is outdated, please update!"),
nodecore.translate("Version @1 or higher is required.", minrelease))
local announce = "@1 rejected. (protocol version @2)"
nodecore.translate_inform(announce)
minetest.register_on_joinplayer(function(player)
local pname = player:get_player_name()
local pinfo = minetest.get_player_information(pname)
if (not pinfo) or (pinfo.protocol_version < minproto) then
rejected[pname] = true
minetest.kick_player(pname, kickmsg)
return minetest.after(0, function()
return minetest.chat_send_all("*** "
.. nodecore.translate(announce, pname,
pinfo and pinfo.protocol_version or "unknown"))
end)
else
rejected[pname] = nil
end
end)
local oldjoined = minetest.send_join_message
function minetest.send_join_message(pname, ...)
local pinfo = minetest.get_player_information(pname)
if pinfo.protocol_version < minproto then return end
return oldjoined(pname, ...)
end
local oldleft = minetest.send_leave_message
function minetest.send_leave_message(pname, ...)
if rejected[pname] then return end
return oldleft(pname, ...)
end