Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
creative: Update for compatibility with minetest.creative_is_enabled (#…
  • Loading branch information
sfan5 committed Jun 6, 2020
1 parent b1ab8d5 commit 6d2a897
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
8 changes: 3 additions & 5 deletions game_api.txt
Expand Up @@ -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
Expand Down
17 changes: 13 additions & 4 deletions mods/creative/init.lua
Expand Up @@ -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.
Expand Down

0 comments on commit 6d2a897

Please sign in to comment.