- 版权类型
- 原创
- 插件中文名称
- 汤圆指令组
- 插件英文名称
- TyCommandGroup
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- 语言支持
- 中文(简体)
- 前置组件
- [以下前置均为非必需的软前置]
PlaceholderAPI
DragonCore
MythicMobs
LyInventory
Vault
PlayerPoints
- 适配版本(Java)
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
- 1.11
- 1.10
定位:高自由度条件指令调度引擎,不局限单一触发源,可被指令、物品、GUI、技能、菜单、自定义触发器调用,用 YAML 批量管理成套执行逻辑;RPG 服、礼包系统、装备被动、权限校验、任务判定、奖励分发都能用。
指令: /tcg 权限: tcg.run / tcg.reload
重要提示:插件自带示例配置每次重载会刷新覆盖,不要直接修改示例 yaml;自定义逻辑请在group下新建文件夹 /yml 编写,避免配置丢失。
最小调度单元为指令组 ID(全局唯一,不可重复),每个组由三块构成:
支持多类条件混合叠加,全部满足才放行;每条条件可附加<=>自定义失败提示消息。
两种冷却独立配置,优先全局冷却,再校验玩家私人冷却,且支持跨服和本地存储;均可完全删除(无冷却)。
五、配置文件 (config.yml)
指令: /tcg 权限: tcg.run / tcg.reload
重要提示:插件自带示例配置每次重载会刷新覆盖,不要直接修改示例 yaml;自定义逻辑请在group下新建文件夹 /yml 编写,避免配置丢失。
一、核心架构:指令组(Group)
最小调度单元为指令组 ID(全局唯一,不可重复),每个组由三块构成:- condition:多重条件链,全部通过才进入冷却与成功动作;条件失败直接走fail-actions,不触发冷却
- 冷却配置(可选):全局冷却 + 玩家独立双冷却,分层控制频率
- success-actions / fail-actions:两套动作分支;成功分支支持延时、多类型执行、变量表达式;失败分支用于提示 / 拒绝逻辑
二、条件系统(Condition)
支持多类条件混合叠加,全部满足才放行;每条条件可附加<=>自定义失败提示消息。1. PAPI变量条件
- 原生支持and/or布尔逻辑、四则运算、三元表达式
- 字符串相等判断、数值大小比较
2. 玩家权限条件
3. 玩家背包/手持物品/龙核物品等其他仓库物品条件
三、双冷却机制(Cooldown)
两种冷却独立配置,优先全局冷却,再校验玩家私人冷却,且支持跨服和本地存储;均可完全删除(无冷却)。- global-cooldown:指令组全局共享冷却(单位秒,全服共用 CD,适合全服每日礼包)
- player-cooldown:玩家独立冷却(单人限制,适合个人技能、个人礼包)
- 支持自定义冷却提示消息,内置<cooldown>剩余时间变量
global-cooldown: 10global-cooling-msg: '当前指令组全局冷却中,剩余冷却时间 <cooldown>'player-cooldown: 5player-cooling-msg: '当前指令组冷却中,剩余冷却时间 <cooldown>'
四、版本所有内置执行器 (Action)
| message | 给玩家发送消息 | action-bar | 发送快捷栏上方消息 | |
| delay | 在某个执行后延迟 | closeInventory | 关闭当前打开的箱子 | |
| console | 通过控制台发出指令 | drop#MM物品#数量 | 玩家脚下生成MM物品 | |
| op | 通过OP权限发出指令 | exp | 玩家脚下生成经验球 | |
| player | 玩家自身发出指令 | vault | 给予玩家金币 | |
| title | 发送一个标题 | points | 给予玩家积分/点券 |
五、配置文件 (config.yml)
YAML:
prefix: '&6[TyCommandGroup] '
debug: false
# 指令 /tcg
# 权限: tcg.run / tcg.reload
# 这个插件玩法很多,自己可以按照脑洞拓展,你甚至可以利用执行组的特性在指令组里套指令组,只要不是相同的指令组(会死循环)
# 数据存储源,type支持: LOCAL (YML存储) SQLITE(本地db文件) MYSQL
# !每次修改数据源必须重启服务器!
datasource:
type: LOCAL
# 启用SQLite时需要指定source的name,YML和MYSQL无需
source:
name: data
# 当你启用了MYSQL,这里要填写
#database: 'mydb'
#username: 'root'
#password: 'root'
#ip: '127.0.0.1'
#port: '3306'
# 玩家表示存储类型,支持UUID和NAME,正式投入生产环境后别再修改!
index: 'UUID'
五、指令组默认文件 (group/默认组.yml)
YAML:
# 指令组ID,唯一不能重复
默认指令组:
# 指令组条件,满足条件才会执行指令内容和冷却机制,不需要可删除,无任何条件
condition:
# v1.1更新内容: PAPI变量支持四则运算和布尔条件and 和 or,玩家名是汤圆并且(and)等级+1大于5
# 如果你的PAPI变量结果不是数字,请使用以下格式
- "papi:{'%player_name%' == '汤圆' and (%player_level% + 1 > 5)}<=>你不是汤圆而且等级不够"
- 'papi:{%player_level% == 1 or %player_level% == 100}<=>你的等级不是1或者100' # 当等级是1或者等级是100即通过
- 'papi:{%player_level% > 3}' # PAPI变量解析,如果玩家等级大于3,那么满足
- 'permission:{tcg.默认}' # 当有这个权限且其他条件也满足,那么满足
- 'notPermission:{tcg.Ban默认}' # 当有这个权限,那不满足
# ############### 玩家槽位物品检测 (括号内是检测的物品) ###############
# 检测物品支持:
# Origin#mainHand-主手 Origin#offHand-副手 Origin#helmet-帽子 Origin#chestplate-衣服 Origin#leggings-裤子 Origin#boots-鞋子 Origin#inventory#1 - 玩家背包的第1格物品
# 龙核物品检测:DragonCore#槽位名
# 离渊背包自定义槽位:LyInventory#背包ID#槽位ID
###################################################################
- 'itemNameEquals(Origin#mainHand):{&c&l汤圆}<=>&7你的主手物品不叫 &f[&c&l汤圆&f]' # 如果玩家主手的物品名为&c&l汤圆,则满足,如果不满足则对玩家执行后方的消息
- 'itemNameContains(Origin#offHand):{汤圆}' # 如果玩家副手物品名包含汤圆,则满足
- 'itemLoreEquals(Origin#helmet):{&7圆滚滚的汤圆来了}<=>&7你的头盔不满足条件...' # 如果玩家帽子物品的Lore有一行是 &7圆滚滚的汤圆来了 ,则满足
- 'itemLoreContains(Origin#chestplate):{圆滚滚的}' # 如果玩家衣服物品的Lore有一行包含圆滚滚的,则满足
- 'itemNbtEquals(DragonCore#宠物):{name=&c&l汤圆}' # 如果龙核槽位的宠物物品的NBT有name属性,且值为 &c&l汤圆 ,则满足
- 'itemNbtContains(LyInventory#饰品#项链):{level=1}' # 如果离渊背包的饰品仓库的项链物品的NBT有level属性,且值包含 1 ,则满足
# 全局冷却,单位秒,这下面的不需要可删除,优先全局冷却,后私人冷却,你也可以不要全局冷却,也可以不要私人冷却,甚至都不要
global-cooldown: 10
# 全局指令冷却中给玩家发送的消息
global-cooling-msg: '当前指令组全局冷却中,剩余冷却时间 <cooldown>'
# 玩家私人冷却
player-cooldown: 5
# 玩家私人指令冷却中给玩家发送的消息
player-cooling-msg: '当前指令组冷却中,剩余冷却时间 <cooldown>'
# 满足上方的条件和冷却的执行,支持PAPI变量
success-actions:
# v1.2更新内容: 执行组里可以使用表达式了! 格式${表达式~%.0f} ~%.2f代表保留两位小数 默认为不保留任何小数点
- 'console: mm i give %player_name% 测试道具 ${%player_level% / 1.5 ~%.0f}' # 通过MM给予玩家 (当前等级除1.5并且不保留小数) 数量的测试道具物品
# v1.2更新内容: 新增执行动作(vault) - 给予金币,需要前置Vault,当然你也可以在表达式里使用随机数来给予金币 ${random.nextInt(3) + 1} 生成1-3的随机数
- 'vault: ${random.nextInt(3) + 1}' # 给予执行该指令组的玩家1-3个金币
# v1.2更新内容: 新增执行动作(points) - 给予点券,需要前置PlayerPoints
- 'points: ${%player_level% > 10 ? 100 : 10}' # 玩家等级大于10级给予100个点券,否则只给10个!
# v1.1更新内容,执行组能够接受指令里的参数了! (示例: tcg run TangYuan 默认指令组 &c我是参数1 &e我是参数2)
- 'message: 接收到指令传递参数 ^{0} 和 ^{1}' # 给玩家发送的内容为: <接收到指令参数 §c我是参数1 §e我是参数2>
- 'message: 我不吃牛肉' # 给玩家发送一段内容为 (我不吃牛肉) 的消息
- 'delay: 20' # 延迟20tick = 1s
- 'console: tell %player_name% &c指令组 默认指令组 执行成功' # 控制台执行一段指令
- 'op: tell %player_name% &c指令组 默认指令组 执行成功' # 玩家OP权限执行一段指令
- 'player: tell %player_name% &c指令组 默认指令组 执行成功' # 玩家自身执行一段指令 (无OP权限)
- 'title: &c终于等完这1秒了 <=> &d开始你的游戏吧 #10@50@10' #给玩家发送一段标题: (主标题)<=>(副标题)#淡入时间@停留时间@淡出时间
- 'action-bar: &d欢迎来到主城,%player_name%' # 给玩家发送装备栏上的消息
- 'closeInventory' # 关闭当前打开的箱子
- 'drop:MM物品ID#数量' # 在玩家脚下掉落物品
- 'exp:10' # 在玩家脚下生成经验值为10的经验球
# 不满足条件时执行的指令,不满足是不会进入冷却的 (仅仅是不满足条件的执行,不包括冷却)
fail-actions:
- 'message: 不是哥们?'
# 你甚至什么都可以不要,单纯执行:(success-actions这个是必要的),其他的需要什么就添加什么
默认指令组2:
success-actions:
- 'message: 我执行了默认指令组2'