Skip to content

Commit

Permalink
Screwdriver: Allow non-native rotations if supported by targeted node
Browse files Browse the repository at this point in the history
This also allows custom actions (such as using the screwdriver as a wrench).
  • Loading branch information
thePalindrome authored and paramat committed Apr 11, 2017
1 parent fe02128 commit 8d43b98
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions mods/screwdriver/init.lua
Expand Up @@ -98,12 +98,17 @@ screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses)
end
-- can we rotate this paramtype2?
local fn = screwdriver.rotate[ndef.paramtype2]
if not fn then
if not fn and not ndef.on_rotate then
return itemstack
end

local should_rotate = true
local new_param2 = fn(pos, node, mode)
local new_param2
if fn then
new_param2 = fn(pos, node, mode)
else
new_param2 = node.param2
end

-- Node provides a handler, so let the handler decide instead if the node can be rotated
if ndef.on_rotate then
Expand All @@ -122,7 +127,7 @@ screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses)
return itemstack
end

if should_rotate then
if should_rotate and new_param2 ~= node.param2 then
node.param2 = new_param2
minetest.swap_node(pos, node)
minetest.check_for_falling(pos)
Expand Down

0 comments on commit 8d43b98

Please sign in to comment.