diff options
author | SmallJoker <SmallJoker@users.noreply.github.com> | 2019-07-14 13:23:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-14 13:23:38 +0200 |
commit | 47492386ece5b016a7a0ed06d6a44cc7d60adb55 (patch) | |
tree | 186d5650989663e4fb1acb801212936eb6d7d468 | |
parent | 0c319469439237ba0db31ccbffeef06e2f5ab45f (diff) | |
download | minetest-47492386ece5b016a7a0ed06d6a44cc7d60adb55.tar.gz minetest-47492386ece5b016a7a0ed06d6a44cc7d60adb55.tar.bz2 minetest-47492386ece5b016a7a0ed06d6a44cc7d60adb55.zip |
Docs: Clarify where to check for 'protection_bypass' (#8675)
-rw-r--r-- | builtin/game/item.lua | 9 | ||||
-rw-r--r-- | doc/lua_api.txt | 16 |
2 files changed, 9 insertions, 16 deletions
diff --git a/builtin/game/item.lua b/builtin/game/item.lua index ced28771e..7855880f8 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -251,11 +251,6 @@ local function user_name(user) return user and user:get_player_name() or "" end -local function is_protected(pos, name) - return core.is_protected(pos, name) and - not minetest.check_player_privs(name, "protection_bypass") -end - -- Returns a logging function. For empty names, does not log. local function make_log(name) return name ~= "" and core.log or function() end @@ -302,7 +297,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2, place_to = {x = under.x, y = under.y, z = under.z} end - if is_protected(place_to, playername) then + if core.is_protected(place_to, playername) then log("action", playername .. " tried to place " .. def.name .. " at protected position " @@ -552,7 +547,7 @@ function core.node_dig(pos, node, digger) return end - if is_protected(pos, diggername) then + if core.is_protected(pos, diggername) then log("action", diggername .. " tried to dig " .. node.name .. " at protected position " diff --git a/doc/lua_api.txt b/doc/lua_api.txt index b25c4ec9d..2650bfedf 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -4856,15 +4856,13 @@ Misc. * `minetest.decode_base64(string)`: returns string * Decodes a string encoded in base64. * `minetest.is_protected(pos, name)`: returns boolean - * Returns true, if player `name` shouldn't be able to dig at `pos` or do - other actions, definable by mods, due to some mod-defined ownership-like - concept. - * Returns false or nil, if the player is allowed to do such actions. - * `name` will be "" for non-players or unknown players. - * This function should be overridden by protection mods and should be used - to check if a player can interact at a position. - * This function should call the old version of itself if the position is - not protected by the mod. + * Returning `true` restricts the player `name` from modifying (i.e. digging, + placing) the node at position `pos`. + * `name` will be `""` for non-players or unknown players. + * This function should be overridden by protection mods. It is highly + recommended to grant access to players with the `protection_bypass` privilege. + * Cache and call the old version of this function if the position is + not protected by the mod. This will allow using multiple protection mods. * Example: local old_is_protected = minetest.is_protected |