]> git.lizzy.rs Git - Crafter.git/commitdiff
Overhaul client version checking
authoroilboi <47129783+oilboi@users.noreply.github.com>
Tue, 9 Jun 2020 06:20:00 +0000 (02:20 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Tue, 9 Jun 2020 06:20:00 +0000 (02:20 -0400)
README.md
mods/cilent_version_checker/init.lua

index 1ff14cd1adc80d97c9602ce09c35fef3c5330dc2..3ba8ed4abfd192c95f14714b486dc816561c7efd 100644 (file)
--- a/README.md
+++ b/README.md
@@ -50,6 +50,7 @@ enable_mod_channels = true
 - Overhauled weather effects
 - Added in clientside modchannel lockout to check if server sending message
 - Added in capes
+- Overhauled client mod version checking
 ---
 
 
index ca767c57281964bfe6214854fa42cb7af3ec0871..76e3dc9446db6b3330c8734c0f473d4c24a4691c 100644 (file)
@@ -1,40 +1,40 @@
 local client_versions = {}
 local client_version_channels = {}
 
-local current_version = 0.05004
-
-local function do_version_check(player)
-    local name = player:get_player_name()
-    local version = client_versions[name] or 0
-    if version then
-        local testversion = tonumber(version)
-        if type(testversion) == "number" then
-            version = testversion
-        else
-            version = 0
-        end
-    end
-    if version < current_version then
-        minetest.chat_send_player(name, minetest.colorize("yellow", "You need to update your clientmod. Current version: "..version..". The game might not work as intended."))
-    end
-end
+--I needed to add in a dev cycle to adopt for a decimal place error
+local current_development_cycle = "alpha"
+local current_version = 0.05005
 
 minetest.register_on_joinplayer(function(player)
        local name = player:get_player_name()
     client_version_channels[name] = minetest.mod_channel_join(name..":client_version_channel")
-    minetest.after(3,function()
-        do_version_check(player)
-    end)
 end)
 
 minetest.register_on_modchannel_message(function(channel_name, sender, message)
     local channel_decyphered = channel_name:gsub(sender,"")
     if channel_decyphered == ":client_version_channel" then
-        client_versions[sender] = message
+        local version = tonumber(message)
+        if type(version) ~= "number" then
+            minetest.chat_send_player(sender, minetest.colorize("yellow", "Please do not try to crash the server."))
+            for i = 1,5 do
+                minetest.log("warning", sender.." tried to crash the server!")
+            end
+        elseif type(version) == "number" then
+            if current_development_cycle == "alpha" and version > 0.0999 then
+                minetest.chat_send_player(sender, minetest.colorize("yellow", "Please update your client mod."))
+                minetest.log("warning", sender.." logged in with an outdated client.")
+            elseif version < current_version then
+                minetest.chat_send_player(sender, minetest.colorize("yellow", "You need to update your clientmod. Your client version: ")..
+                minetest.colorize("white",version)..minetest.colorize("yellow",". Current server version: ").. minetest.colorize("white",current_version)..
+                minetest.colorize("yellow",". The game might not work as intended or crash."))
+                minetest.log("warning", sender.." logged in with an outdated client.")
+            elseif version > current_version then
+                minetest.chat_send_player(sender, minetest.colorize("yellow", "Your client mod is new than the server version. Your client version: ")..
+                minetest.colorize("white",version)..minetest.colorize("yellow",". Current server version: ")..
+                minetest.colorize("white",current_version)..minetest.colorize("yellow",". The game might not work as intended or crash."))
+                minetest.log("warning", sender.." logged in with a client new than the server version.")
+            end
+        end
     end
 end)
 
---[[
-local server_version = minetest.get_version()
-assert((server_version["string"] == "5.3.0-dev"),"\nThis is designed for the latest version of Minetest, please update to 5.3.0-DEV")
-]]--