功能模块
用于插件的 GUI 界面配置,支持自定义布局、物品显示、购买需求与奖励、按钮交互和限制条件等,能够为玩家提供互动式的GUI体验
配置
完整配置.yml
yaml
# Powered by core #
# https://www.goodmc.cn/ #
title: "§3默认界面"
layout:
- "#########"
- "# #"
- "# ABCDE #"
- "# #"
- "#########"
# 导入变量库,对应路径:plugins\CraftX\entry\测试变量库.yml,方便在配置中直接引用预设变量
import-entry:
- "测试变量库"
# 变量库,在配置中通过 `{测试变量}` 引用该变量,自动替换为对应的值
entry:
"测试变量": "1.0"
function:
"玻璃板":
# 布局槽位配置
char: "#" # 用于标识槽位布局的字符
# 按钮位置设置,支持多个槽位,例如:index: 1,2,3
index: 1
display:
material: BLACK_STAINED_GLASS_PANE
name: " "
lore:
- "§f "
"测试按钮":
char: "A"
display:
material: CLOCK
name: "§a测试按钮"
lore:
- "§f"
nbt:
"测试节点.1": "123"
"测试节点.2":
- "123456"
- "123445"
# 界面刷新或交互时是否自动更新(默认true)
update: true
# 物品显示条件
condition:
- ""
# 按照条件覆盖上方的物品参数
rules:
# 条件
- condition:
- "false"
name: "§a测试按钮2"
- condition:
- "false"
material: BOOK
name: "§a测试按钮3"
# 满足此规则后,后续的规则将不再生效,默认false
break: true
# 购买需求
demand:
# 物品库材料,详情可阅读插件文档
- "mm 恶魔士兵核心 1"
# 物品名识别材料
- "name 恶魔士兵核心 1"
# 物品lore识别材料
- "lore 恶魔士兵核心 1"
# 金币
- "money 200"
# 点券
- "points 100"
# CraftX 货币
- "craftx 摩拉 1000"
# YeeValue 货币
- "yeevalue 测试金币 1000"
# LyShop 货币
- "lyshop 测试金币 1000"
# CustomShop 货币
- "cshop 测试金币 1000"
# NyEconomy 货币
- "nye 测试金币 1000"
# Aboleth 货币
- "aboe 测试金币 1000"
# AbolethPlus 货币
- "abp 测试金币 1000"
# 需求规则,满足条件时增加额外需求
demand-rules:
- condition:
- "%player_level% > 10"
demand:
- "points 100"
# 满足此规则后,后续的规则将不再生效,默认false
break: true
# 购买奖励,与上方用法相同
reward:
- "mm 恶魔士兵核心 1"
- "摩拉 1000"
# 奖励规则,满足条件时增加额外奖励
reward-rules:
- condition:
- "%player_level% > 10"
reward:
- "points 100"
# 满足此规则后,后续的规则将不再生效,默认false
break: true
# 是否使用仓库,默认为全局仓库全局开关
warehouse-enabled: true
# 条件
condition:
- ""
# 动作
action:
- command('tell %player_name% Hello')
# 动作规则
rules:
- condition:
- ""
action:
- ""
# 权重随机执行动作
random:
# 权重
- weight: 10
# 条件(不满足时不参与权重随机)
condition:
- ""
# 动作
action:
- "执行指令('mm i give %player_name% 奖励1')"
- weight: 10
action:
- "执行指令('mm i give %player_name% 奖励2')"
- weight: 10
action:
- "执行指令('mm i give %player_name% 奖励3')"
- weight: 10
action:
- "执行指令('mm i give %player_name% 奖励4')"
# 中断循环,不执行后面的动作规则。默认false
break: false
# 仅执行一次的动作,适用于模块多次运行时只触发一次的情况
only-action:
- "msg('{prefix}§7购买成功')"
# 仅执行一次的动作规则
only-rules:
- condition:
- ""
action:
- ""
# 商品限购
purchase-limit:
# 日限购
day: 1
# 周限购
week: 10
# 月限购
month: 30
# 累计限购
total: 64
# 执行(购买)成功率
probability: 1.0
# 异步执行,默认关闭
async: false
"物品库示例":
char: "B"
display:
# 支持多物品库 格式:"类型 物品ID 数量"
item: "mm 恶魔士兵核心 1"
# 执行成功后将物品作为奖励给予玩家
reward: true
# 物品描述,覆盖下方全局介绍
# 支持变量 购买需求 {demand-desc} 购买状态 {state-desc}
desc:
- ""
- "§a物品描述"
# 隐藏描述,默认false
hide-desc: false
"头颅示例":
char: "C"
display:
material: PLAYER_HEAD
# 头颅皮肤,仅在物品类型为头颅时生效,支持变量与表达式
skull: "%player_name%"
name: "§f头颅示例"
lore:
- "§f"
"物品目标示例":
char: "D"
display:
# 从指定目标读取物品(支持以下格式)
# 背包槽位:container_0,箱子(GUI)槽位:chest_0
# 主手:container_mainhand,副手:container_offhand
# 头盔:container_helmet,胸甲:container_chestplate
# 护腿:container_leggings,靴子:container_boots
# DragonCore_戒指槽,GermPlugin_戒指槽
# YeeJewelry_饰品背包#戒指,LyInventory_饰品背包#戒指
identity: "YeeJewelry_饰品背包#戒指"
# 目标路径物品不存在时显示的占位物品
material: RED_STAINED_GLASS_PANE
name: "§f戒指槽 (未使用)"
"槽位示例":
char: "E"
display:
material: RED_STAINED_GLASS_PANE
name: "§f槽位示例"
# 槽位功能
slot:
# 放入物品限制,满足任意条件即可,删除即不限制
match:
- "match.lore('可强化')"
# 使用条件,不满足时无法使用槽位
condition:
- ""
# 放入后执行动作
action:
- ""
# 取出后执行
take:
# 动作
action:
- ""
# 条件
# 由于槽位存储功能未更新,且关闭 GUI 时物品会自动返回槽位,该参数暂时无效
condition:
- ""
# 允许放入堆叠物品,默认false
stack: false
# 全局介绍
global-desc:
# 需求信息
- "{demand-desc}"
# 奖励信息
- "{reward-desc}"
# 限购状态
- "{purchase-limit-desc}"
# 购买状态
- "{state-desc}"
# 支持物品形式展示货币(龙核、萌芽)
# 金币 money 、点券 money 其他 `类型-货币名` 如 cshop-成就点
currency-display:
"money":
material: GOLD_INGOT
name: "§f%amount% §e金币"
# 打开GUI时
on-open:
# 条件
condition:
- ""
# 动作
action:
- msg('{prefix}§7界面已打开')
# 动作规则
rules:
- condition:
- ""
action:
- ""
# 点击GUI时
on-click:
# 条件
condition:
- ""
# 动作
action:
- ""
# 动作规则
rules:
- condition:
- ""
action:
- ""
# 执行function时
on-execute:
# 条件
condition:
- ""
# 动作
action:
- "msg('{prefix}§7配方 ${获取物品名()}§f×{amount} §7合成成功')"
# 动作规则
rules:
- condition:
- ""
action:
- ""
# 关闭GUI时
on-close:
# 执行动作
action:
- msg('{prefix}§7界面已关闭')
# 动作规则
rules:
- condition:
- ""
action:
- ""
# 当玩家执行 open、function指令时
on-command:
# 执行条件
condition:
- ""
# 更新GUI,默认开启
update-inventory: true
# 是否全局默认使用仓库,默认为 false
# 从仓库获取需求物,奖励物品自动存入仓库
# 已支持:SpaceRingPlus、LyWarehouse
warehouse-enabled: false
# 启用快捷键倍率,默认关闭
hotkey-multiple: true指令:
/cx open <页面> <玩家> # 功能页面
/cx function <功能> <玩家> # 执行功能
/cxc reload # 重载配置文件
/cxc cache # 清理内存、Redis缓存
/cxc purchase-limit <玩家> <配置名> <功能名> # 清理限购使用 /cx function 指令来执行(或购买)特定的功能模块。例如,购买 点券商店-观楼剑,可使用以下指令:
/cx function 点券商店-观楼剑 <玩家>
# 执行次数
/cx function 点券商店-观楼剑-10 <玩家>
# 跳过部分功能,使用,分割
/cx function 点券商店-观楼剑 <玩家> condition,demand,reward使用 /cxc purchase-limit 指令清理玩家限购数据
# 清理玩家所有限购数据
/cxc purchase-limit <玩家>
# 清理玩家点券商店限购数据
/cxc purchase-limit <玩家> 点券商店
# 清理玩家观楼剑限购数据
/cxc purchase-limit <玩家> 点券商店 观楼剑表达式:
yaml
// 功能执行
function('配置名-功能名')
// 跳过部分功能,使用,分割
// condition(条件) demand(需求) reward(奖励),
function('配置名-功能名', 'condition,demand,reward')内部变量
配置参数或表达式中使用
| 内容 | 变量 |
|---|---|
| 配置文件名 | {configName} |
| 功能(按钮)名 | {functionName} |
| 每日限购 | {purchase-limit-day} |
| 每周限购 | {purchase-limit-week} |
| 每月限购 | {purchase-limit-month} |
| 累计限购 | {purchase-limit-total} |
| 成功率 | {probability} |
| 执行次数 | {amount} |
| 是否右键点击 | {right-click} |
| 是否左键点击 | {left-click} |
| 是否Shift点击 | {shift-click} |
| 物品栏点击动作 | {inventory-action} |