SmallJoker
2023-08-26 dfcf64c1d07f4006045af37b0b01dbfc82dbb1d1
technic/machines/register/cables.lua
@@ -11,6 +11,13 @@
   return cable_tier[name]
end
function technic.register_cable_tier(name, tier)
   assert(technic.machines[tier], "Tier does not exist")
   assert(type(name) == "string", "Invalid node name")
   cable_tier[name] = tier
end
local function check_connections(pos)
   -- Build a table of all machines
   local machines = {}
@@ -60,7 +67,7 @@
            local tier = network.tier
            -- Actually add it to the (cached) network
            -- This is similar to check_node_subp
            -- !! IMPORTANT: ../switching_station.lua -> check_node_subp() must be kept in sync
            technic.cables[minetest.hash_node_position(pos)] = network_id
            pos.visited = 1
            if technic.is_tier_cable(node.name, tier) then
@@ -69,23 +76,18 @@
            elseif technic.machines[tier][node.name] then
               -- Found a machine
               local eu_type = technic.machines[tier][node.name]
               meta:set_string(tier.."_network", minetest.pos_to_string(sw_pos))
               meta:set_string(tier.."_network", string.format("%.20g", network_id))
               if     eu_type == technic.producer then
                  table.insert(network.PR_nodes,pos)
                  table.insert(network.PR_nodes, pos)
               elseif eu_type == technic.receiver then
                  table.insert(network.RE_nodes,pos)
                  table.insert(network.RE_nodes, pos)
               elseif eu_type == technic.producer_receiver then
                  table.insert(network.PR_nodes,pos)
                  table.insert(network.RE_nodes,pos)
               elseif eu_type == "SPECIAL" and
                     (pos.x ~= sw_pos.x or pos.y ~= sw_pos.y or pos.z ~= sw_pos.z) and
                     nil then
                  -- TODO: This case was never executed. Needs testing!
                  -- Supply converter.
                  table.insert(network.SP_nodes,pos)
                  table.insert(network.PR_nodes, pos)
                  table.insert(network.RE_nodes, pos)
               elseif eu_type == technic.battery then
                  table.insert(network.BA_nodes,pos)
                  table.insert(network.BA_nodes, pos)
               end
               -- Note: SPECIAL (i.e. switching station) is not traversed!
            end
         elseif dead_end and not placed then
            -- Dead end removed, remove it from the network