]> git.lizzy.rs Git - signs_lib.git/commitdiff
Fix broken/bad screwdriver rotation handling
authorVanessa Dannenberg <vanessa.e.dannenberg@gmail.com>
Wed, 11 Sep 2019 19:54:50 +0000 (15:54 -0400)
committerVanessa Dannenberg <vanessa.e.dannenberg@gmail.com>
Wed, 11 Sep 2019 20:03:02 +0000 (16:03 -0400)
api.lua
standard_signs.lua

diff --git a/api.lua b/api.lua
index 5a14a74175b20987297fc284b383d35dcafc1f08..55aaa6487425d6c647207ee71f4016f013f28fa1 100644 (file)
--- a/api.lua
+++ b/api.lua
@@ -66,7 +66,11 @@ signs_lib.wall_fdir_to_back = {
 local ctexcache = {}
 
 signs_lib.wallmounted_rotate = function(pos, node, user, mode)
-       if mode ~= screwdriver.ROTATE_FACE then return false end
+       if not signs_lib.can_modify(pos, user) then return false end
+
+       if mode ~= screwdriver.ROTATE_FACE or string.match(node.name, "_onpole") then
+               return false
+       end
        minetest.swap_node(pos, { name = node.name, param2 = wall_dir_change[node.param2 % 6] })
        for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do
                local e = v:get_luaentity()
@@ -79,8 +83,15 @@ signs_lib.wallmounted_rotate = function(pos, node, user, mode)
 end
 
 signs_lib.facedir_rotate = function(pos, node, user, mode)
-       if mode ~= screwdriver.ROTATE_FACE or not signs_lib.can_modify(pos, user) then return end
-       newparam2 = ((node.param2 % 6 ) == 0) and 1 or 0
+       if not signs_lib.can_modify(pos, user) then return false end
+
+       if mode ~= screwdriver.ROTATE_FACE or string.match(node.name, "_onpole") then
+               return false
+       end
+
+       local newparam2 = node.param2 + 1
+       if newparam2 > 3 then newparam2 = 0 end
+
        minetest.swap_node(pos, { name = node.name, param2 = newparam2 })
        for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do
                local e = v:get_luaentity()
index 2cbe18d33c21d47f526a85383980d301880f7575..d9ce07d6c2e33a49bcea0ac6989ebfd77170a877 100644 (file)
@@ -41,7 +41,7 @@ for _, onpole in ipairs({"", "_onpole"}) do
                on_destruct = signs_lib.destruct_sign,
                on_receive_fields = signs_lib.receive_fields,
                on_punch = signs_lib.update_sign,
-               on_rotate = on_rotate,
+               on_rotate = signs_lib.wallmounted_rotate,
                number_of_lines = signs_lib.standard_lines,
                horiz_scaling = signs_lib.standard_hscale,
                vert_scaling = signs_lib.standard_vscale,
@@ -84,7 +84,7 @@ for _, onpole in ipairs({"", "_onpole"}) do
                on_receive_fields = signs_lib.receive_fields,
                on_punch = signs_lib.update_sign,
                can_dig = signs_lib.can_modify,
-               on_rotate = on_rotate,
+               on_rotate = signs_lib.wallmounted_rotate,
                number_of_lines = signs_lib.standard_lines,
                horiz_scaling = signs_lib.standard_hscale,
                vert_scaling = signs_lib.standard_vscale,