]> git.lizzy.rs Git - elidragon.git/commitdiff
Move rank data from player meta to savedata 2/head
authorHimbeerserverDE <52707839+HimbeerserverDE@users.noreply.github.com>
Tue, 29 Sep 2020 13:44:38 +0000 (15:44 +0200)
committerGitHub <noreply@github.com>
Tue, 29 Sep 2020 13:44:38 +0000 (15:44 +0200)
ranks.lua

index 1e50217cdc30c2000dd5e1d978c209a79122fe86..c065b7173c60916a235f4dee3c2e5b462ef9cf16 100755 (executable)
--- a/ranks.lua
+++ b/ranks.lua
@@ -55,7 +55,7 @@ end
 elidragon.savedata.ranks = elidragon.savedata.ranks or elidragon.load_legacy_ranks() or {}
 
 function elidragon.get_rank(player)
-    local rank = player:get_meta():get("elidragon:rank") or "player"
+    local rank = elidragon.savedata.ranks[player:get_player_name()] or "player"
     return elidragon.get_rank_by_name(rank)
 end
 
@@ -86,10 +86,6 @@ end
 minetest.register_on_joinplayer(function(player)
        local name = player:get_player_name()
        local rank = elidragon.savedata.ranks[name]
-       if rank then
-               player:get_meta():set_string("elidragon:rank", rank)
-               elidragon.savedata.ranks[name] = nil
-       end
     minetest.chat_send_all(elidragon.get_player_name(player, true) .. "has joined the Server.")
     if irc and irc.connected and irc.config.send_join_part then
         irc.say(elidragon.get_player_name(player) .. "has joined the Server.")
@@ -125,10 +121,8 @@ minetest.register_chatcommand("rank", {
                local rank_ref = elidragon.get_rank_by_name(rank)
                if not rank_ref then 
             return false, "Invalid Rank: " .. rank
-               elseif not target_ref then
-                       return false, "Player not online"
         else
-                       target_ref:get_meta():set_string("elidragon:rank", rank)
+                       elidragon.savedata.ranks[target] = rank
                        local privs = {}
                        for _, r in pairs(elidragon.ranks) do
                                for k, v in pairs(r.privs) do
@@ -144,3 +138,13 @@ minetest.register_chatcommand("rank", {
                end
        end,
 })
+
+-- Migrate old ranks
+minetest.register_on_joinplayer(function(player)
+       local name = player:get_player_name()
+       local rank = player:get_meta():get_string("elidragon:rank")
+       if rank then
+               elidragon.savedata.ranks[name] = rank
+               player:get_meta():set_string("elidragon:rank", "")
+       end
+end)