Permalink
Browse files

core.rotate_node: Run callbacks like with any regular placed node (#6648

)
  • Loading branch information...
SmallJoker committed Nov 21, 2017
1 parent 4b553ec commit f7733f41ea36e7d4531fea61a4cd4b679514d263
Showing with 11 additions and 37 deletions.
  1. +11 −37 builtin/common/misc_helpers.lua
@@ -345,41 +345,20 @@ if INIT == "game" then
end
local undef = core.registered_nodes[unode.name]
if undef and undef.on_rightclick then
undef.on_rightclick(pointed_thing.under, unode, placer,
return undef.on_rightclick(pointed_thing.under, unode, placer,
itemstack, pointed_thing)
return
end
local fdir = placer and core.dir_to_facedir(placer:get_look_dir()) or 0
local wield_name = itemstack:get_name()

local above = pointed_thing.above
local under = pointed_thing.under
local iswall = (above.y == under.y)
local isceiling = not iswall and (above.y < under.y)
local anode = core.get_node_or_nil(above)
if not anode then
return
end
local pos = pointed_thing.above
local node = anode

if undef and undef.buildable_to then
pos = pointed_thing.under
node = unode
iswall = false
end

local name = placer and placer:get_player_name() or ""
if core.is_protected(pos, name) then
core.record_protection_violation(pos, name)
return
end

local ndef = core.registered_nodes[node.name]
if not ndef or not ndef.buildable_to then
return
end

if orient_flags.force_floor then
iswall = false
isceiling = false
@@ -393,31 +372,26 @@ if INIT == "game" then
iswall = not iswall
end

local param2 = fdir
if iswall then
core.set_node(pos, {name = wield_name,
param2 = dirs1[fdir + 1]})
param2 = dirs1[fdir + 1]
elseif isceiling then
if orient_flags.force_facedir then
core.set_node(pos, {name = wield_name,
param2 = 20})
cparam2 = 20
else
core.set_node(pos, {name = wield_name,
param2 = dirs2[fdir + 1]})
param2 = dirs2[fdir + 1]
end
else -- place right side up
if orient_flags.force_facedir then
core.set_node(pos, {name = wield_name,
param2 = 0})
else
core.set_node(pos, {name = wield_name,
param2 = fdir})
param2 = 0
end
end

if not infinitestacks then
itemstack:take_item()
return itemstack
end
local old_itemstack = ItemStack(itemstack)
local new_itemstack, removed = core.item_place_node(
itemstack, placer, pointed_thing, param2
)
return infinitestacks and old_itemstack or new_itemstack
end


0 comments on commit f7733f4

Please sign in to comment.