网络协议

GuideNH 用 SimpleNetworkWrapper(FML 简化封包),通道名就是 modid。

项目 值 来源
通道 guidenh network/GuideNhNetwork.java:12 — NetworkRegistry.INSTANCE.newSimpleChannel(GuideNH.MODID)
访问器 GuideNhNetwork.channel() GuideNhNetwork.java:31
注册封包数 3 registerMessage 共 3 次

封包(3)

判别 ID 消息类 处理器 方向
0 GuideNhServerHelloMessage GuideNhServerHelloHandler Side.CLIENT
1 GuideNhStructureRequestMessage GuideNhStructureRequestHandler Side.SERVER
7 GuideNhRegionExportRequestMessage GuideNhRegionExportServerHandler Side.SERVER

⚠️ 判别 ID 不连续:只注册了 0、1、7 三个。2–6 缺号。 在 SimpleNetworkWrapper 里判别 ID 是数组下标,缺号意味着历史版本 曾占用过 2–6 后被移除(或上游预留)。这不是错误,但按 ID 推断「有几个封包」 会得出 8 个的错误结论。

消息类(16 文件)

network/ 下除处理器外还有配套的消息与工具类:

类 职责
GuideNhNetwork 通道定义与封包注册
GuideNhNetworkEvents 网络事件
GuideNhCustomPayloadLimits 自定义载荷大小上限
GuideNhServerHelloMessage / GuideNhServerHelloHandler 握手,ID 0
GuideNhStructureRequestMessage / GuideNhStructureRequestHandler / GuideNhStructureChunkAssembler 结构分块传输,ID 1
GuideNhRegionExportRequestMessage / GuideNhRegionExportReplyMessage / GuideNhRegionExportClientHandler / GuideNhRegionExportServerHandler 区域导出,ID 7
GuideNhClientBridgeMessage / GuideNhClientBridgeHandler / GuideNhClientBridgeDispatcher 客户端桥接(/guidenh importstructure 走这条)

GuideNhStructureChunkAssembler 说明结构数据是分块传输的—— 大结构不会一次性塞进单个封包,而是由组装器在接收端拼接。

运行时桥接(Runtime Bridge)

bridge/ 包(48 文件)是另一条与封包并行的通道,供运行时而非编辑器使用:

子包 文件数 职责
bridge/semantic 22 语义查询(6 个核心类 + providers/ 下 16 个 provider:物品 / 实体 / 配方 / 任务 / 声音 / 矿种…)
bridge/preview 13 物品预览缓存与检索
bridge/protocol 5 桥接协议(信封、编解码、上限、错误、响应工厂)
bridge/transport 4 WebSocket 传输层
bridge/security 1 BridgeTokenAuthenticator
bridge(根) 3 GuideNhRuntimeBridge / GuideNhRuntimeBridgeServer / GuideNhRuntimeBridgeSettings

⚠️ 桥接不是 Forge 封包,而是独立的 WebSocket 传输 (bridge/transport/WebSocketFrame(Handshake|Codec).java), 与上面 3 条 SimpleNetworkWrapper 封包是两套独立机制。

配置段 ModConfig.RuntimeBridge 有 9 项(见 ModConfig), ModConfig.Runtime 有 2 项。

载荷大小

GuideNhCustomPayloadLimits 专门管理自定义载荷上限。 Forge 对单个自定义载荷有硬上限,大结构必须分块—— 这解释了 GuideNhStructureChunkAssembler 的存在。

相关条目

  • 指令 - /guidenh importstructure 触发客户端桥接封包
  • 结构导出 - 结构数据的来源
  • ModConfig - Runtime / RuntimeBridge 配置段
  • 指南框架 - 多语言指南的服务端同步