Java 示例:GitHub Packages
Java 项目使用com.kitemc:kitemarket-ui-api:1.0.0 为 compileOnly 依赖,不得打包或重定位 SDK。完整可运行源码位于公开仓库 examples/ui-java,不需要私有市场核心。
先合并市场 API 的 Packages 仓库和认证配置,再添加以下依赖。
公开包也需要 read:packages classic PAT,使用用户级 gpr.user/gpr.key 或 GITHUB_ACTOR/GITHUB_TOKEN,不要把 Token 写入项目。引用前确认公开仓库的 Packages 列表有该版本;本说明不代表包已上传。
github-kitemarket 仓库与 settings.xml 凭据,并添加:
KiteMarket-UI-API-1.0.0.jar 作为备用编译依赖,下载无需 Packages Token。任何引用方式都不能打包、shade 或重定位 SDK。
安装资源与实现提供者
提供者负责显示和输入,交易仍由共用服务端控制器处理。回调必须使用服务器登记的动作/输入标识,不能把客户端金额、玩家身份或旧页面当作有效请求。页面关闭、失效或重复确认继续执行共用会话保护。注册与回调
公开KiteMarket-UI-API 模块使用 Java 11 和独立 MIT License,适配插件只做 compileOnly 引用,不打包第二份 SDK。
实现 com.kitemc.market.api.ui.UiProvider 后,通过 Bukkit ServicesManager 取得 KiteMarketUiApi 并调用 api.register(owningPlugin, provider);禁用插件时关闭返回句柄。注册本身不查官方 DLC 权益。
UiPage.token()/pageVersion() 和 UiPrompt.token() 描述页面/字段身份,UiPage.actions() 及打开参数提供不透明动作标识。
输入/动作仅通过 UiCallbacks.action(token)、input(raw)、closed() 返回,绑定回调再次校验并调度。
页面更新与资源变化
UiProvider.update(...) 默认调用 open(...);原生界面可就地更新,但必须一并替换页面身份、全部动作令牌及全部回调,包括关闭回调。
厂商事件改变真实客户端/资源就绪状态后,先更新自己的状态,再调用 api.changed(owningPlugin) 请求重新检查;只有启用中且仍有有效注册的拥有者可以通知,该方法本身不证明资源就绪。
同页显示刷新
可选UiProvider.refresh(player, page, theme) 用于同页显示刷新,例如倒计时,默认返回 false。
它保持 token、pageVersion、动作字典及原回调不变,只更新当前已打开视图的显示副本,不重开库存或触发动作;完成返回 true,不支持或已关闭返回 false。
旧提供者保持静态快照,直到正常导航或玩家刷新;主插件不会因不支持此方法而定时重开界面。应用前必须核对当前页面身份,迟到结果不能覆盖新页面。
IA 资源检查
IA 适配者在玩家调度上下文调用只读api.itemsAdderUnavailable(player, page, theme),复用主插件观察的字体注册、实际下发 UUID/SHA-1 及对应成功加载证明。
null 才表示本页资源就绪,其他值为回退原因;该检查不发送资源包、不改偏好、不查官方 DLC 或授予交易权。
默认实现为 IA_READINESS_UNSUPPORTED,兼容既有接口实现并拒绝把未知状态当作就绪;调用此方法需要安装包含它的 KiteMarket 版本,不能在自己的插件中打包新 SDK 替换旧主插件。
真实 IA 示例
公开仓库examples/ui/ 提供极简白框配置主题,examples/ui-java/ 提供真实 Java IA 适配器。
后者使用 Java 21、厂商公共 compileOnly API 和真实 TexturedInventoryWrapper,注册 example.itemsadder,呈现真实市场页面及已登记动作;没有演示余额或假的交易结果。
公开 SDK 仍使用 Java 11,示例不安装到 Java 11 Legacy 或未验证的 Folia 节点。
库存呈现顺序
IA 适配器先填充TexturedInventoryWrapper.getInternal() 返回的受保护库存,登记新 holder、动作和回调,再调用公开 showInventory(player) 呈现字体标题。
只用 Bukkit 打开内部库存会显示 IA 占位标题。保留这一步骤顺序及整窗保护,旧页关闭事件才能与新页分开处理。
安装示例包
KiteMarket-Examples-1.0.0.zip 示例包汇总查询例与 IA 例,包含可运行 JAR、主题、MIT 自有资源、双语说明及源码/构建文件。
将 IA 示例 JAR 放入 plugins/、theme.yml 放到 plugins/KiteMarket/themes/example-ia-java.yml、itemsadder/ 内容放到 plugins/ItemsAdder/contents/km_example/;按实际 IA 指南重建和下发,登记真实包身份后通过 /km ui itemsadder example-ia-java 选择主题。
更新、旧关闭、重复点击和聊天输入继续遵循共用保护。
许可与验证范围
配置主题及 Java 示例中标记为 MIT 的源码与资源可以修改并用于商业界面,无需额外的 KiteMC 主题授权。其他主题遵循各自许可。 白框配置与 Java 示例的真实发布页已在代表组合打开,这项记录不认证其他资源包或全部页面;源码、编译和注册成功也不替代实际客户端验证。错误定位
页面、动作与生命周期
核对35页的模板、动作令牌、输入约定及提供者生命周期。