GUI 与客户端界面
GTDungeonTeam 有两层界面:
gui/:原版背包 GUI,所有服务器都能用。client-ui/:PaiUI、AX、DragonCore、KongCore、Dialog 等客户端界面。
如果客户端 UI 不可用,插件会按配置回到原版 GUI。
选择默认界面
ui:
default: vanilla
prefer-client-ui: true可选:
vanilla
paiui
ax
dragoncore
kongcore
dialogprefer-client-ui: true 表示优先尝试客户端 UI。失败后走原版 GUI。
客户端 UI 路由
文件:
plugins/GTDungeonTeam/client-ui/providers.yml默认顺序:
routing:
fallback-order:
- paiui
- ax
- kongcore
- dragoncore
- dialog
- vanilla每个引擎都有自己的 views:
providers:
paiui:
views:
main: "layout/gtdungeonteam/main.html"
team: "layout/gtdungeonteam/main.html"
auction: "layout/gtdungeonteam/main.html"
ax:
views:
main: "gtdungeonteam_main"
team: "gtdungeonteam_team"
auction: "gtdungeonteam_auction"PaiUI 默认使用单页 main.html,在页面内部切换视图,减少多 HTML 切换闪屏。
原版 GUI 文件
plugins/GTDungeonTeam/gui/
main.yml
team.yml
invite.yml
applications.yml
requirements.yml
auction.yml
dungeons.yml
dungeon-detail.yml
rooms.yml
room-detail.yml
result.yml每个文件一个页面。写法接近 TrMenu:
main:
Title: "&8副本大厅 &7| &f<player>"
Layout:
- "#########"
- "# S #"
- "# #"
- "# T D I #"
- "# A M R #"
- "#########"
Icons:
S:
Display:
Material: DIAMOND_SWORD
Name: "&c&l开始挑战"
Lore:
- "&7队伍: &f<team_name>"
- "&7人数: &f<members>/<max_members>"
Actions:
- "start:"Layout
Layout 一行 9 格。一页 6 行就是 54 格。
Layout:
- "#########"
- "#MMMMMMM#"
- "#MMMMMMM#"
- "#C#I#D#A#"
- "#V#X#R#K#"
- "L#######B"每个字符对应 Icons 下的一个图标。
同一个字符出现多次,会放同一个图标。
Display
Display:
Asset: team
Material: CHEST
Name: "&a队伍管理"
Lore:
- "&7队伍: &f<team_name>"
- "&7人数: &f<members>/<max_members>"
Glow: "<public>"
ItemFlags:
- HIDE_ENCHANTS
CustomModelData: "{calc:10000+<members>}"| 字段 | 作用 |
|---|---|
Asset | 读取 assets/ 中的资源映射 |
Material | 原版材料 |
Name | 物品名 |
Lore | 物品说明 |
Glow | 是否发光,支持变量 |
ItemFlags | 物品 Flag |
CustomModelData | 模型数据,支持公式 |
标题、物品名、Lore、Glow、CustomModelData 都会渲染变量。
Condition
Condition: "<is_leader>"条件为 false 时不显示这个图标。
常用:
Condition: "<has_team>"
Condition: "!<has_team>"
Condition: "<is_leader>"! 表示取反。
动态列表 Type
成员列表:
M:
Type: member-list
Display:
Material: PAPER
Name: "&f<member>"
Lore:
- "&7身份: &e<member_role>"
- "&7在线: &f<member_online>"
- "&7所在服: &f<member_server>"常用动态类型:
| Type | 用途 |
|---|---|
member-list | 队伍成员 |
dungeon-list | 副本列表 |
room-list | 公开房间 |
application-list | 入队申请 |
invite-list | 邀请候选玩家 |
requirement-template-list | 入队条件模板 |
damage-list | 结算伤害列表 |
动态列表的每个元素都有自己的上下文变量,例如 <member>、<dungeon_id>、<team>、<applicant>。
点击动作
Actions:
- "open:team"
Right-Click-Actions:
- "team:toggle-random-distribution on"
Shift-Left-Click-Actions:
- "team:req clear"支持:
Actions
Click-Actions
Left-Click-Actions
Right-Click-Actions
Shift-Left-Click-Actions
Shift-Right-Click-Actions不写具体点击类型时,默认点击走 Actions。
内置动作
| 动作 | 说明 |
|---|---|
open:<界面> | 打开界面 |
start: | 开始副本 |
team:<操作> | 队伍操作 |
room:<操作> | 房间操作 |
dungeon:<操作> | 副本操作 |
auction:<操作> | 竞拍操作 |
stamina:show | 显示体力 |
hud:sync | 同步 HUD |
client-ui:refresh <界面> | 刷新客户端 UI |
gtmd:<动作> | 调用 GTMobDrops 兼容动作 |
[message] 文本 | 给玩家发消息 |
[console] 命令 | 控制台执行命令 |
[player] 命令 | 玩家执行命令 |
[close] | 关闭界面 |
示例:
Actions:
- "team:create"
- "[message] &a已尝试创建队伍。"队伍动作
team:create
team:invite <玩家>
team:invite
team:accept
team:leave
team:toggle-public
team:toggle-apply
team:toggle-pvp
team:toggle-random-distribution
team:input-name
team:input-desc
team:applications
team:accept-application <玩家>
team:reject-application <玩家>
team:req input <模板>
team:req remove <模板>
team:req clearinput-name、input-desc、req input 在原版 GUI 下会读取聊天栏输入。客户端 UI 可以把输入框的值作为 input_value 发给插件。
副本动作
dungeon:open <副本ID>
dungeon:select <provider> <副本ID>
dungeon:select-opened
dungeon:start
dungeon:finish
dungeon:fail大型服入口按钮推荐:
Actions:
- "dungeon:open forest"详情页确认按钮:
Actions:
- "dungeon:select-opened"房间动作
room:detail <队伍ID>
room:join <队伍ID>
room:join-viewed
room:quick公开房间列表建议左键看详情,右键申请:
Left-Click-Actions:
- "room:detail <team>"
Right-Click-Actions:
- "room:join <team>"竞拍动作
auction:info
auction:bid <金额>
auction:input-bid客户端 UI 输入框提交时,可以把输入内容传成 input_value。原版 GUI 没有真正输入框,就走聊天输入。
资源图标 assets
GUI 里写:
Display:
Asset: loot
Material: HOPPER资源文件:
plugins/GTDungeonTeam/assets/
base.yml
itemsadder.yml
craftengine.yml
oraxen.yml
vanilla.yml建议 GUI 里优先写稳定的 Asset,不同材质包在 assets/ 分开配置。这样以后从 ItemsAdder 换 Oraxen,不需要把所有 GUI 文件翻一遍。
PaiUI 文件
plugins/GTDungeonTeam/client-ui/paiui/webgui/gtdungeonteam/
main.html
ui.css
ui.js默认配置会把 WebGui 文件同步到 PaiUI 可访问目录:
providers:
paiui:
mirror-webgui: true
mirror-overwrite-newer-source: true改完后执行:
/gdt reload如果你手动改 PaiUI 目标目录里的文件,而源目录没改,下一次重载可能被同步覆盖。正式修改建议改 GTDungeonTeam 自己的 client-ui/paiui/webgui/ 源文件。
AX、DragonCore、KongCore
文件位置:
client-ui/ax/
client-ui/dragoncore/
client-ui/kongcore/每个页面一个 yml:
main.yml
team.yml
invite.yml
applications.yml
requirements.yml
auction.yml
dungeons.yml
dungeon-detail.yml
rooms.yml
room-detail.yml
result.yml这些文件的具体组件写法按对应 UI 引擎自己的规则来。GTDungeonTeam 负责打开、同步变量、接收动作。
重载注意
/gdt reload会重新读取 client-ui 和 gui。如果客户端仍看到旧页面:
- 确认改的是
plugins/GTDungeonTeam/client-ui/。 - 执行
/gdt reload。 - 关闭并重新打开界面。
- PaiUI 场景下检查是否同步到了 PaiUI 的 WebGui 目录。
- AX、DragonCore、KongCore 场景下检查对应客户端资源是否刷新。
