数据库与变量
数据库支持
CDKLite 支持 SQLite 和 MySQL 两种数据库,通过 config.yml 中的 database.enable 切换。
SQLite(默认)
database.enable: false 时使用 SQLite,开箱即用,无需额外配置。
适用场景:单服运行、小型服务器。
MySQL
database.enable: true 时使用 MySQL,适用于多服互通或大规模数据场景。
database:
enable: true
host: localhost
port: 3306
user: root
password: root
database: minecraft
prefix: "cdklite"
修改后使用 /cdklite reload 重载配置,然后用 /cdklite connect 测试连接是否正常。
切换数据库类型后,原有数据不会自动迁移。切换前请做好数据备份。
跨服增量同步
跨服同步只有在 database.enable: true 且 sync.enabled: true 时才会启用。SQLite 模式下即使 sync.enabled 为 true,也不会启动跨服同步。
你需要为每个子服配置唯一的 sync.server-id,例如 lobby-1、survival-1、skyblock-1。插件会通过 change_log 表记录 CDK 创建、兑换、结算、删除等变更,并按 sync.interval-seconds 定时拉取增量。
如果开启 sync.bungee.enabled,插件会通过 BungeeCord 的 Forward 通道发送轻量唤醒通知。这个通道只通知其他子服尽快同步,不传输 CDK 数据。
/cdklite sync 可以手动从数据库同步当前缓存中缺失的 CDK,并补充可领取的消耗型 CDK 缓存。
数据表结构
CDKLite 使用以下数据表存储数据(表名带 prefix 前缀):
- OwnerEntity 表:存储 CDK 拥有者信息
| 字段 | 说明 |
|---|---|
uuid | 玩家 UUID;系统 CDK 使用固定 UUID |
playerName | 玩家名;系统 CDK 为 server-console-owner |
cdk | 兑换码 |
reward | 绑定的奖励包名 |
settle | 已结算次数 |
total | 总被兑换次数 |
isRemove | 是否已删除 |
- ReceiveEntity 表:存储兑换记录
| 字段 | 说明 |
|---|---|
uuid | 兑换者 UUID |
playerName | 兑换者名 |
receiveCdk | 兑换的 CDK |
time | 兑换时间 |
- ChangeLogEntity 表:MySQL 跨服同步变更日志
| 字段 | 说明 |
|---|---|
eventType | 变更类型,例如创建、删除、兑换、结算 |
cdk | 发生变更的 CDK |
sourceServer | 写入变更的 sync.server-id |
sourceInstance | 写入变更的服务端实例名 |
createdAt | 变更写入时间 |
extra | 额外数据,例如兑换者 UUID、名称和时间 |
PlaceholderAPI 变量
CDKLite 注册了 cdklite 标识符,需要安装 PlaceholderAPI 才能使用。
| 变量 | 说明 |
|---|---|
%cdklite_random_<N>% | 生成 N 个随机字符 |
%cdklite_cdk_<index>% | 玩家第 index 个 CDK 的兑换码 |
%cdklite_total_<index>% | 玩家第 index 个 CDK 的总兑换次数 |
%cdklite_times_<index>% | 玩家第 index 个 CDK 的已结算次数 |
%cdklite_left_<index>% | 玩家第 index 个 CDK 的未结算数量 |
%cdklite_size% | 玩家拥有的 CDK 总数 |
index 从 0 开始。例如 %cdklite_cdk_0% 返回玩家的第一个 CDK 兑换码,%cdklite_left_0% 返回第一个 CDK 的未结算数量。
使用示例
在计分板中显示玩家的推荐码信息:
你的推荐码: %cdklite_cdk_0%
已被使用: %cdklite_total_0% 次
待结算: %cdklite_left_0% 个
CDK 总数: %cdklite_size%
数据备份建议
- SQLite:定期备份
plugins/CDKLite/目录下的data.db和配置文件 - MySQL:通过数据库工具定期导出 CDKLite 相关表(表名以配置的
prefix开头) - 跨服同步:如果启用了 MySQL 跨服同步,建议同时备份各子服的
plugins/CDKLite/sync-state.yml