creative: Update for compatibility with minetest.creative_is_enabled (#2691)
authorsfan5 <sfan5@live.de>
Sat, 6 Jun 2020 22:15:35 +0000 (00:15 +0200)
committerGitHub <noreply@github.com>
Sat, 6 Jun 2020 22:15:35 +0000 (00:15 +0200)
game_api.txt
mods/creative/init.lua

index 561387d2993e482be780d1472467172916f28562..3f311336a351343cc59f3de763b94977e7dfcadb 100644 (file)
@@ -93,11 +93,9 @@ For example,
 is used to show all tools. Name is used in the sfinv page name, title is the
 human readable title.
 
-`is_enabled_for` is used to check whether a player is in creative mode:
-
-    creative.is_enabled_for(name)
-
-Override this to allow per-player game modes.
+Creative provides `creative.is_enabled_for(name)`, which is identical in
+functionality to the engine's `minetest.creative_is_enabled(name)`.
+Its use is deprecated and it should also not be overriden.
 
 The contents of `creative.formspec_add` is appended to every creative inventory
 page. Mods can use it to add additional formspec elements onto the default
index a1d57c887d96ef0929b1c589fecdbf4bcc17555f..31af37c00fc361bdf1e9c2ad41495c668c04459e 100644 (file)
@@ -27,16 +27,25 @@ minetest.register_privilege("creative", {
        on_revoke = update_sfinv,
 })
 
-local creative_mode_cache = minetest.settings:get_bool("creative_mode")
+-- Override the engine's creative mode function
+local old_is_creative_enabled = minetest.is_creative_enabled
 
+function minetest.is_creative_enabled(name)
+       if name == "" then
+               return old_is_creative_enabled(name)
+       end
+       return minetest.check_player_privs(name, {creative = true}) or
+               old_is_creative_enabled(name)
+end
+
+-- For backwards compatibility:
 function creative.is_enabled_for(name)
-       return creative_mode_cache or
-               minetest.check_player_privs(name, {creative = true})
+       return minetest.is_creative_enabled(name)
 end
 
 dofile(minetest.get_modpath("creative") .. "/inventory.lua")
 
-if creative_mode_cache then
+if minetest.is_creative_enabled("") then
        -- Dig time is modified according to difference (leveldiff) between tool
        -- 'maxlevel' and node 'level'. Digtime is divided by the larger of
        -- leveldiff and 1.