Bondage Studio Bondage Studio
☰ 文档

公共 API 与开发

window.BCXItemRules API、构建命令与源码结构。

公共 API

BCXIR 在 window.BCXItemRules 上暴露辅助方法:

window.BCXItemRules.getRegistry()
window.BCXItemRules.registerItemRules("Strict Blindfold", payload)
window.BCXItemRules.deleteRegisteredItem("Strict Blindfold")
window.BCXItemRules.updateRegisteredItem("Strict Blindfold", { selfOnly: true })
window.BCXItemRules.requestItemRules(item)
window.BCXItemRules.clearRuleCache()
window.BCXItemRules.syncNow()
window.BCXItemRules.openSettings()
方法说明
getRegistry()返回本地的道具规则条目注册表。
registerItemRules(name, payload)为某道具名称注册或替换规则 payload。
deleteRegisteredItem(name)移除一个注册表条目。
updateRegisteredItem(name, patch)更新条目字段(如 { selfOnly: true })。
requestItemRules(item)向某穿戴道具的制作者请求规则 payload。
clearRuleCache()清除本地的远端规则缓存。
syncNow()强制执行一次同步。
openSettings()打开 BCXIR 设置菜单。

encodePayloaddecodePayload 仍作为紧凑 payload 工具保留,但不再用于 Craft.Description 存储。

开发

npm install
npm run dev
npm run check
npm test
npm run build

npm run dev 会在以下地址启动 Vite userscript 开发服务器:

http://127.0.0.1:5181

npm run build 会生成:

  • dist/BCXItemRules.script.js
  • dist/BCXItemRules.loader.user.js
  • 根目录下的对应文件
  • BCXItemRules.user.js loader 别名

在线脚本的托管基础地址配置在 package.json

{
  "bcxir": {
    "remoteBase": "https://bondage-studio.github.io/BCX-Item-Rules"
  }
}

源码结构

路径职责
src/entry/userscript 入口。
src/app/启动 wiring 与 public API 组装。
src/core/payload、道具 registry/cache 匹配、scanner、规则同步。
src/authoring/虚拟 BCX 角色编辑与 registry 保存流程。
src/settings/设置持久化与 BC canvas 设置页。
src/platform/BC/BCX/浏览器集成、ModSDK hook、道具规则通信、本地 reporter。
src/shared/常量、i18n、类型、工具与本地 managed state。

文档

本文档以按语言命名空间的 Markdown 形式存放于仓库的 site/ 目录 (site/en/…site/zh/…),并由中央组织站点 bondage-studio.github.io 在构建时聚合, 发布于 /bcxir/(以及 /zh/bcxir/)下。编辑任意 site/**/*.md 文件并推送到 main,会通过 notify-site 工作流触发站点重建。

三个 userscript 在仓库根目录构建,并由 .github/workflows/pages.yml 托管到本项目自身的 GitHub Pages 部署上。

发布检查清单

发布前运行:

npm run check
npm test
npm run build

然后发布或提交根目录下的生成文件:

  • BCXItemRules.loader.user.js
  • BCXItemRules.user.js
  • BCXItemRules.script.js

dist/ 中也会有同样的构建产物供本地检查,但它被 git 忽略。确认 package.jsonbcxir.remoteBase 指向 BCXItemRules.script.js 的托管位置。