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_leaveplayer(function(player)
75 minetest.chat_send_all(skycraft.get_player_name(player:get_player_name()) .. " left the Server")
76 skycraft.update_nametag(player)
79 minetest.register_on_chat_message(function(name, message)
80 minetest.chat_send_all(skycraft.get_player_name(name, {"<", ">"}) .. " " .. message)
84 minetest.register_chatcommand("rank", {
85 params = "<player> <rank>",
86 description = "Set a player's rank (owner|admin|dev|mod|creative|mvp|vip|player)",
87 privs = {privs = true},
88 func = function(name, param)
89 local target = param:split(" ")[1] or ""
90 local target_ref = minetest.get_player_by_name(target)
91 local rank = param:split(" ")[2] or ""
92 local rank_ref = skycraft.ranks[rank]
94 return false, "Invalid Rank '" .. rank .. "'."
95 elseif not target_ref then
96 return false, "Player '" .. target .. "' is not online."
99 for k, v in pairs(skycraft.ranks) do
100 for _, priv in pairs(v.privs or {}) do
107 target_ref:get_meta():set_string("rank", rank)
108 minetest.set_player_privs(target, privs)
109 skycraft.update_nametag(target_ref)
110 return true, "The rank of '" .. target .. "' has been updated to '" .. rank .. "'."