From 3678fc1845ae7eb2f9972e1ed4ccc0f4ccee95b6 Mon Sep 17 00:00:00 2001 From: JackMacWindows Date: Sun, 9 Mar 2025 23:26:34 -0400 Subject: [PATCH] Allow GPS to use modems connected through a hub --- .../data/computercraft/lua/rom/apis/gps.lua | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua b/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua index e9c33b833..bf638e72b 100644 --- a/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua +++ b/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua @@ -106,16 +106,10 @@ function locate(_nTimeout, _bDebug) return commands.getBlockPosition() end - -- Find a modem - local sModemSide = nil - for _, sSide in ipairs(rs.getSides()) do - if peripheral.getType(sSide) == "modem" and peripheral.call(sSide, "isWireless") then - sModemSide = sSide - break - end - end - - if sModemSide == nil then + -- Open GPS channel to listen for ping responses + local modem = peripheral.find("modem", function(_, m) return m.isWireless() end) + + if modem == nil then if _bDebug then print("No wireless modem attached") end @@ -126,8 +120,7 @@ function locate(_nTimeout, _bDebug) print("Finding position...") end - -- Open GPS channel to listen for ping responses - local modem = peripheral.wrap(sModemSide) + local sModemSide = peripheral.getName(modem) local bCloseChannel = false if not modem.isOpen(CHANNEL_GPS) then modem.open(CHANNEL_GPS)