网络协议
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 的存在。