背包保护与异常恢复
保存的状态
比赛开始前,插件持久化玩家的:
- 背包、盔甲和副手。
- 游戏模式、飞行状态和饥饿值。
- 与 BodySize 联动相关的体型状态。
- 其他比赛结束时必须恢复的玩家属性。
保存完成后才清空并发放比赛装备,避免在备份未落盘时改变玩家物品。
正常恢复
比赛结束、退出大厅或安全离场时,在玩家实体所有者上下文恢复备份。成功恢复后清除对应备份,避免同一份物品状态被重复应用。
玩家离线时不直接写离线玩家实时对象;备份保留到下次上线,登录流程会再次检查。
管理员恢复
/ccb check <玩家名或 UUID>
- 需要
cubeball.admin。 - 可由玩家或控制台执行。
- 目标必须在线且存在备份,才在目标玩家实体上下文恢复。
- 目标离线时保留备份,不直接修改离线数据。
- 命令不会创建第二份备份或第二份物品。
备份目录
plugins/<CubeCubeBall 数据目录>/inv_backup/
不要在服务器运行时编辑或删除文件。人工处置前先备份整个目录,并记录玩家、UUID/名称识别模式、比赛场地和控制台日志。
防重复与清理原则
- 恢复成功后清除对应票据/备份引用。
- 物品和 Inventory 读写只在玩家实体上下文进行。
- 任务失败、实体退休和插件关闭都必须有终止路径。
- Region 线程不等待磁盘或另一个 Region 的同步结果。