季楠
本帖最后由 季楠 于 2023-1-14 09:07 编辑

本帖使用排版来自PCD小组


插件介绍

PlayerCDK是一个高度自定义的礼包兑换码插件,
它允许用户创建固定/随机的礼包兑换码,
并支持使用Kether脚本执行奖励发放动作。

它可以帮助用户实现类似于"Minecraft2023"的礼包兑换码,
同时内置了批量随机生成高安全性CDK指令工具。

为什么选择 Player CDK ?
  • 自定义兑换码 支持 固定/批量随机生成
  • 自定义兑换次数  设置玩家兑换后其他玩家能否继续兑换
  • 自定义奖品发放 支持Kether脚本
  • 轻量 | 简洁 | 免费 | 开源


使用截图


插件成功加载

命令列表

礼包创建

生成固定内容兑换码

生成随机内容兑换码

使用兑换码/兑换码已被使用



插件命令

  • /cdk exchange [兑换码] - 使用兑换码
  • /cdk kit [create/delete] [礼包名称] - 创建/删除礼包
  • /cdk code add fixed [礼包名称] [兑换码内容] [true/false] - 添加固定兑换码
  • /cdk code add random [礼包名称] [生成数量] [true/false] - 添加随机兑换码


插件权限

  • playercdk.default - 使用兑换码权限
  • playercdk.admin - 管理员权限 [玩家默认缺失]


配置文件

config.yml
  1. # 全局设置
  2. options:
  3.   # bStats数据统计
  4.   metrics: true
  5.   # 数据库相关配置
  6.   database:
  7.     # 数据储存类型
  8.     # 可用: LOCAL, SQL
  9.     use: LOCAL
  10.     # 数据储存配置
  11.     source:
  12.       SQL:
  13.         host: localhost
  14.         port: 3306
  15.         user: root
  16.         password: root
  17.         database: test
  18.         table: playercdk
  19. # 模块设置
  20. module:
  21.   # 兑换码模块
  22.   CDK:
  23.     # 兑换码模块
  24.     enable: true
复制代码
kit.yml
  1. # 礼包列表
  2. kit:
  3.   # 礼包名称
  4.   新春礼包:
  5.     enable: true
  6.     # 兑换礼包执行动作
  7.     action:
  8.       - "tell §e§l礼包兑换成功!"
复制代码
code.yml
  1. # 兑换码列表
  2. # 格式 "兑换码内容:礼包内容:使用限制"
  3. # 礼包内容: 指向kit.yml内的礼包配置
  4. # 使用限制: 兑换后是否允许其他人继续兑换
  5. code:
  6.   - "Minecraft2023:新春礼包:true"
复制代码


数据统计





插件下载

MCBBS站内下载:
PlayerCDK-1.0.1.jar (1.91 MB, 下载次数: 113) 插件开源地址:
https://github.com/CPJiNan/PlayerCDK


后记

服务器技术交流群: 704109949
欢迎加群共同交流探讨问题~


本插件所用所有代码均为原创,不存在借用/抄袭等行为




季楠
本帖最后由 季楠 于 2023-1-5 16:16 编辑

教程

固定兑换码
  • 输入 "/cdk kit create 新春礼包" 创建一个名为 "新春礼包" 的礼包
  • 在kit.yml中kit.新春礼包.action下使用Kether脚本编辑礼包奖励动作
  • 输入 "/cdk code add fixed 新春礼包 MC2023 true" 新增一个指向 "新春礼包" 的内容为 "MC2023" 的可供多人使用的兑换码
  • 输入 "/cdk exchange MC2023" 使用兑换码领取 "新春礼包"
随机兑换码
  • 输入 "/cdk kit create 特惠宝箱" 创建一个名为 "特惠宝箱" 的礼包
  • 在kit.yml中kit.特惠宝箱.action下使用Kether脚本编辑礼包奖励动作
  • 输入 "/cdk code add random 特惠宝箱 5 false" 新增五个指向 "特惠宝箱" 的一次性随机兑换码
  • 在code.yml中查找刚刚生成的兑换码
  • 输入 "/cdk exchange [兑换码]" 使用兑换码领取 "特惠宝箱"



秋分223
嗨害嗨,我来冒个泡

天选服主
支持 但是能否加个reload指令来重载插件捏

季楠
天选服主 发表于 2023-1-5 20:56
支持 但是能否加个reload指令来重载插件捏

配置文件无需指令重载
保存自动生效

bingggggg
新版本在这里

3241386910
感觉作者大大~~

3241386910
感谢作者大大。刚刚打错字了

Haylae
找了很久的固定兑换码插件,现在终于有了,拿走了

风尘大人travel
插件报错
版本1.18.2
paper端
  1. [19:31:37 ERROR]: null
  2. org.bukkit.command.CommandException: Unhandled exception executing command 'playercdk' in plugin PlayerCDK v1.0.1
  3.         at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
  4.         at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
  5.         at org.bukkit.craftbukkit.v1_18_R2.CraftServer.dispatchCommand(CraftServer.java:906) ~[paper-1.18.2.jar:git-Paper-331]
  6.         at net.minecraft.server.network.ServerGamePacketListenerImpl.handleCommand(ServerGamePacketListenerImpl.java:2306) ~[?:?]
  7.         at net.minecraft.server.network.ServerGamePacketListenerImpl.handleChat(ServerGamePacketListenerImpl.java:2117) ~[?:?]
  8.         at net.minecraft.server.network.ServerGamePacketListenerImpl.handleChat(ServerGamePacketListenerImpl.java:2098) ~[?:?]
  9.         at net.minecraft.network.protocol.game.ServerboundChatPacket.handle(ServerboundChatPacket.java:46) ~[?:?]
  10.         at net.minecraft.network.protocol.game.ServerboundChatPacket.a(ServerboundChatPacket.java:6) ~[?:?]
  11.         at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:51) ~[?:?]
  12.         at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.18.2.jar:git-Paper-331]
  13.         at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
  14.         at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
  15.         at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1399) ~[paper-1.18.2.jar:git-Paper-331]
  16.         at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:188) ~[paper-1.18.2.jar:git-Paper-331]
  17.         at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
  18.         at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1376) ~[paper-1.18.2.jar:git-Paper-331]
  19.         at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1369) ~[paper-1.18.2.jar:git-Paper-331]
  20.         at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
  21.         at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1447) ~[paper-1.18.2.jar:git-Paper-331]
  22.         at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1225) ~[paper-1.18.2.jar:git-Paper-331]
  23.         at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:315) ~[paper-1.18.2.jar:git-Paper-331]
  24.         at java.lang.Thread.run(Thread.java:833) ~[?:?]
  25. Caused by: me.cpjinan.playercdk.taboolib.library.kether.LocalizedException
  26.         at me.cpjinan.playercdk.taboolib.library.kether.LocalizedException.of(LocalizedException.java:40) ~[PlayerCDK-1.0.1.jar:?]
  27.         at me.cpjinan.playercdk.taboolib.module.kether.KetherError.create(KetherError.kt:11) ~[PlayerCDK-1.0.1.jar:?]
  28.         at me.cpjinan.playercdk.taboolib.library.kether.BlockReader.checkLiteral(BlockReader.java:58) ~[PlayerCDK-1.0.1.jar:?]
  29.         at me.cpjinan.playercdk.taboolib.library.kether.BlockReader.readBlock(BlockReader.java:47) ~[PlayerCDK-1.0.1.jar:?]
  30.         at me.cpjinan.playercdk.taboolib.library.kether.BlockReader.parse(BlockReader.java:36) ~[PlayerCDK-1.0.1.jar:?]
  31.         at me.cpjinan.playercdk.taboolib.library.kether.SimpleQuestLoader.load(SimpleQuestLoader.java:18) ~[PlayerCDK-1.0.1.jar:?]
  32.         at me.cpjinan.playercdk.taboolib.module.kether.KetherHelperKt.parseKetherScript(KetherHelper.kt:44) ~[PlayerCDK-1.0.1.jar:?]
  33.         at me.cpjinan.playercdk.taboolib.module.kether.KetherShell.eval$lambda-0(KetherShell.kt:45) ~[PlayerCDK-1.0.1.jar:?]
  34.         at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[?:?]
  35.         at me.cpjinan.playercdk.taboolib.module.kether.KetherShell.eval(KetherShell.kt:44) ~[PlayerCDK-1.0.1.jar:?]
  36.         at me.cpjinan.playercdk.taboolib.module.kether.KetherShell.eval(KetherShell.kt:31) ~[PlayerCDK-1.0.1.jar:?]
  37.         at me.cpjinan.playercdk.taboolib.module.kether.KetherShell.eval$default(KetherShell.kt:22) ~[PlayerCDK-1.0.1.jar:?]
  38.         at me.cpjinan.playercdk.commands.MainCommand$exchange$1$1$1.invoke(MainCommand.kt:47) ~[PlayerCDK-1.0.1.jar:?]
  39.         at me.cpjinan.playercdk.commands.MainCommand$exchange$1$1$1.invoke(MainCommand.kt:33) ~[PlayerCDK-1.0.1.jar:?]
  40.         at me.cpjinan.playercdk.taboolib.common.platform.command.CommandBuilder$CommandExecutor.exec(CommandBuilder.kt:192) ~[PlayerCDK-1.0.1.jar:?]
  41.         at me.cpjinan.playercdk.taboolib.common.platform.command.CommandBuilder$CommandBase.execute$process(CommandBuilder.kt:102) ~[PlayerCDK-1.0.1.jar:?]
  42.         at me.cpjinan.playercdk.taboolib.common.platform.command.CommandBuilder$CommandBase.execute$process(CommandBuilder.kt:94) ~[PlayerCDK-1.0.1.jar:?]
  43.         at me.cpjinan.playercdk.taboolib.common.platform.command.CommandBuilder$CommandBase.execute(CommandBuilder.kt:115) ~[PlayerCDK-1.0.1.jar:?]
  44.         at me.cpjinan.playercdk.taboolib.common.platform.command.CommandRegisterKt$command$1.execute(CommandRegister.kt:38) ~[PlayerCDK-1.0.1.jar:?]
  45.         at me.cpjinan.playercdk.taboolib.platform.BukkitCommand$registerCommand$1.invoke$lambda-0(BukkitCommand.kt:70) ~[PlayerCDK-1.0.1.jar:?]
  46.         at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
  47.         ... 21 more
复制代码

季楠
本帖最后由 季楠 于 2023-1-6 19:40 编辑
风尘大人travel 发表于 2023-1-6 19:33
插件报错
版本1.18.2
paper端

请提供你进行的操作,
以及kit.yml配置文件内容。

风尘大人travel
季楠 发表于 2023-1-6 19:35
请提供你进行的操作,
以及kit.yml配置文件内容。

kit.yml配置
  1.   v1:
  2.     enable: true
  3.     action:
  4.     - tell §e§l礼包兑换成功!
  5.     - 'console: vipsys give %player_name% vip 30d'
复制代码

操作:使用cdk兑换后出现

季楠
本帖最后由 季楠 于 2023-1-13 17:25 编辑
风尘大人travel 发表于 2023-1-6 20:05
kit.yml配置

操作:使用cdk兑换后出现
  1. 'console: vipsys give %player_name% vip 30d'
复制代码
并不是一个有效的Kether脚本语句。

你应该使用:
  1.   v1:
  2.     enable: true
  3.     action:
  4.     - tell §e§l礼包兑换成功!
  5.     - command inline "vipsys give {{ sender }} vip 30d" as op
复制代码

风尘大人travel
季楠 发表于 2023-1-6 20:16
并不是一个有效的Kether脚本语句。

你应该使用:

更改你提供的脚本后,控制台依旧报错

风尘大人travel
季楠 发表于 2023-1-6 20:16
并不是一个有效的Kether脚本语句。

你应该使用:

问题已解决谢谢

3241386910
我使用{{ sender }}无法获取到玩家

3241386910
3241386910 发表于 2023-1-10 22:19
我使用{{ sender }}无法获取到玩家

已解决 需要command inline

I_am_Tim
游戏内无法使用指令,另外想问一下这个前置插件该如何安装

季楠
I_am_Tim 发表于 2023-1-12 00:37
游戏内无法使用指令,另外想问一下这个前置插件该如何安装

无需安装。另请提供游戏版本、插件版本、指令内容及报错截图。

苦电怕
请问一下楼主怎么添加兑换的物品呢

MC_Han
不错 支持一下 感谢分享!!

doubiovo
提个建议,加个兑换码到期自动删除的功能呗~