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 必须使用 layout 或 items 至少一种。
布局图
每行最多 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-material | 1.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 文件名 打开对应菜单。
