diff --git a/inventoryManager.lua b/inventoryManager.lua index 725371b..8eb4042 100644 --- a/inventoryManager.lua +++ b/inventoryManager.lua @@ -194,28 +194,50 @@ local function main() log.warn("INIT", "No smelter monitor on %s", cfg.SMELTER_MONITOR_SIDE) end - -- Find modem for client communication + -- Find wired modem for client/turtle communication for _, name in ipairs(peripheral.getNames()) do if peripheral.getType(name) == "modem" then - ctx.networkModem = peripheral.wrap(name) - ctx.networkModemName = name - ctx.networkModem.open(cfg.ORDER_CHANNEL) - ctx.networkModem.open(cfg.CRAFT_REPLY_CHANNEL) - ctx.networkModem.open(cfg.SYSTEM_CHANNEL) - break + local m = peripheral.wrap(name) + -- Prefer wired modem (has getNameLocal); skip wireless + if m.isWireless and not m.isWireless() then + ctx.networkModem = m + ctx.networkModemName = name + ctx.networkModem.open(cfg.ORDER_CHANNEL) + ctx.networkModem.open(cfg.CRAFT_REPLY_CHANNEL) + ctx.networkModem.open(cfg.SYSTEM_CHANNEL) + break + elseif not ctx.networkModem then + -- Fallback: use wireless if no wired available + ctx.networkModem = m + ctx.networkModemName = name + end end end if ctx.networkModem then - log.info("INIT", "Network modem: %s", ctx.networkModemName) + -- Ensure channels are open even on fallback modem + ctx.networkModem.open(cfg.ORDER_CHANNEL) + ctx.networkModem.open(cfg.CRAFT_REPLY_CHANNEL) + ctx.networkModem.open(cfg.SYSTEM_CHANNEL) + log.info("INIT", "Network modem: %s (wired=%s)", ctx.networkModemName, + tostring(ctx.networkModem.isWireless and not ctx.networkModem.isWireless())) else log.warn("INIT", "No modem found for client sync") end - -- Detect crafting turtle on network + -- Detect crafting turtle on network (must have craft() method) for _, name in ipairs(peripheral.getNames()) do if name:match("^turtle_") then - ctx.craftTurtleName = name - break + local methods = peripheral.getMethods(name) + if methods then + local hasCraft = false + for _, m in ipairs(methods) do + if m == "craft" then hasCraft = true; break end + end + if hasCraft then + ctx.craftTurtleName = name + break + end + end end end if ctx.craftTurtleName then