执行操作
✨喜欢这个插件吗?
你的支持是我们持续维护的动力,点击查看赞助详情
插件的通用执行操作格式,基于 PluginBase 的 actions 模块。
yaml
# 多条操作详细格式
commands:
- '[message]正在打开菜单'
- '[open]example'
# 单条操作简写格式
commands: '[open]example'
此外还有更加尊重 YAML 语法的写法,两种写法可以混合,可自由根据使用习惯来取舍
yaml
commands:
- message: '正在打开菜单'
- open: example
# 基础操作
目前插件可以使用以下操作。
使用 <> 包裹的是必选参数,其余部分为固定格式,支持菜单变量与 PAPI 变量。
[actionbar]<消息>在物品栏上方提示消息[console]<命令>后台执行命令[player]<命令>玩家执行命令[message]<消息>聊天提示消息[close]关闭当前界面[open]<菜单>打开指定菜单,不会检查玩家是否拥有打开菜单权限[refresh]刷新菜单标题与图标[prev]切换上一页(如果可用)[next]切换下一页(如果可用)
# 拿取物品
1.0.6新增
这是一个复杂操作,囊括了大部分匹配条件。这里给出一点示例,如有需要,可查看下方折叠的完整示例。
这个操作只支持点击命令,例如 left-click、right-click、drop 等,在其它作用域使用这个操作,将不会有执行条件保护。
当你在点击执行操作中写入了这个操作,插件将会自动将这个「拿取物品」操作,作为一个条件,放进点击条件里面,以实现「有足够物品才能收走物品并执行剩余操作」的功能。
简单来说,只要你写了 take-item 操作,并且物品不够,就无法执行 commands 块中的所有命令
yaml
# 这种情况下,只要是物品不够,所有命令都不会执行,包括给予玩家金钱的那条命令
left-click-commands:
- console: 'money give %player_name% 100'
- type: take-item
item:
# ...
- message: '这是一条消息'
以下是一些常用示例
yaml
# 拿走玩家32个石头
left-click-commands:
- type: take-item
item:
count: 32
matcher:
material: STONE
deny-commands:
- message: '<yellow>你没有足够的石头执行这个操作'
yaml
# 拿走玩家1个示例的 MythicMobs 物品
left-click-commands:
- type: take-item
item:
count: 1
matcher:
mythic: ExampleItem
deny-commands:
- message: '<yellow>你没有足够的物品执行这个操作'
菜单变量
你可以为这个操作配置前缀
yaml
left-click-commands:
- type: take-item
# 菜单变量前缀,不填写的情况下,默认为 takeItem
prefix: takeItem
以下菜单变量使用默认前缀作为示例,这些菜单变量会在条件检查完成后,添加到菜单变量列表中。简单来说,在 deny-commands 和 commands 中可用。
${takeItem.leftover.count}- 剩了多少种物品的数量不够${takeItem.item.count}- 拥有多少个物品${takeItem.item.leftover}- 还差多少个物品${takeItem.item.require}- 需要多少个物品
存在多种需要匹配的物品时,可以使用 items[i] 来代替 item。需要将方括号中的 i 替换为索引数字,从 0 开始。上述 item 只是个简写,实际上与 items[0] 等价。
${takeItem.items[i].count}- 拥有多少个物品${takeItem.items[i].leftover}- 还差多少个物品${takeItem.items[i].require}- 需要多少个物品
完整示例
yaml
left-click-commands:
- type: take-item
# 菜单变量前缀,不填写的情况下,默认为 takeItem
prefix: takeItem
# 要求收走一个物品
item:
# 要求物品数量,支持 PAPI 以及菜单变量
count: 1
# matchers 的简要格式,用于只有一个匹配条件的需求
# 其中的值均支持 PAPI 以及菜单变量
matcher:
material: STONE
# 以下任意条件满足即可匹配
matchers:
- material: STONE
# 要求收走多个物品,其中每个节点格式与 item 一致
items: []
# 不满足条件时执行操作
deny-commands:
- message: '你没有足够的物品'
# 后面不属于 take-item 的范围了,可以加上更多操作,例如给予金钱
# 只要没收走物品,这整一个 commands 里的内容都不会被执行
- console: 'money give %player_name% 100'
以下是各个 matchers 的介绍
yaml
# 逻辑运算 - 与/或
matchers:
# || 逻辑或运算,任意条件匹配即可匹配,可任意嵌套其它条件,包括逻辑运算
- any:
- material: STONE
- material: DIRT
- all:
- material-starts-with: DIAMOND_
- name-starts-with: awa
# && 逻辑与运算,所有条件匹配才能匹配,可任意嵌套其它条件,包括逻辑运算
- all:
- material-starts-with: DIAMOND_
- name-starts-with: qwq
yaml
# material - 匹配物品原版材质
matchers:
# 物品材质包含指定内容时匹配
- material-contains: DIAMOND # 任一匹配均可,下同: [ IRON, GOLDEN ]
# 物品材质以指定内容开头时匹配
- material-starts-with: DIAMOND_
# 物品材质以指定内容结束时匹配
- material-ends-with: _PICKAXE
# 物品材质严格匹配指定内容
- material: STONE
# 也是严格匹配
- material-equals: STONE
# 也是严格匹配,但是忽略大小写
- material-equals-ignore-case: STONE
# 物品材质按正则表达式匹配指定内容
- material-regex: STONE
yaml
# 匹配指定插件物品ID,需要安装指定插件才能使用
# 与 material 一样支持 contains 等后缀,如 mythic-contains
matchers:
# MythicMobs 物品匹配
- mythic: ExampleItem
# MMOItems 物品匹配
- mmoitems: Type:Id
# CraftEngine 物品匹配
- craft-engine: foo:bar
# ItemsAdder 物品匹配
- itemsadder: _iainternal:icon_arrow_chest
# Nexo 物品匹配
- nexo: foo:bar
# NeigeItems 物品匹配
- neige-items: namespace:id
# SX-ITem 物品匹配
- sx-item: id
yaml
# name - 匹配物品名称 (使用过时颜色代码 &)
# 与 material 一样支持 contains 等后缀,如 name-contains
matchers:
- name: 'awa'
yaml
# lore - 匹配物品描述 (使用过时颜色代码 &)
# 与 material 一样支持 contains 等后缀,如 lore-contains
matchers:
- lore: 'awa'
yaml
# nbt - 匹配字符串标签
# 与 mateiral 一样支持 contains 等后缀,如 nbt-contains
matchers:
nbt:
键: '匹配值'
上次更新: 2026/07/14, 01:36:22