Skip to content

功能模块

用于插件的 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}