1 -- Minetest: builtin/privileges.lua
3 local S = core.get_translator("__builtin")
9 core.registered_privileges = {}
11 function core.register_privilege(name, param)
12 local function fill_defaults(def)
13 if def.give_to_singleplayer == nil then
14 def.give_to_singleplayer = true
16 if def.give_to_admin == nil then
17 def.give_to_admin = def.give_to_singleplayer
19 if def.description == nil then
20 def.description = S("(no description)")
24 if type(param) == "table" then
27 def = {description = param}
30 core.registered_privileges[name] = def
33 core.register_privilege("interact", S("Can interact with things and modify the world"))
34 core.register_privilege("shout", S("Can speak in chat"))
37 core.string_to_privs((core.settings:get("basic_privs") or "shout,interact"))
38 local basic_privs_desc = S("Can modify basic privileges (@1)",
39 core.privs_to_string(basic_privs, ', '))
40 core.register_privilege("basic_privs", basic_privs_desc)
42 core.register_privilege("privs", S("Can modify privileges"))
44 core.register_privilege("teleport", {
45 description = S("Can teleport self"),
46 give_to_singleplayer = false,
48 core.register_privilege("bring", {
49 description = S("Can teleport other players"),
50 give_to_singleplayer = false,
52 core.register_privilege("settime", {
53 description = S("Can set the time of day using /time"),
54 give_to_singleplayer = false,
56 core.register_privilege("server", {
57 description = S("Can do server maintenance stuff"),
58 give_to_singleplayer = false,
61 core.register_privilege("protection_bypass", {
62 description = S("Can bypass node protection in the world"),
63 give_to_singleplayer = false,
65 core.register_privilege("ban", {
66 description = S("Can ban and unban players"),
67 give_to_singleplayer = false,
70 core.register_privilege("kick", {
71 description = S("Can kick players"),
72 give_to_singleplayer = false,
75 core.register_privilege("give", {
76 description = S("Can use /give and /giveme"),
77 give_to_singleplayer = false,
79 core.register_privilege("password", {
80 description = S("Can use /setpassword and /clearpassword"),
81 give_to_singleplayer = false,
84 core.register_privilege("fly", {
85 description = S("Can use fly mode"),
86 give_to_singleplayer = false,
88 core.register_privilege("fast", {
89 description = S("Can use fast mode"),
90 give_to_singleplayer = false,
92 core.register_privilege("noclip", {
93 description = S("Can fly through solid nodes using noclip mode"),
94 give_to_singleplayer = false,
96 core.register_privilege("rollback", {
97 description = S("Can use the rollback functionality"),
98 give_to_singleplayer = false,
100 core.register_privilege("debug", {
101 description = S("Can enable wireframe"),
102 give_to_singleplayer = false,
105 core.register_can_bypass_userlimit(function(name, ip)
106 local privs = core.get_player_privs(name)
107 return privs["server"] or privs["ban"] or privs["privs"] or privs["password"]