-signs_lib.wallmounted_rotate = function(pos, node, user, mode, new_param2)
- if mode ~= screwdriver.ROTATE_AXIS then return false end
- minetest.swap_node(pos, {name = node.name, param2 = (node.param2 + 1) % 6})
+
+local wall_dir_change = {
+ [0] = 4,
+ 0,
+ 5,
+ 1,
+ 2,
+ 3,
+ 0
+}
+
+signs_lib.wallmounted_rotate = function(pos, node, user, mode)
+ if mode ~= screwdriver.ROTATE_FACE 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()
+ if e and e.name == "signs:text" then
+ v:remove()
+ end
+ end
+ signs_lib.update_sign(pos)
+ return true
+end
+
+signs_lib.facedir_rotate = function(pos, node, user, mode)
+ if mode ~= screwdriver.ROTATE_FACE then return false end
+ newparam2 = (node.param2 %8) + 1
+ if newparam2 == 5 then
+ newparam2 = 6
+ elseif newparam2 > 6 then
+ newparam2 = 0
+ end
+ minetest.swap_node(pos, { name = node.name, param2 = newparam2 })