CradleMC官方WIKI

适用源码:9da0beb8e8fdad85f50d7039408c3d98494e91c7。本文记录源码行为,默认配置不等于实服配置。
设计状态:按现状编写,具体业务批准记录未逐项核定;开发状态:下述能力有实现证据,限制单列;验证状态:完成定向源码核对,未执行自动测试或实服验收。

连接与事务

SqliteDatabase 管理一个同步保护的共享连接;initialize 设置 WAL、synchronous=NORMAL、busy_timeout=5000、foreign_keys=ON。
query 只串行保护回调,不自动建事务。transaction 关闭自动提交,成功 commit,SQL/运行时异常 rollback,最后恢复自动提交。rebuildSchema 是启动维护用独占结构流程,拒绝嵌套事务,临时调整外键并核验;不应在普通在线操作中复用。

库存不是一个模型

数据 存储表达 不能推导的能力
通用设施库存 Material→数量 不保留完整特殊物品
银行仓库 分页物品序列化 不代表每玩家独立账户
银行质押 设施下的材质数量 不等于装备仓或金融合约
制造材料/成品 序列化物品、订单计划、版本 不按当前配置重算历史产物
驿站包裹/货厢 完整物品字节、状态及交接证据 不可用 Material 计数替代

市场订单、托管、成交、付款与邮箱有独立仓储;其外部资金异常需要专项审查,此页不承诺跨系统原子性。

两类一致性边界

SQL 事务只能涵盖相应连接内写入,不能自动撤销 Vault 账户、玩家存档或世界修改。
制造与包裹使用 prepare→修改背包→保存回读凭据→finish;提交预留之后不能猜测恢复旧背包。恢复发现结果未知保持锁定,核对凭据而不是无条件重发。银行仓库/质押/通用库存没有因此自动获得同一协议。

当前驿站 schema

PortSchema 从 port/schema.sql 加载当前表、索引和触发器定义。空的相关结构初始化;已有结构逐项规范化比较,缺失或不匹配时报错,不用 IF NOT EXISTS 掩盖差异。
核验包含 foreign_keys、foreign_key_check、quick_check。当前流程不是旧版本逐级迁移器,不允许将旧迁移说明直接当现行入口。市场默认 database-file 为 market.db,但运行路径由实际配置决定。

开发与恢复约束

改字段前明确数据版本、消费者、旧订单/物品处理和中断点;检查幂等键、revision 及冻结快照。真实玩家文件回读不能用内存对象相等代替。备份与恢复应在隔离副本验证,不公开玩家记录和凭据,不在生产数据库试验修复 SQL。

来源

folia_plugin/src/main/java/com/flrv/infrastructure/persistence/SqliteDatabase.java#query/transaction/rebuildSchema、port/PortSchema.java(相对同 persistence 根);folia_plugin/src/main/resources/port/schema.sql;logic/port/service/StationPostService.java#handoff、logic/blacksmith/manufacturing/ManufacturingService.java#handoff(相对 com/flrv 根);docs/部署与资源维护.md。
相关:架构、资产常见问题。