本帖最后由 hello09x 于 2023-12-26 19:51 编辑
OneSync
—— 跨服同步一切你想要的内容
注意:依赖于 1.20.2 的数据包特性,仅支持 1.20.2 以上 Paper 及其下游
支持 Folia
描述 OneSync 是一款仅依赖 MySQL 的跨服同步插件,不需要 Redis,也不需要在 BungeeCord 安装插件。
功能: 一)支持以下数据的同步:
- 背包
- 末影箱
- 玩家档案:饥饿值、经验值、是否 OP、游戏模式、氧气值
- PDC (Persistent Data Container)
- 成就数据
- 药水效果
- 经济 (Vault)
- 提供标准 API 让第三方插件接入本插件实现跨服同步数据,详细查看后面
二)数据快照(备份) 歧义解释:OneSync 的数据快照不仅仅是备份,也是玩家当前的数据。最后一份快照将会在玩家登陆时用来恢复数据。
- 提供用户友好的 GUI 操作界面
- 可配置「必须多少天内至少保留一份快照备份」
- 可配置快照备份的触发节点,如:玩家死亡、服务器存档、玩家游戏模式切换。
- 背包和末影响快照可直接查看与取出物品
- 支持快照整体恢复或指定某项恢复
- 箱子菜单的点击任何空白地方返回上一页
优点:
- Less is more:不需要 Redis,仅仅需要 MySQL;不需要在 BungeeCord 端安装任何插件。
- 延迟低:安全的异步加载数据,玩家退出重登只占用主线程 1~5ms, 切换服务器占用 5 ~ 30ms
- 由工作 3 年,30年 JAVA 开发经验程序员(加班加出来的)开发
[玩家的所有快照]
[玩家快照的细则]
[效率]
前置插件:
命令
- /onesync reload:重新加载配置文件
- /onesync unlock <玩家>:异常关闭服务器时解锁玩家
- /onesync unlock-all: 异常关闭服务器时解锁所有玩家
- /onesync snapshot <玩家>:查看玩家快照备份
- /onesync save <多名玩家>:主动保存玩家数据
使用须知:
- 插件不会自动在 MySQL 上建立对应的数据库,请手动建立,默认数据库名为 onesync
- 插件不会处理多个服已有数据的合并,启用插件后,玩家第一次进入的服务器的存档将会成为他的跨服存档
- 插件不会清理原版存档,如果你不再需要此插件,请自行清理玩家存档文件
- 为了你的数据安全,服务器启动时插件加载失败,将会停止服务器
安装方法:
- 确保你电脑安装了 MySQL
- 将此插件安装到你需要跨服同步的多个服务器上
- 初次安装时没有配置文件,你可以启动一次服务器自动生成或者手动创建。启动时可能会因为数据库地址或者账号密码错误而启动失败。
- 编辑配置文件,将 datasource.url 配置为你的数据库地址,确保账号密码正确
- 启动服务器
如果你觉得我的插件好用,不妨请我喝杯奶茶,以支持我出更多的免费插件:
配置文件- version: 2
- datasource:
- driver-class: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/onesync
- username: root
- password: 123456
- size: 2
- # 是否打印调试日志
- debug: true
- # 服务器 ID
- # 如果配置了这项, 那么在服务器重启的时候能自动解锁因为异常关闭而锁住的玩家
- # 注意 1: 要么别配置, 如果配置就一定不能重复!!!
- # 注意 2: 因为服务器异常关闭的锁定, 可能导致玩家的数据不是最新的!!!
- server-id: ''
- synchronize:
- # 玩家背包
- inventory: true
- # 末影箱
- ender-chest: true
- # 玩家持久化数据 PersistentDataContainer(PDC)
- pdc: false
- # 玩家成就数据
- advancements: false
- # 效果, 如药水效果、Buff
- potion-effects: false
- # 经济, 对 Vault 插件的支持
- vault: false
- # 玩家档案
- profile:
- # 游戏模式
- game-mode: false
- # 是否 OP
- op: false
- # 生命值, 最大生命值
- health: false
- # 经验
- exp: false
- # 饥饿值, 饱食度, 饥饿度
- food: false
- # 氧气值
- air: false
- snapshot:
- # 每位玩家最大快照数量
- capacity: 45
- # 多少天内必须至少保存一份最后的快照
- keep-days: 7
- # 何时保存玩家快照
- # 除了这里可以指定的节点以外, 玩家退出游戏, 服务器关闭也会保存快照
- # 可选值:
- # WORLD_SAVE : (全体) 保存地图时触发, 约 5 分钟一次, 经测试 50 名玩家约 400 ms
- # PLAYER_DEATH : (个人) 玩家死亡时触发, 适合死亡掉落的服务器
- # PLAYER_GAME_MODE_CHANGE : (个人) 玩家游戏模式切换
- when:
- - WORLD_SAVE
- - PLAYER_GAME_MODE_CHANGE
复制代码
OneSync-0.0.3.jar
(288.94 KB, 下载次数: 12)
开发者接入此插件
- 继承 SnapshotComponent,记录你同步的数据
- 继承 SnapshotHandler,实现快照的读写方法。如果你的插件不会修改快照的内容,可直接继承 CacheableSnapshotHandler,使用缓存来减少读取时间。
- 在你的插件 onEnable 方法里,使用 Bukkit.getServicesManager().register() 注册你的 SnapshotHandler
|