Skip to content

GUI 配置

GTPay GUI 使用原版箱子界面,不需要客户端 Mod。每个 YAML 文件都是一个独立菜单,文件放在:

text
plugins/GTPay/gui/

示例:

text
gui/main.yml
gui/gifts.yml
gui/vip.yml
gui/sponsor.yml

打开指定文件时使用不带扩展名的文件名:

text
/gtpay gui vip

最小 GUI

yaml
title: "GTPay 充值中心"
rows: 6
locked: true
layout:
  - "#########"
  - "#       #"
  - "#   V   #"
  - "#       #"
  - "#       #"
  - "#########"
icons:
  '#':
    material: BLACK_STAINED_GLASS_PANE
    legacy-material: STAINED_GLASS_PANE
    data: 15
    name: "&0"
  'V':
    material: CHEST
    name: "&e礼包中心"
    actions:
      - "[open] gifts"

界面字段

字段说明
title界面标题,支持颜色和 PAPI
rows行数,1 到 6 行
locked是否由菜单处理点击
layout通过字符布局图放置图标
icons布局字符对应的物品定义
items直接按槽位号定义物品

一个 GUI 必须使用 layoutitems 至少一种。

布局图

每行最多 9 个字符,每个字符对应一个 icons 节点:

yaml
layout:
  - "#########"
  - "#1234567#"
  - "#       #"
  - "#########"

没有配置的字符不会放置物品。空格适合留空,不要给空格配置 AIR 礼包按钮,否则会导致同一个礼包铺满整行。

物品字段

yaml
icons:
  'V':
    material: CHEST
    legacy-material: CHEST
    data: 0
    amount: 1
    name: "&e{gift_name}"
    lore:
      - "&7价格: &f{gift_price} 元"
    glow: false
    custom-model-data: 0
    permission: ""
    actions:
      - "[gift] vip_30 wechat"
字段说明
material新版本材质名
legacy-material1.12 使用的材质名,找不到 material 时使用
data旧版本物品耐久值/数据值
amount物品数量,1 到 64
name物品名称
lore物品 Lore
glow是否显示发光效果
custom-model-data自定义模型数据,新版本资源包使用
permission没有权限时不显示按钮
actions点击后执行的动作
gift关联礼包 ID,配置后可自动生成购买动作
channel自动生成礼包动作时使用的渠道
close点击后是否关闭当前 GUI
refresh点击后是否刷新当前 GUI

材质同时填写新旧名称:

yaml
material: BLACK_STAINED_GLASS_PANE
legacy-material: STAINED_GLASS_PANE
data: 15

这样同一个 GUI 文件可以同时用于 1.12.2 和新版本。

直接按槽位定义

不想写布局图时可以使用 items

yaml
title: "礼包"
rows: 3
items:
  10:
    material: CHEST
    name: "&eVIP 30 天"
    lore:
      - "&7价格: &f30.00 元"
    actions:
      - "[gift] vip_30 wechat"
  16:
    material: GOLD_INGOT
    name: "&6返回"
    actions:
      - "[open] main"

槽位从 0 开始,3 行 GUI 的范围是 0 到 26。

点券充值按钮

充值 10 元:

yaml
material: GOLD_INGOT
name: "&6充值 10 元"
actions:
  - "[topup] 10 wechat"

充值 50 元支付宝:

yaml
actions:
  - "[topup] 50 alipay"

这与玩家输入以下命令完全一致:

text
/gtpay buy 10 wechat
/gtpay buy 50 alipay

礼包按钮

yaml
material: CHEST
gift: vip_30
channel: wechat
name: "&e{gift_name}"
lore:
  - "&7分类: &f{gift_category}"
  - "&7价格: &f{gift_price} 元"
actions:
  - "[gift] {gift_id} wechat"

礼包相关替换变量:

变量说明
{gift_id}礼包 ID
{gift_name}礼包名称
{gift_price}礼包价格
{gift_category}礼包分类

累计赞助按钮

领取永久累计 100 元:

yaml
material: NETHER_STAR
name: "&6领取永久累计 100 元"
lore:
  - "&7当前累计: &f%gtpay_sponsor_lifetime_total% 元"
  - "&7剩余: &e%gtpay_sponsor_lifetime_remaining% 元"
actions:
  - "[claim] lifetime 100"

打开另一个 GUI:

yaml
actions:
  - "[open] sponsor"

关闭菜单:

yaml
actions:
  - "[close]"

动作列表

动作格式说明
[topup][topup] 金额 渠道创建点券充值订单
[gift][gift] 礼包ID 渠道创建礼包订单
[open][open] GUI文件打开另一个 GUI
[claim][claim] 方案ID 金额领取累计赞助档位
[close][close]关闭 GUI
[player][player] 命令以玩家身份执行命令
[console][console] 命令以控制台身份执行命令

命令中的 PAPI 和 GUI 变量会先替换,再执行。

多 GUI 分类示例

主界面:

yaml
icons:
  'V':
    material: CHEST
    name: "&e礼包中心"
    actions:
      - "[open] gifts"
  'S':
    material: NETHER_STAR
    name: "&6累计赞助"
    actions:
      - "[open] sponsor"

礼包界面只放礼包按钮,赞助界面只放累计赞助档位。文件多时可以继续按活动、VIP、点券、赞助分类。

修改 GUI 文件后执行 /gtpay reload,再使用 /gtpay gui 文件名 打开对应菜单。