Tanmaya Meher
2018-08-25 2e7859c35e55b842752c6533edae2dd19290fabc
technic/machines/register/cables.lua
@@ -203,10 +203,29 @@
         def.on_place = function(itemstack, placer, pointed_thing)
            local pointed_thing_diff = vector.subtract(pointed_thing.above, pointed_thing.under)
            local num
            local changed
            for k, v in pairs(pointed_thing_diff) do
               if v ~= 0 then
                  changed = k
                  num = xyz[s(tostring(v):sub(-2, -2)..k)]
                  break
               end
            end
            local crtl = placer:get_player_control()
            if (crtl.aux1 or crtl.sneak) and not (crtl.aux1 and crtl.sneak) then
               local fine_pointed = minetest.pointed_thing_to_face_pos(placer, pointed_thing)
               fine_pointed = vector.subtract(fine_pointed, pointed_thing.above)
               fine_pointed[changed] = nil
               local ps = {}
               for p, _ in pairs(fine_pointed) do
                  ps[#ps+1] = p
               end
               local bigger = (math.abs(fine_pointed[ps[1]]) > math.abs(fine_pointed[ps[2]]) and ps[1]) or ps[2]
               if math.abs(fine_pointed[bigger]) < 0.3 then
                  num = num + 3
                  num = (num <= 6 and num) or num - 6
               else
                  num = xyz[((fine_pointed[bigger] < 0 and "-") or "") .. bigger]
               end
            end
            minetest.set_node(pointed_thing.above, {name = "technic:"..ltier.."_cable_plate_"..num})
@@ -218,6 +237,19 @@
      else
         def.groups.not_in_creative_inventory = 1
      end
      def.on_rotate = function(pos, node, user, mode, new_param2)
         local dir = 0
         if mode == screwdriver.ROTATE_FACE then -- left-click
            dir = 1
         elseif mode == screwdriver.ROTATE_AXIS then -- right-click
            dir = -1
         end
         local num = tonumber(node.name:sub(-1))
         num = num + dir
         num = (num >= 1 and num) or num + 6
         num = (num <= 6 and num) or num - 6
         minetest.swap_node(pos, {name = "technic:"..ltier.."_cable_plate_"..num})
      end
      minetest.register_node("technic:"..ltier.."_cable_plate_"..i, def)
      cable_tier["technic:"..ltier.."_cable_plate_"..i] = tier
   end