From: Alex Ford Date: Sat, 8 Apr 2017 04:03:11 +0000 (-0600) Subject: Screwdriver: Allow non-native rotations if supported by targeted node X-Git-Tag: 0.4.16~33 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8d43b984fc70e91c185242f24704544b46fe42ea;p=oweals%2Fminetest_game.git Screwdriver: Allow non-native rotations if supported by targeted node This also allows custom actions (such as using the screwdriver as a wrench). --- diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index 2a53ae37..e76f0545 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -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 @@ -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)