From 72c09f524b1616dd75bb6e35008196b5ca6351a2 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 29 Aug 2017 06:57:56 +0100 Subject: [PATCH] Fix mistake when calling on_priv_grant/revoke, and document them (#6341) --- builtin/game/register.lua | 4 ++-- doc/lua_api.txt | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/builtin/game/register.lua b/builtin/game/register.lua index ad16651f8..1f355c7e5 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -437,9 +437,9 @@ end function core.run_priv_callbacks(name, priv, caller, method) if not core.registered_privileges[priv]["on_" .. method] or - core.registered_privileges[priv]["on_" .. method](name, caller) then + not core.registered_privileges[priv]["on_" .. method](name, caller) then for _, func in ipairs(core["registered_on_priv_" .. method]) do - if not func(name, caller) then + if not func(name, caller, priv) then break end end diff --git a/doc/lua_api.txt b/doc/lua_api.txt index b62fac67d..9d490afde 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2447,6 +2447,14 @@ Call these functions only at load time! * `minetest.register_on_item_eat(func(hp_change, replace_with_item, itemstack, user, pointed_thing))` * Called when an item is eaten, by `minetest.item_eat` * Return `true` or `itemstack` to cancel the default item eat response (i.e.: hp increase) +* `minetest.register_on_priv_grant(function(name, granter, priv))` + * Called when `granter` grants the priv `priv` to `name`. + * Note that the callback will be called twice if it's done by a player, once with granter being the player name, + and again with granter being nil. +* `minetest.register_on_priv_revoke(function(name, revoker, priv))` + * Called when `revoker` revokes the priv `priv` from `name`. + * Note that the callback will be called twice if it's done by a player, once with revoker being the player name, + and again with revoker being nil. ### Other registration functions * `minetest.register_chatcommand(cmd, chatcommand definition)` @@ -2464,8 +2472,9 @@ Call these functions only at load time! `granter_name` will be nil if the priv was granted by a mod. * `on_revoke(name, revoker_name)`: Called when taken from player `name` by `revoker_name`. `revoker_name` will be nil if the priv was revoked by a mod - * Note that the above two callbacks will be called twice if a player is responsible - + * Note that the above two callbacks will be called twice if a player is responsible - once with the player name, and then with a nil player name. + * Return true in the above callbacks to stop register_on_priv_grant or revoke being called. * `minetest.register_authentication_handler(handler)` * See `minetest.builtin_auth_handler` in `builtin.lua` for reference