diff --git a/game_api.txt b/game_api.txt index 561387d2..3f311336 100644 --- a/game_api.txt +++ b/game_api.txt @@ -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 diff --git a/mods/creative/init.lua b/mods/creative/init.lua index a1d57c88..31af37c0 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -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.