1 local function ReverseTable(t)
2 local reversedTable = {}
4 for k, v in ipairs(t) do
5 reversedTable[itemCount + 1 - k] = v
32 privs = {privs = true},
39 privs = {server = true, ban = true, worldedit = true, vanish = true, ["rename"] = true},
45 privs = {kick = true},
51 privs = {fly = true, teacher = true, creative = true, areas = true, student = false}
57 privs = {student = true},
60 coronaserver.savedata.ranks = coronaserver.savedata.ranks or {}
61 function coronaserver.get_rank(name)
62 return coronaserver.get_rank_by_name(coronaserver.savedata.ranks[name] or "student")
64 function coronaserver.get_rank_by_name(rankname)
65 for _, rank in pairs(coronaserver.ranks) do
66 if rank.name == rankname then
71 function coronaserver.get_player_name(name, brackets)
72 local rank = coronaserver.get_rank(name)
73 local rank_tag = minetest.colorize(rank.color, rank.tag)
77 return rank_tag .. brackets[1] .. name .. brackets[2] .. " "
79 minetest.register_on_joinplayer(function(player)
80 local name = player:get_player_name()
81 if coronaserver.get_rank(name).name == "student" and minetest.check_player_privs(name, {teacher = true}) then
82 coronaserver.savedata.ranks[name] = "teacher"
85 minetest.chat_send_all(coronaserver.get_player_name(name) .. "has joined the Server.")
86 player:set_nametag_attributes({color = coronaserver.get_rank(name).color})
88 minetest.register_on_leaveplayer(function(player)
89 local name = player:get_player_name()
90 minetest.chat_send_all(coronaserver.get_player_name(name) .. "has left the Server.")
92 minetest.register_on_chat_message(function(name, message)
93 minetest.chat_send_all(coronaserver.get_player_name(name, {"<", ">"}) .. message)
96 minetest.register_chatcommand("rank", {
97 params = "<player> <rank>",
98 description = "Einem Spieler einen Rang geben (owner|admin|moderator|developer|supporter|teacher|student)",
99 privs = {privs = true},
100 func = function(name, param)
101 local target = param:split(" ")[1]
102 local rank = param:split(" ")[2]
103 local target_ref = minetest.get_player_by_name(target)
104 local rank_ref = coronaserver.get_rank_by_name(rank)
106 minetest.chat_send_player(name, "Invalider Rang: " .. (rank or ""))
108 coronaserver.savedata.ranks[target] = rank
110 for _, r in pairs(ReverseTable(coronaserver.ranks)) do
111 for k, v in pairs(r.privs) do
114 if r.name == rank then
118 minetest.set_player_privs(target, privs)
119 minetest.chat_send_all(target .. " is now a " .. minetest.colorize(rank_ref.color, rank_ref.name))
121 target_ref:set_nametag_attributes({color = rank_ref.color})