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
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.")
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
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)