工作原理
BCXIR 的存储模型与运行时行为。
本页描述 BCXIR 的存储模型与运行时行为。这属于参考资料,常规使用并不需要阅读。
存储
BCXIR 把自己的数据与 BCX 分开保存。
制作者注册表(你自己的道具规则),按你的成员编号作为键:
localStorage["BCXIR_registry_<MemberNumber>"]
穿戴者缓存(你收到的远端制作者响应):
localStorage["BCXIR_rule_cache_<MemberNumber>"]
设置(BC 扩展设置):
Player.ExtensionSettings.BCXIR
本地设置备份:
localStorage["BCXIR_<MemberNumber>_backup"]
BCXIR 不会把规则 payload 存进 Craft.Description。旧的 [BCXIR:v1:<encoded>] 描述标记已不再支持。BCXIR 也绝不写入 Player.ExtensionSettings.BCX。
运行时:穿戴道具时应用规则
当某件匹配的制作道具被穿戴时,BCXIR 根据道具的制作者进行分流:
- 由本地玩家制作 → 读取本地注册表并应用。
- 由他人制作 → 检查本地缓存:
- 命中缓存 → 应用缓存的 payload(以缓存的制作者身份;见权限模式)。
- 未命中 → 向
item.Craft.MemberNumber请求 payload,然后进入冷却。只接受制作者的响应。
规则来源元数据会贯穿扫描过程,使每个来源以正确的身份应用:
- 注册表来源以自己身份应用。
- 缓存来源以缓存的制作者身份应用。
- 未缓存的远端道具仅请求 payload(并退避)。
被管理规则所用的发送者会被记录下来,以便后续的恢复 / 删除使用相同的发送者上下文。
通过 BCX 保守地应用
BCXIR 通过 BCX 自身的处理器来应用和移除规则,并对一切非自己创建的内容保持谨慎:
- 规则只应用到穿戴道具的本地玩家。
- 已存在的非 BCXIR BCX 规则不会被覆盖。
- 道具移除时,BCXIR 管理的规则会被保守地恢复或删除。
- 如果某个被管理规则在 BCXIR 之外被修改,BCXIR 会释放管理,而不是与外部改动对抗。
临时角色
BCXIR 出于两类目的使用短生命周期、纯本地的角色。它们都不会在房间内绘制、不会同步到服务器,且事后都会被清理:
- 编辑角色(
BCXIR Authoring)—— 在你编辑某道具规则时支撑虚拟 BCX 规则编辑器。一个虚拟 BCX 通信层会拦截目标为虚拟成员编号的 BCX 隐藏查询消息,并由内存中的规则存储进行响应。 - 最小制作者角色 —— 仅在应用缓存的离线制作者规则时插入,使 BCX 能解析发送者以进行权限检查。采用引用计数,仅用于本地检查。
- 操作者角色 —— 由
请使用我高级模式在查询批处理期间使用。
失败即停的保证
BCXIR 宁可什么都不做,也不做错事。它会在以下情况失败即停:
- 远端响应并非来自道具制作者。
- 离线制作者没有缓存。
- 制作者成员编号缺失,或 payload 损坏。
- BCX 隐藏查询被拒绝或超时。
编程访问与源码结构见公共 API 与开发。