Minecraft OpenComputers跨远距离通信问题:Linked Card编程困惑
超远距离服务器-计算机通信解决方案
无需Linked Card的替代方案
- 区块加载器+无线Modem中继:
普通无线Modem的通信受区块加载限制,你可以在通信路径的关键节点放置区块加载器,确保中间区块始终处于加载状态。然后用多个计算机作为中继节点,每个节点的无线Modem监听指定端口,收到消息后转发到下一个节点的Modem,以此实现远距离通信。
中继节点示例代码:local modem = peripheral.find("wireless_modem") if not modem then error("No wireless modem found!") end local listenPort = 1234 local forwardPort = 1235 modem.open(listenPort) while true do local event, side, channel, replyChannel, message, distance = os.pullEvent("modem_message") print("Forwarding message: " .. message) modem.transmit(forwardPort, listenPort, message) end
Linked Card通信代码实现
Linked Card通过配对实现无限范围通信,无需依赖Modem,以下是基础通信代码:
接收端代码
-- 查找Linked Card组件 local linkedCard = peripheral.find("linked_card") if not linkedCard then error("未找到Linked Card!") end local myID = linkedCard.getID() print("监听中,当前卡片ID:" .. myID) -- 循环监听消息事件 while true do local event, senderID, message = os.pullEvent("linked_message") print("收到来自 " .. senderID .. " 的消息:" .. message) -- 可选:回复消息 linkedCard.sendMessage(senderID, "已收到消息:" .. message) end
发送端代码
local linkedCard = peripheral.find("linked_card") if not linkedCard then error("未找到Linked Card!") end -- 替换为接收端卡片的ID(可从接收端控制台获取) local targetCardID = "xxxxxx-xxxxxx-xxxxxx" local sendMessage = "服务器请求:获取当前状态" -- 发送消息 linkedCard.sendMessage(targetCardID, sendMessage) print("消息已发送至 " .. targetCardID)
使用前需先将两张Linked Card配对:手持其中一张右键,再右键另一张即可完成配对。
内容的提问来源于stack exchange,提问作者KwikZilver
相关产品推荐
相关产品推荐

