Fix sfinv not updating on creative grant/revoke
authorrubenwardy <rw@rubenwardy.com>
Sun, 3 Feb 2019 11:45:45 +0000 (11:45 +0000)
committerrubenwardy <rw@rubenwardy.com>
Sun, 3 Feb 2019 11:45:45 +0000 (11:45 +0000)
mods/creative/init.lua

index ef190b8dc1e3a078dcffdfff11fbe51f8ba8fd5c..0f8d4dba50e669457b9241862c79361e9b01e355 100644 (file)
@@ -1,9 +1,24 @@
 creative = {}
 
+local function update_sfinv(name)
+       minetest.after(0, function()
+               local player = minetest.get_player_by_name(name)
+               if player then
+                       if sfinv.get_page(player):sub(1, 9) == "creative:" then
+                               sfinv.set_page(player, sfinv.get_homepage_name(player))
+                       else
+                               sfinv.set_player_inventory_formspec(player)
+                       end
+               end
+       end)
+end
+
 minetest.register_privilege("creative", {
        description = "Allow player to use creative inventory",
        give_to_singleplayer = false,
-       give_to_admin = false
+       give_to_admin = false,
+       on_grant = update_sfinv,
+       on_revoke = update_sfinv,
 })
 
 local creative_mode_cache = minetest.settings:get_bool("creative_mode")