This is an old revision of the document!
Table of Contents
advtrains.is_protected
Checks if a node is protected.
Note: this page has been written for Advtrains 2.0.1 TSS and Minetest 5.1.0. Examples and practices described in this page don't take advantage of improvements introduced in later releases.
Syntax
advtrains.is_protected(pos, name)
Parameters
pos(table): a Minetest vector position.name(string): the player name. It does not need to be logged in, but it *needs* to exist in theauth.txtfile.
Errors and warnings
It gives an error if the name parameter is nil:
2019-01-01 15:00:00: Error[Server]: advtrains.is_protected() called without name parameter!
How it works internally
This Lua function checks whether the designated player has the protection_bypass privilege. If not, it checks whether the node is protected by using the minetest.is_protected function, which may be overridden by protection mods.
If the player has the protection_bypass privilege, Advtrains considers all nodes “unprotected” regardless of current protection status.
Examples
Consider that you are running a Minetest server and:
- Two players,
aliceandbobare connected to the server alicehas theprotection_bypassprivilege whilebobhas no privileges- Node at position (0,1,5) has been protected
advtrains.is_protected({x=0, y=1,y=5}, "alice") -- returns false: node is protected, but protection bypass is enabled for this user advtrains.is_protected({x=0, y=1,y=5}, "bob") -- returns true: node is protected advtrains.is_protected({x=-10,y=0,y=0}, "bob") -- returns false: node is not protected
In source code
advtrains/helpers.lua, lines 214 to 223:
- is_protected.lua
function advtrains.is_protected(pos, name) if not name then error("advtrains.is_protected() called without name parameter!") end if minetest.check_player_privs(name, {protection_bypass=true}) then --player can bypass protection return false end return minetest.is_protected(pos, name) end
