分世界背包
把世界分成群组,玩家跨群组时自动换成那个群组的背包。常见用法:创造世界、小游戏世界、活动世界各自独立。
开启
- 设好群组:
/cw group create creative
/cw group add creative creative_world
/cw group add creative creative_nether
config.yml打开inventories.enabled: true,执行/cw reload。
没有写在任何群组里的世界都属于 default 群组,彼此共用。所以只要把「要独立的世界」放进群组即可,主世界、地狱、末地不用设定。
分开哪些资料
inventories.yml 的 shares(所有群组一致):
| 项目 | 内容 |
|---|---|
inventory | 背包、盔甲、副手、选中的格子 |
enderchest | 末影箱 |
health | 血量 |
food | 饱食度、饱和度 |
exp | 等级与经验 |
effects | 药水效果 |
/cw group shares inventory enderchest exp # 只分背包、末影箱、经验
为什么所有群组用同一组 shares
如果 A 群组分开经验、B 群组不分,玩家在两边来回时经验会被其中一边覆盖掉。统一设定可以保证任何资料都不会被误盖。
安全机制
- 资料存在
plugins/CloudWorlds/inventories/<群组>/<玩家UUID>.yml,在后台线程依序写入,写入先写临时文件再改名,写到一半断电也不会坏。 - 读取失败(文件损坏)时不切换,玩家保留目前的背包并收到提示,不会被清空。
- 登录时如果玩家所在世界的群组和上次不同(例如你改了群组设定),会自动换成正确的背包。
- 第一次进入某个群组时是全新的:空背包、满血、满饱食度、0 经验。
cloudworlds.inventory.bypass 的玩家不受影响(所有世界同一个背包)。