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

Returns

True if the node is protected and the player cannot bypass this protection, false otherwise.

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:

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