Backport 'Add minetest.is_creative_enabled' from MT5

master
MoNTE48 2020-12-01 18:01:48 +01:00
parent b2370cbb17
commit 47fdf55e9c
3 changed files with 11 additions and 11 deletions

View File

@ -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

View File

@ -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, {

View File

@ -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