1-- Minetest: builtin/privileges.lua 2 3-- 4-- Privileges 5-- 6 7core.registered_privileges = {} 8 9function core.register_privilege(name, param) 10 local function fill_defaults(def) 11 if def.give_to_singleplayer == nil then 12 def.give_to_singleplayer = true 13 end 14 if def.give_to_admin == nil then 15 def.give_to_admin = def.give_to_singleplayer 16 end 17 if def.description == nil then 18 def.description = "(no description)" 19 end 20 end 21 local def 22 if type(param) == "table" then 23 def = param 24 else 25 def = {description = param} 26 end 27 fill_defaults(def) 28 core.registered_privileges[name] = def 29end 30 31core.register_privilege("interact", "Can interact with things and modify the world") 32core.register_privilege("shout", "Can speak in chat") 33core.register_privilege("basic_privs", "Can modify 'shout' and 'interact' privileges") 34core.register_privilege("privs", "Can modify privileges") 35 36core.register_privilege("teleport", { 37 description = "Can teleport self", 38 give_to_singleplayer = false, 39}) 40core.register_privilege("bring", { 41 description = "Can teleport other players", 42 give_to_singleplayer = false, 43}) 44core.register_privilege("settime", { 45 description = "Can set the time of day using /time", 46 give_to_singleplayer = false, 47}) 48core.register_privilege("server", { 49 description = "Can do server maintenance stuff", 50 give_to_singleplayer = false, 51 give_to_admin = true, 52}) 53core.register_privilege("protection_bypass", { 54 description = "Can bypass node protection in the world", 55 give_to_singleplayer = false, 56}) 57core.register_privilege("ban", { 58 description = "Can ban and unban players", 59 give_to_singleplayer = false, 60 give_to_admin = true, 61}) 62core.register_privilege("kick", { 63 description = "Can kick players", 64 give_to_singleplayer = false, 65 give_to_admin = true, 66}) 67core.register_privilege("give", { 68 description = "Can use /give and /giveme", 69 give_to_singleplayer = false, 70}) 71core.register_privilege("password", { 72 description = "Can use /setpassword and /clearpassword", 73 give_to_singleplayer = false, 74 give_to_admin = true, 75}) 76core.register_privilege("fly", { 77 description = "Can use fly mode", 78 give_to_singleplayer = false, 79}) 80core.register_privilege("fast", { 81 description = "Can use fast mode", 82 give_to_singleplayer = false, 83}) 84core.register_privilege("noclip", { 85 description = "Can fly through solid nodes using noclip mode", 86 give_to_singleplayer = false, 87}) 88core.register_privilege("rollback", { 89 description = "Can use the rollback functionality", 90 give_to_singleplayer = false, 91}) 92core.register_privilege("debug", { 93 description = "Allows enabling various debug options that may affect gameplay", 94 give_to_singleplayer = false, 95 give_to_admin = true, 96}) 97 98core.register_can_bypass_userlimit(function(name, ip) 99 local privs = core.get_player_privs(name) 100 return privs["server"] or privs["ban"] or privs["privs"] or privs["password"] 101end) 102