跳到主要内容

GUI

GUI 扩展是 Typewriter 的中央菜单系统。它提供 9 种可配置的布局引擎(外加仅 API 组件)、23 种物品栏类型、键鼠交互、持久物品存储以及完整的 MiniMessage 格式支持。几乎所有其他扩展的菜单都依赖它。

即将推出:一个基于网页的所见即所得(WYSIWYG)编辑器,支持拖放、与游戏内一致的实时预览、CSS-flexbox 自动布局、菜单状态、图块地图以及多提供方资源包支持。

功能

  • 9 种布局引擎 — Simple、Composite、Scrollable、Paginated、Frame、Flex、Storage、Book、Merchant —— 外加通过 Kotlin API 提供的 Iterator、Slider 和 ReactiveSlot。
    • 23 种物品栏类型 — 箱子、熔炉、铁砧、附魔台、锻造台、商人、书本等。
    • 滚动与导航 — 可滚动布局,带可配置的上/下/左/右按钮。滚动按钮锚定在视口上。多帧、各区域相互独立。
    • 持久存储 — 由产物支撑的物品存储 —— 按玩家或按群组。累积模式用于进度追踪。可配置点击动作。
    • 存储占位符 — 槽位名称和 Lore 中的动态占位符 {stored_name}{stored_amount}{stored_max}
    • MiniMessage — 标题、物品名称和 Lore 完整支持 MiniMessage。颜色、渐变、悬停/点击事件。
    • 点击交互 — LEFT、RIGHT、SHIFT、DOUBLE_CLICK、DROP、SWAP_OFFHAND、NUMBER_KEY、SCROLL —— 按槽位或全局。
    • 动画 — 平滑的槽位过渡,带可配置缓动(linear、ease-in、ease-out)。
    • 输入对话框 — 通过 Paper 对话 API,在菜单交互过程中弹出文本输入提示。

架构

条目库

动作

  • Open GUI — 主入口。定义一个带标题、布局、物品、交互和存储的物品栏 GUI。

配置

  • GUI Settings — 全局默认值:音频配置、存储点击行为映射、技能树节点。

指南

  • 介绍 — 系统如何运作、术语,以及分步创建你的第一个菜单。
    • 布局类型 — 每种布局引擎的完整示例及适用场景。
    • 命令与交互 — 点击类型、内部 gui: 动作、冷却、输入对话框。
    • Cookbook — 可直接改用的配方:可滚动列表、商店、确认、配额存入。

产物

  • GUI Storage — 持久存储产物。按玩家或按群组的物品持久化,支持累积。

快速开始

  • 1. 创建一个 Open GUI 条目 — 创建一个 Open GUI 动作条目。这一个条目就定义了某个菜单的全部内容:核心设置: - title —— 物品栏标题(MiniMessage + PlaceholderAPI) - guiType —— 物品栏类型:CUSTOMCHESTMERCHANTBOOKANVIL 等(23 种) - size —— 对于 CUSTOM 类型:SIZE_9SIZE_54 布局(选择其一): - simple —— 显式 x,y 坐标,配合 count/direction/gap/repeatY 生成网格图案 - scrollable —— 带滚动按钮的视口,内部布局滚动 - frame —— 多个独立区域,各自拥有子布局 - paginated —— 离散页面,带上一页/下一页导航 - composite —— 按 Z 顺序堆叠的子布局 - book —— 作为成书的 MiniMessage 页面 - merchant —— 带自定义物品的村民交易 物品与交互: - 用 itemdisplayNamelore 定义槽位 —— 用 x/y/count/direction 定位 - 为每个槽位附加 interactionListLEFTRIGHTSHIFT_LEFTSHIFT_RIGHTDOUBLE_CLICKDROP 等 - 附加 triggers 以在点击时触发 Typewriter 动作 存储(可选): - 为任意槽位添加 storage 以持久化物品 - 使用占位符 {stored_name}{stored_amount}{stored_max} → Open GUI 条目参考

  • 2. 从其他扩展链接 — 一旦你的 GUI 条目存在,就可以从任何需要菜单的其他扩展中引用它:- QuestCodex —— quest_codex_settings 使用 GUI 布局来浏览任务 - Shops —— 商店菜单使用 GUI 布局来展示物品 - BattlePass、Crates、Pets、Party、Profiles、Cosmetics、Dungeon、BTCSky…… —— 它们的菜单都使用 GUI 扩展 只需在另一个扩展的菜单配置中引用 Open GUI 动作条目的 ID。> GUI 扩展是 20 多个其他扩展的必需依赖

布局类型

SimpleLayout

物品放置在虚拟网格上的显式 (x, y) 坐标处。最适合静态菜单、装饰和背景。支持 countdirectiongaprepeatY 生成网格图案。

ScrollableLayout

用滚动支持包裹一个子布局。自定义滚动按钮(UP/DOWN/LEFT/RIGHT)锚定在视口上 —— 内容滚动时它们不会移动。最适合长物品列表。

FrameLayout

将屏幕划分为独立区域。每个帧拥有自己的位置、大小和子布局(通常是可滚动的)。最适合仪表盘、侧边栏和多窗格面板。每个可滚动区域必须拥有唯一 ID,以正确隔离滚动。

PaginatedLayout

离散页面,带上一页/下一页导航按钮。最适合多页菜单和大型集合。

CompositeLayout

按 Z 顺序叠放多个子布局。最适合叠层和复杂 UI。

BookLayout

将 MiniMessage 页面渲染为一本成书。最适合 Lore、指南和对话。

MerchantLayout

定义带输入物品和一个结果的村民交易。最适合商店和交易。

交互参考

所有支持的交互
交互触发
LEFT鼠标左键
RIGHT鼠标右键
SHIFT_LEFTShift + 左键
SHIFT_RIGHTShift + 右键
MIDDLE鼠标中键
DOUBLE_CLICK双击
NUMBER_KEY_1..9快捷栏按键 1-9
DROPQ 键
DROP_ALLCtrl+Q
SWAP_OFFHANDF 键

用法: 每个槽位用 interactionList 设置点击动作,globalInteractions 用于整个菜单的按键绑定。

GUI 类型参考

全部 23 种受支持的物品栏类型
类型说明
CUSTOM可配置箱子(1-6 行)
CHEST标准箱子
FURNACE熔炉
BLAST_FURNACE高炉
SMOKER烟熏炉
BEACON信标
ENCHANTING_TABLE附魔台
GRINDSTONE砂轮修复
CARTOGRAPHY_TABLE制图台修改
ANVIL铁砧修复/重命名
LOOM织布机(旗帜图案)
SMITHING_TABLE锻造台
STONECUTTER切石机
CRAFTING_TABLE工作台
BREWING_STAND酿造台
HOPPER漏斗
DROPPER投掷器
DISPENSER发射器
BARREL木桶
SHULKER_BOX潜影盒
ENDER_CHEST末影箱
MERCHANT商人交易
BOOK成书

存储与累积

  • 标准存储:点击以存入/取出物品。所有点击行为均可通过 GUI Settings 全局配置。
  • 存储占位符{stored_name}{stored_amount}{stored_max} 在槽位的 displayNamelore 中动态解析
  • forceStorage: true(默认):不可堆叠物品(剑、工具、盔甲)也可存储
  • 累积模式:设置 requiredItem + requiredAmount —— 物品被消耗,达到阈值时触发 onReachRequired
  • 群组存储:通过 group 条目在玩家之间共享存储(例如岛屿团队)
  • 临时槽位:关闭后移除的物品(temporary = true
  • onFill / onEmpty 触发器:在槽位状态变化时触发 Typewriter 动作

完整细节请参阅 GUI Storage Artifact

占位符

存储占位符

在存储槽位的 displayNamelore 中解析:

占位符说明
{stored_name}所存物品的显示名称
{stored_amount}槽位中当前物品数量
{stored_max}槽位的最大容量

引擎占位符

GUI 标题和物品 Lore 也可通过 @Placeholder 字段支持 Typewriter 引擎占位符和 PlaceholderAPI。

命令

此扩展不提供独立命令。所有菜单交互都通过 Typewriter 条目进行。

权限

无自定义权限。GUI 访问由引用 Open GUI 动作的条目控制。

依赖

Extension是否必需用途
(无)-这是一个基础扩展。20 多个其他扩展依赖它。
PlaceholderAPI可选用于标题、名称和 Lore 中的 @Placeholder 字段。