跳到主要内容

数据库与变量

数据库支持

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: truesync.enabled: true 时才会启用。SQLite 模式下即使 sync.enabledtrue,也不会启动跨服同步。

你需要为每个子服配置唯一的 sync.server-id,例如 lobby-1survival-1skyblock-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