CDK 模板
CDK 模板决定兑换码长什么样、能用几次、谁能用、过期时间、兑换后执行什么奖励。
推荐把模板放在文件夹里:
text
plugins/GTCDK/templates/
基础/开服礼包.yml
基础/VIP礼包.yml
高级/系数礼包.ymlGTCDK 会递归读取 templates/ 下的所有 .yml 文件,可以按活动、档位、渠道自由分层。
最小模板
yaml
name: "&a开服礼包"
description:
- "&7输入 CDK 后领取一次。"
code:
prefix: "GT"
groups: 4
group-length: 4
charset: "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"
separator: "-"
usage:
total: 1
per-player: 1
expire-seconds: 0
conditions:
- "%player_level% >= 0"
actions:
- "[item] DIAMOND 3"
- "[money] give 100"
- "[message] &a你领取了开服礼包。"
gui:
material: "CHEST"
slot: 20效果:
- 生成的兑换码类似
GT-ABCD-EFGH-JKLM-NPQR。 - 每个兑换码总共只能用 1 次。
- 每名玩家最多使用 1 次。
- 不过期。
- 兑换后给 3 个钻石、100 金币和提示消息。
code 生成规则
yaml
code:
prefix: "VIP"
groups: 4
group-length: 4
charset: "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"
separator: "-"| 字段 | 说明 |
|---|---|
prefix | CDK 前缀 |
groups | 分几组 |
group-length | 每组长度 |
charset | 随机字符池 |
separator | 分隔符 |
推荐字符池去掉容易混淆的 I、O、0、1,玩家复制和手输都会舒服很多。
usage 使用次数
yaml
usage:
total: 1
per-player: 1
expire-seconds: 604800| 字段 | 说明 |
|---|---|
total | 这个 CDK 总共可被使用多少次 |
per-player | 每名玩家最多使用多少次 |
expire-seconds | 生成后多少秒过期,0 表示不过期 |
常用写法:
yaml
# 一人一码,一码一次
usage:
total: 1
per-player: 1
expire-seconds: 0
# 公共福利码,全服可用 100 次,每人 1 次
usage:
total: 100
per-player: 1
expire-seconds: 86400conditions 条件
30 级以上才能兑换:
yaml
conditions:
- "%player_level% >= 30"有权限或等级达到 30:
yaml
conditions:
- "hasPermission('gtcdk.vip') || %player_level% >= 30"只允许指定职业:
yaml
conditions:
- "%player_class% == WARRIOR"条件适合做 VIP 礼包、等级礼包、职业礼包、活动资格礼包。
actions 奖励动作
yaml
actions:
- "[item] DIAMOND 3"
- "[money] give 100"
- "[message] &a兑换成功。"
- "[sound] ENTITY_PLAYER_LEVELUP 1 1"常用动作:
| 动作 | 说明 |
|---|---|
[item] DIAMOND 3 | 给原版物品 |
[item] ni:ruby 1 | 给 NI 物品 |
[item] mm:LEGEND_SWORD 1 | 给 MM 物品 |
[item] ce:gear_core 1 | 给 CraftEngine 物品 |
[money] give 100 | 给金币 |
[console] say {player} | 控制台命令 |
[player] me 兑换成功 | 玩家命令 |
[op] some command | 玩家临时 OP 命令 |
[message] 文本 | 发送消息 |
[sound] 音效 音量 音调 | 播放声音 |
GUI 保存物品
模板里可以直接写 [item],也可以在管理 GUI 里把奖励物品放进去保存。
适合 GUI 保存的情况:
- 物品有复杂 NBT。
- 物品来自其他插件生成。
- 物品 Lore、附魔、PDC、CustomModelData 需要原样保留。
流程:
- 执行
/gtcdk打开主界面。 - 进入 CDK 管理。
- 选择模板。
- 进入奖励物品编辑。
- 把要发给玩家的物品放进去。
- 点击保存。
保存后,玩家兑换 CDK 会获得这组物品。
VIP 礼包
yaml
name: "&6VIP 礼包"
description:
- "&7权限或等级满足后才可兑换。"
code:
prefix: "VIP"
groups: 4
group-length: 4
charset: "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"
separator: "-"
usage:
total: 1
per-player: 1
expire-seconds: 604800
conditions:
- "hasPermission('gtcdk.vip') || %player_level% >= 30"
actions:
- "[item] EMERALD 5"
- "[message] &6VIP 礼包兑换成功。"
gui:
material: "EMERALD"
slot: 21效果:
- 兑换码 7 天后过期。
- 有
gtcdk.vip权限或等级达到 30 可兑换。 - 兑换后给 5 个绿宝石。
系数礼包
系数可以根据权限放大奖励倍率。
yaml
name: "&6系数礼包"
description:
- "&7奖励可按权限放大。"
code:
prefix: "RATE"
groups: 4
group-length: 4
charset: "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"
separator: "-"
usage:
total: 1
per-player: 1
expire-seconds: 0
conditions:
- "%player_level% >= 0"
actions:
- "[message] &a领取成功,奖励倍率:{reward_multiplier}"
coefficients:
reward:
base: 1.0
min: 1.0
max: 3.0
permissions:
"gtcdk.vip": 1.2
"gtcdk.svip": 1.5
gui:
material: "CHEST"效果:
- 普通玩家倍率 1.0。
- 有
gtcdk.vip权限时倍率 1.2。 - 有
gtcdk.svip权限时倍率 1.5。 - 最大不超过 3.0。
批量生成流程
- 写好模板文件。
- 执行
/gtcdk reload。 - 打开
/gtcdk。 - 进入 CDK 管理。
- 选择模板。
- 输入生成数量。
- 导出或复制生成结果。
常见问题
模板不显示
检查:
- 文件是否放在
plugins/GTCDK/templates/下。 - 文件后缀是否为
.yml。 /gtcdk reload是否报错。- YAML 缩进是否正确。
CDK 被重复使用
检查:
usage.total是否大于 1。usage.per-player是否大于 1。- 存储是否正常。
- 多服是否共用同一个数据库。
条件不生效
检查:
- PAPI 变量是否能正常解析。
- 权限节点是否真实存在。
- 字符串条件是否和变量返回值一致。
