3 privs = {"interact", "shout", "skycraft"},
16 privs = {"give", "fly", "fast"},
21 privs = {"kick", "ban", "noclip", "settime", "teleport", "bring", "protection_bypass", "worldedit"},
26 privs = {"server", "privs"},
40 skycraft.offline_ranks = {
51 function skycraft.get_rank(name)
52 local player = minetest.get_player_by_name(name)
54 return skycraft.offline_ranks[(minetest.settings:get("name") == name) and "console" or "offline"]
56 local rank = player:get_meta():get_string("rank")
57 rank = (rank == "") and "player" or rank
58 return skycraft.ranks[rank]
61 function skycraft.get_player_name(name, brackets)
62 local rank = skycraft.get_rank(name)
63 local rank_tag = minetest.colorize(rank.color, rank.tag)
67 return rank_tag .. brackets[1] .. name .. brackets[2]
70 function skycraft.update_nametag(player)
71 player:set_nametag_attributes({color = skycraft.get_rank(player:get_player_name()).color})
74 minetest.register_on_joinplayer(function(player)
75 skycraft.update_nametag(player)
78 minetest.register_on_leaveplayer(function(player)
79 minetest.chat_send_all(skycraft.get_player_name(player:get_player_name()) .. " left the Server")
80 skycraft.update_nametag(player)
83 minetest.register_on_chat_message(function(name, message)
84 minetest.chat_send_all(skycraft.get_player_name(name, {"<", ">"}) .. " " .. message)
88 minetest.register_chatcommand("rank", {
89 params = "<player> <rank>",
90 description = "Set a player's rank (owner|admin|dev|mod|creative|mvp|vip|player)",
91 privs = {privs = true},
92 func = function(name, param)
93 local target = param:split(" ")[1] or ""
94 local target_ref = minetest.get_player_by_name(target)
95 local rank = param:split(" ")[2] or ""
96 local rank_ref = skycraft.ranks[rank]
98 return false, "Invalid Rank '" .. rank .. "'."
99 elseif not target_ref then
100 return false, "Player '" .. target .. "' is not online."
103 for k, v in pairs(skycraft.ranks) do
104 for _, priv in pairs(v.privs or {}) do
111 target_ref:get_meta():set_string("rank", rank)
112 minetest.set_player_privs(target, privs)
113 skycraft.update_nametag(target_ref)
114 return true, "The rank of '" .. target .. "' has been updated to '" .. rank .. "'."