aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2019-07-14 13:23:38 +0200
committerGitHub <noreply@github.com>2019-07-14 13:23:38 +0200
commit47492386ece5b016a7a0ed06d6a44cc7d60adb55 (patch)
tree186d5650989663e4fb1acb801212936eb6d7d468
parent0c319469439237ba0db31ccbffeef06e2f5ab45f (diff)
downloadminetest-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.lua9
-rw-r--r--doc/lua_api.txt16
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