绑定模式 (BetterMemoryCardModes)
Advanced Memory Card的 4 种操作模式,决定 GUI 中点击 P2P 列表项时的服务端行为。 定义:com.projecturanus.betterp2p.item.BetterMemoryCardModes
基本信息
| 属性 | 值 |
|---|---|
| 枚举类 | BetterMemoryCardModes |
| 排序方式 | 由 ordinal 写入 NBT |
| 切换方式 | GUI 内的模式选择器按钮;next(reverse) 循环滚动 |
| 默认值 | OUTPUT |
枚举成员
| 模式 | ordinal | unlocalizedName | 说明 |
|---|---|---|---|
OUTPUT |
0 | gui.advanced_memory_card.mode.output |
选中输入 P2P,把其他同类型 P2P 绑定为其输出 |
INPUT |
1 | gui.advanced_memory_card.mode.input |
选中输出 P2P,把其他同类型 P2P 绑定为该输出的输入 |
COPY |
2 | gui.advanced_memory_card.mode.copy |
选中输入 P2P,把其频率复制到所有目标输出 |
UNBIND |
3 | gui.advanced_memory_card.mode.unbind |
选中任意 P2P,将其频率置 0(解绑) |
模式差异对比
OUTPUT(默认)
核心差异:以当前选中项作为输入端,把选中的其他 P2P 作为输出端进行绑定。
典型使用流程:
- 右键 P2P-A 打开 GUI,记录其位置为
selectedEntry,NBT 中保存输入类型。 - 切换模式为 OUTPUT(默认)。
- 在 GUI 中点击另一个 P2P-B:
linkP2P(input=A, output=B),把 A 的频率写到 B。 - 所有同频 P2P 在世界中以青色边框高亮。
INPUT
核心差异:与 OUTPUT 反向——以当前选中项作为输出端,把选中的其他 P2P 绑定为它的输入。
典型使用流程:
- 右键要接收数据的 P2P-B 打开 GUI,记录其位置为
selectedEntry。 - 切换模式为 INPUT。
- 在 GUI 中点击源端 P2P-A:服务端把 A 设为 B 的输入(同 OUTPUT 的反向语义)。
COPY
核心差异:复制选中 P2P 的频率到多个目标(一次操作绑定多对)。
典型使用流程:
- 右键一个已经配对的输入 P2P-A,A 的频率非 0。
- 切换模式为 COPY。
- 在 GUI 中依次点击多个目标 P2P-B、C、D:所有目标获得与 A 相同的频率。
UNBIND
典型使用流程:
- 在任意模式下,右键 P2P 打开 GUI。
- 切换模式为 UNBIND。
- 点击列表中的 P2P:
unlinkP2P(p2pIndex)把频率置 0。
⚠️ UNBIND 解绑的是被点击的 P2P 自身;如果你要解绑整组,应先切到 OUTPUT 类型,对输入 P2P 执行解绑。
服务端实现要点
- 模式切换通过
C2SUpdateMemoryInfo把info.mode.ordinal写回 NBT。 - 实际绑定逻辑在
GridServerCache.linkP2P/unlinkP2P/changeAllP2Ps中,由被点击 P2P 的索引 + 模式联合决定。 - 切换模式只是改 NBT,不会重新打开 GUI。