38 coronaserver.savedata.ranks = coronaserver.savedata.ranks or {}
39 function coronaserver.get_rank(name)
40 return coronaserver.get_rank_by_name(coronaserver.savedata.ranks[name] or "student")
42 function coronaserver.get_rank_by_name(rankname)
43 for _, rank in pairs(coronaserver.ranks) do
44 if rank.name == rankname then
49 function coronaserver.get_player_name(name, brackets)
50 local rank = coronaserver.get_rank(name)
51 local rank_tag = minetest.colorize(rank.color, rank.tag)
55 return rank_tag .. brackets[1] .. name .. brackets[2] .. " "
57 minetest.register_on_joinplayer(function(player)
58 local name = player:get_player_name()
59 if coronaserver.get_rank(name).name == "student" and minetest.check_player_privs(name, {teacher = true}) then
60 coronaserver.savedata.ranks[name] = "teacher"
63 minetest.chat_send_all(coronaserver.get_player_name(name) .. "has joined the Server.")
64 player:set_nametag_attributes({color = coronaserver.get_rank(name).color})
66 minetest.register_on_leaveplayer(function(player)
67 local name = player:get_player_name()
68 minetest.chat_send_all(coronaserver.get_player_name(name) .. "has left the Server.")
70 minetest.register_on_chat_message(function(name, message)
71 minetest.chat_send_all(coronaserver.get_player_name(name, {"<", ">"}) .. message)
74 minetest.register_chatcommand("rank", {
75 params = "<player> <rank>",
76 description = "Einem Spieler einen Rang geben (owner|admin|moderator|developer|supporter|teacher|student)",
77 privs = {privs = true},
78 func = function(admin, param)
79 local name = param:split(' ')[1] or ""
80 local player = minetest.get_player_by_name(name)
81 local rank = coronaserver.get_rank_by_name(param:split(' ')[2])
83 minetest.chat_send_player(admin, "Invalid Rank.")
85 coronaserver.savedata.ranks[name] = rank.name
88 player:set_nametag_attributes({color = rank.color})
90 minetest.chat_send_all(name .. " ist jetzt ein " .. minetest.colorize(rank.color, rank.name))