Channel Loader
基本信息
loader/ChannelLoader.java —— 向本 mod 的
FCNetworkWrapper 注册 13 条网络消息,由
FluidCraft.preInit() 里的 ChannelLoader.INSTANCE.run() 触发
(FluidCraft.java:47)。
| 项 | 值 |
|---|---|
| 单例 | public static final ChannelLoader INSTANCE |
| 实现 | Runnable |
| 消息数 | 13(Side.SERVER 7 条 / Side.CLIENT 6 条) |
| 通道对象 | FluidCraft.proxy.netHandler(FCNetworkWrapper) |
13 条消息与 discriminator
discriminator 由 int id = 0 起顺序递增,同一包类注册两次时占两个 id:
| id | 包类 | 方向 |
|---|---|---|
| 0 | CPacketSwitchGuis |
SERVER |
| 1 | CPacketFluidPatternTermBtns |
SERVER |
| 2 | CPacketSwitchGuis |
CLIENT |
| 3 | CPacketDumpTank |
SERVER |
| 4 | SPacketFluidUpdate |
CLIENT |
| 5 | SPacketSuperStockReplenisherUpdate |
CLIENT |
| 6 | CPacketValueConfig |
SERVER |
| 7 | CPacketLevelMaintainer |
SERVER |
| 8 | SPacketLevelTerminalUpdate |
CLIENT |
| 9 | CPacketLevelTerminalCommands |
SERVER |
| 10 | SPacketLevelMaintainerGuiUpdate |
CLIENT |
| 11 | SPacketCustomButtonUpdate |
CLIENT |
| 12 | CPacketCustomButtonUpdate |
SERVER |
CPacketSwitchGuis与CPacketCustomButtonUpdate各注册 两次 (一次 SERVER、一次 CLIENT),所以 7 个不同包类用了 13 个 id。 按包类去重统计会得到 7,与实际的 13 条消息不符。
通用封包
network/ 下另有 2 个基类与 1 个编码器:
| 类 | 作用 |
|---|---|
CPacketCustomButtonUpdate |
通用按钮事件(S/C 同类) |
FCNetworkWrapper |
通道封装 |
FCIndexedCodec |
带索引的编解码 |
相关条目
- AE2 升级卡注册 — 同样是
postInit期的注册面 - Key Bindings — 会发
CPacketSwitchGuis/CPacketValueConfig - Configuration
源码
src/main/java/com/glodblock/github/loader/ChannelLoader.javasrc/main/java/com/glodblock/github/network/(13 个包类 +wrapper/)- 调用点:
src/main/java/com/glodblock/github/FluidCraft.java:47 - 复算:
grep -c 'registerMessage' src/main/java/com/glodblock/github/loader/ChannelLoader.java