Don't override param2 bits that are not used for rotation in screwdriver
authorPilzAdam <pilzadam@minetest.net>
Mon, 15 Dec 2014 21:12:21 +0000 (22:12 +0100)
committersfan5 <sfan5@live.de>
Sat, 20 Dec 2014 12:06:53 +0000 (13:06 +0100)
mods/screwdriver/init.lua

index 49ea615662fd1719044a8816ff3a3bd741e8779f..6e3fe816faa9e60a2287efc2a915d724d135e5a4 100644 (file)
@@ -37,16 +37,18 @@ local function screwdriver_handler(itemstack, user, pointed_thing, mode)
        end
 
        -- Set param2
-       local n = node.param2
-       local axisdir = math.floor(n / 4)
-       local rotation = n - axisdir * 4
+       local rotationPart = node.param2 % 32 -- get first 4 bits
+       local preservePart = node.param2 - rotationPart
+
+       local axisdir = math.floor(rotationPart / 4)
+       local rotation = rotationPart - axisdir * 4
        if mode == ROTATE_FACE then
-               n = axisdir * 4 + nextrange(rotation, 3)
+               rotationPart = axisdir * 4 + nextrange(rotation, 3)
        elseif mode == ROTATE_AXIS then
-               n = nextrange(axisdir, 5) * 4
+               rotationPart = nextrange(axisdir, 5) * 4
        end
 
-       node.param2 = n
+       node.param2 = preservePart + rotationPart
        minetest.swap_node(pos, node)
 
        if not minetest.setting_getbool("creative_mode") then