From 47fdf55e9c5e5fffa59f006596cbe81f9da0c709 Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Tue, 1 Dec 2020 18:01:48 +0100 Subject: [PATCH] Backport 'Add minetest.is_creative_enabled' from MT5 --- builtin/common/misc_helpers.lua | 10 ++-------- builtin/game/item.lua | 6 +++--- builtin/game/misc.lua | 6 ++++++ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 67b017bd..fbd1c887 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -344,18 +344,12 @@ if INIT == "game" then --Wrapper for rotate_and_place() to check for sneak and assume Creative mode --implies infinite stacks when performing a 6d rotation. -------------------------------------------------------------------------------- - local creative_mode_cache = core.settings:get_bool("creative_mode") - local function is_creative(name) - return creative_mode_cache or - core.check_player_privs(name, {creative = true}) - end - core.rotate_node = function(itemstack, placer, pointed_thing) local name = placer and placer:get_player_name() or "" local invert_wall = placer and placer:get_player_control().sneak or false return core.rotate_and_place(itemstack, placer, pointed_thing, - is_creative(name), - {invert_wall = invert_wall}, true) + core.is_creative_enabled(name), + {invert_wall = invert_wall}, true) end end diff --git a/builtin/game/item.lua b/builtin/game/item.lua index c5aa7272..51c1db17 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -7,7 +7,6 @@ local abs, atan2, cos, floor, max, sin, random = local vadd, vnew, vmultiply, vnormalize, vsubtract = vector.add, vector.new, vector.multiply, vector.normalize, vector.subtract -local creative_mode = core.settings:get_bool("creative_mode") local node_drop = core.settings:get_bool("node_drop") ~= false local function copy_pointed_thing(pointed_thing) @@ -644,8 +643,9 @@ end function core.handle_node_drops(pos, drops, digger) -- Add dropped items to object's inventory local inv = digger and digger:get_inventory() + local diggername = user_name(digger) local give_item - if (not node_drop or creative_mode) and inv then + if (not node_drop or core.is_creative_enabled(diggername)) and inv then give_item = function(item) return inv:add_item("main", item) end @@ -699,7 +699,7 @@ function core.node_dig(pos, node, digger) wielded = wdef.after_use(wielded, digger, node, dp) or wielded else -- Wear out tool - if not creative_mode then + if not core.is_creative_enabled(diggername) then wielded:add_wear(dp.wear) if wielded:get_count() == 0 and wdef.sound and wdef.sound.breaks then core.sound_play(wdef.sound.breaks, { diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua index 5ca5012a..72dc1160 100644 --- a/builtin/game/misc.lua +++ b/builtin/game/misc.lua @@ -191,6 +191,12 @@ function core.record_protection_violation(pos, name) end end +-- To be overridden by Creative mods + +local creative_mode_cache = core.settings:get_bool("creative_mode") +function core.is_creative_enabled(name) + return creative_mode_cache +end -- Checks if specified volume intersects a protected volume