绑定模式 (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 作为输出端进行绑定。

典型使用流程:

  1. 右键 P2P-A 打开 GUI,记录其位置为 selectedEntry,NBT 中保存输入类型。
  2. 切换模式为 OUTPUT(默认)。
  3. 在 GUI 中点击另一个 P2P-B:linkP2P(input=A, output=B),把 A 的频率写到 B。
  4. 所有同频 P2P 在世界中以青色边框高亮。

INPUT

核心差异:与 OUTPUT 反向——以当前选中项作为输出端,把选中的其他 P2P 绑定为它的输入。

典型使用流程:

  1. 右键要接收数据的 P2P-B 打开 GUI,记录其位置为 selectedEntry。
  2. 切换模式为 INPUT。
  3. 在 GUI 中点击源端 P2P-A:服务端把 A 设为 B 的输入(同 OUTPUT 的反向语义)。

COPY

核心差异:复制选中 P2P 的频率到多个目标(一次操作绑定多对)。

典型使用流程:

  1. 右键一个已经配对的输入 P2P-A,A 的频率非 0。
  2. 切换模式为 COPY。
  3. 在 GUI 中依次点击多个目标 P2P-B、C、D:所有目标获得与 A 相同的频率。

UNBIND

典型使用流程:

  1. 在任意模式下,右键 P2P 打开 GUI。
  2. 切换模式为 UNBIND。
  3. 点击列表中的 P2P:unlinkP2P(p2pIndex) 把频率置 0。

⚠️ UNBIND 解绑的是被点击的 P2P 自身;如果你要解绑整组,应先切到 OUTPUT 类型,对输入 P2P 执行解绑。

服务端实现要点

  • 模式切换通过 C2SUpdateMemoryInfo 把 info.mode.ordinal 写回 NBT。
  • 实际绑定逻辑在 GridServerCache.linkP2P / unlinkP2P / changeAllP2Ps 中,由被点击 P2P 的索引 + 模式联合决定。
  • 切换模式只是改 NBT,不会重新打开 GUI。

相关条目