From fe41725e5027e90787f18088be82839760cccbb5 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Thu, 29 Mar 2018 21:44:13 +0200 Subject: core.rotate_node: Do not trigger after_place_node (#6900) --- builtin/common/misc_helpers.lua | 6 +++--- builtin/game/item.lua | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'builtin') diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index ab2da14ea..aad5f2d21 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -341,7 +341,7 @@ if INIT == "game" then local dirs2 = {20, 23, 22, 21} function core.rotate_and_place(itemstack, placer, pointed_thing, - infinitestacks, orient_flags) + infinitestacks, orient_flags, prevent_after_place) orient_flags = orient_flags or {} local unode = core.get_node_or_nil(pointed_thing.under) @@ -394,7 +394,7 @@ if INIT == "game" then local old_itemstack = ItemStack(itemstack) local new_itemstack, removed = core.item_place_node( - itemstack, placer, pointed_thing, param2 + itemstack, placer, pointed_thing, param2, prevent_after_place ) return infinitestacks and old_itemstack or new_itemstack end @@ -415,7 +415,7 @@ if INIT == "game" then local invert_wall = placer and placer:get_player_control().sneak or false core.rotate_and_place(itemstack, placer, pointed_thing, is_creative(name), - {invert_wall = invert_wall}) + {invert_wall = invert_wall}, true) return itemstack end end diff --git a/builtin/game/item.lua b/builtin/game/item.lua index d4ce6002f..ea9681ae2 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -261,7 +261,8 @@ local function make_log(name) return name ~= "" and core.log or function() end end -function core.item_place_node(itemstack, placer, pointed_thing, param2) +function core.item_place_node(itemstack, placer, pointed_thing, param2, + prevent_after_place) local def = itemstack:get_definition() if def.type ~= "node" or pointed_thing.type ~= "node" then return itemstack, false @@ -375,7 +376,7 @@ function core.item_place_node(itemstack, placer, pointed_thing, param2) local take_item = true -- Run callback - if def.after_place_node then + if def.after_place_node and not prevent_after_place then -- Deepcopy place_to and pointed_thing because callback can modify it local place_to_copy = {x=place_to.x, y=place_to.y, z=place_to.z} local pointed_thing_copy = copy_pointed_thing(pointed_thing) -- cgit v1.2.3