GUI 是新一代的 Minecraft 插件 GUI 开发框架,基于现代化的架构设计,提供强大而灵活的用户界面开发能力。与 Core 模块深度集成,原生支持 i18n 国际化和 MiniMessage/Legacy 格式解析。
GUI 模块与 Core 的 Message 模块深度集成,支持:
- 直接使用 i18n 模板:
name("<%gui.button.confirm%>")而不是name(plugin.messager.sprintf("<%gui.button.confirm%>")) - 自动格式解析:支持 MiniMessage 和 Legacy 格式的自动识别和转换
- 统一的文本处理:所有文本都通过 GuiManager 的 textPreprocessor 处理
- Session系统:类似浏览器的会话管理,支持页面栈和导航
- 组件化设计:可复用的UI组件,支持复杂布局
- 事件冒泡:从item到component到page的事件传播机制
- 生命周期管理:自动资源管理,防止内存泄漏
- SingleSlotComponent:单槽组件,最基础的UI元素
- RectFillComponent:矩形填充组件,填充矩形区域
- BorderFillComponent:边框填充组件,专门用于创建边框装饰
- PatternFillComponent:模式填充组件,基于字符模式的布局
- PaginatedComponent:统一分页组件,支持有限分页和无限滚动
- ScrollableComponent:滚动组件,支持垂直滚动
- StorageComponent:存储组件,允许物品操作
- DataProvider系统:统一的数据提供器接口
- 自动模式识别:根据数据特性自动选择有限/无限分页
- 多种缓存策略:单页、多页、激进缓存
- 异步数据加载:支持本地数据和远程API
- 加载状态管理:友好的加载中和错误状态显示
- 第一个GUI - 创建你的第一个GUI
- 组件使用 - 学习各种组件的使用
- 事件处理 - 响应用户交互
- 会话管理 - 深入理解Session和页面导航
- i18n集成 - 掌握国际化功能
- 高级功能 - 调度器、异步操作等
- API总览 - 完整的API文档
- 页面API - Page相关接口
- 组件API - Component相关接口
- 会话API - Session相关接口
- 事件API - 事件处理接口
- 物品API - ItemUtil工具类
- 文档导航 - 完整的文档索引和学习路径
class MyPlugin : BasePlugin() {
override fun onPluginEnable() {
// 使用推荐的openPage方法创建GUI
openPage(InventoryType.CHEST, 27, player) {
// 直接使用i18n模板,支持MiniMessage和Legacy格式
title("<%gui.example.title%>")
// 添加按钮
slotComponent(x = 4, y = 2) {
render {
item(Material.EMERALD) {
// 直接使用i18n模板,无需手动sprintf
name("<%gui.button.confirm%>")
lore("<%gui.button.confirm_hint%>")
}
}
onLeftClick {
// 需要参数替换时仍使用messager
player.sendMessage(plugin.messager.sprintf("<%gui.message.confirmed%>", player.name))
this@openPage.close() // 关闭页面
}
}
}
}
}# lang/zh_CN.yml
gui:
example:
title: "<green>示例GUI</green>"
button:
confirm: "<green>确认</green>"
confirm_hint: "<gray>点击确认操作</gray>"
message:
confirmed: "<green>{0} 已确认操作!</green>"- Minecraft: 1.20.1+
- Java: 17+
- Core模块: 必需(提供基础功能)
- Paper: 推荐(更好的性能和API支持)
- 快速上手:阅读 快速入门 在5分钟内创建第一个GUI
- 理解概念:学习 核心概念 掌握设计理念
- 跟随教程:按顺序完成 教程指南 中的内容
- 查阅参考:使用 API文档 查找具体接口
- 学习示例:参考 示例代码 了解最佳实践
开始你的GUI模块开发之旅吧! 🎉