Fix mistake when calling on_priv_grant/revoke, and document them (#6341)
authorrubenwardy <rubenwardy@gmail.com>
Tue, 29 Aug 2017 05:57:56 +0000 (06:57 +0100)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Tue, 29 Aug 2017 05:57:56 +0000 (07:57 +0200)
builtin/game/register.lua
doc/lua_api.txt

index ad16651f897ce60dd988312039c03f6cf15efb60..1f355c7e56e2369e7396c16233bcb2e8bf19b583 100644 (file)
@@ -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
index b62fac67d2fada2c7af2a5d412112a0ac7df395d..9d490afde1e0411e5cd1eef2e4d51b3515b7e7ec 100644 (file)
@@ -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