概览
VanillaUI 原版界面替换模块功能概览
VanillaUI 原版界面替换
模块简介
VanillaUI 是 Suite 的原版界面替换模块,通过 ArcartX UI 系统将原版工作台与熔炉界面替换为纯色块风格的自定义 UI。模块在玩家打开原版工作台或熔炉时自动呈现替换界面,无需任何命令触发。工作台界面提供配方书、分类筛选、中文搜索与一键填充材料功能;熔炉界面在替换视觉层的同时,通过定时轮询熔炉方块状态,将燃烧剩余时间、烧制进度与火焰图标可见性实时推送到客户端 UI。
配方数据来源于服务端已注册的 Bukkit 配方(ShapedRecipe、ShapelessRecipe、FurnaceRecipe),并结合 VanillaItemNameBridge 将物品材质名翻译为中文,使配方书支持中英文模糊搜索。一键填充材料功能会从玩家背包中自动取出对应材料放入合成/烧制槽位,已正确放置的材料会保留并追加,不匹配的材料会退回背包。
- 模块 ID:
vanilla - 版本:1.4.4
- 配置版本:2(当前 schema)
- 源码主类:
xuanmo.arcartxsuite.vanilla.VanillaModule - 配置文件:
config.yml - UI 文件:
ui/vanilla_crafting.yml、ui/vanilla_furnace.yml - 通信包 ID:
AXS:vanilla_crafting、AXS:vanilla_furnace
功能特性
| 功能 | 说明 |
|---|---|
| 工作台界面替换 | 通过 match: [合成界面] 替换原版工作台,呈现 ArcartX UI 纯色块风格界面 |
| 熔炉界面替换 | 通过 match: [熔炉界面] 替换原版熔炉,呈现 ArcartX UI 纯色块风格界面 |
| 配方书 | 工作台和熔炉均支持配方书功能,按分类展示可用配方,点击配方预览合成网格 |
| 分类筛选 | 工作台支持全部/工具/建筑/食品/红石分类,熔炉支持全部/食品/建筑/杂项分类 |
| 中文搜索 | 配方书搜索框支持中英文物品名称模糊搜索(基于 VanillaItemNameBridge) |
| 一键填充材料 | Shift+左键点击配方图标,自动从背包填充材料到合成/烧制槽位,已有正确材料保留并追加 |
| 可合成状态标记 | 配方图标根据玩家背包材料是否充足标记为可合成(蓝色)或不可合成(红色) |
| 熔炉状态推送 | 定时轮询熔炉方块状态,推送燃烧时间、烧制进度与火焰图标可见性到客户端 |
| 燃料/燃烧进度条 | 熔炉 UI 使用纯色块动态宽度模拟燃料进度条与燃烧进度条 |
| 显示模式切换 | 配方书支持切换"显示全部配方"与"仅显示可合成配方"两种模式 |
依赖表
| 依赖 | 类型 | 说明 |
|---|---|---|
| ArcartX 客户端 MOD | 硬依赖 | 提供 UI 渲染与 PacketBridge,界面通过 ArcartX UI 呈现 |
| ArcartXSuite 核心 | 硬依赖 | 提供 PacketBridgeAPI、VanillaItemNameBridge 桥接服务 |
VanillaUI 模块不依赖任何外部插件(
external-depends为空),也不依赖其他模块(depends与softdepends均为空)。模块可独立运行。
原版界面替换机制
UI match 自动替换
VanillaUI 模块通过 ArcartX UI 的 match 属性实现原版界面替换,无需插件代码介入。UI YAML 配置中的 match 字段填写原版界面 ID,当玩家打开匹配的原版界面时,ArcartX 客户端 MOD 自动呈现替换后的自定义 UI。
| UI 文件 | match 值 | 替换目标 |
|---|---|---|
vanilla_crafting.yml | 合成界面 | 原版工作台(3x3 合成网格) |
vanilla_furnace.yml | 熔炉界面 | 原版熔炉(输入槽/燃料槽/输出槽) |
match支持精确匹配与正则匹配([regex].*前缀)。VanillaUI 使用精确匹配原版界面名称。
工作台 UI 结构
工作台 UI 替换原版工作台界面,保留原版 3x3 合成网格与结果槽,并扩展配方书面板:
| 区域 | 说明 |
|---|---|
| 主面板 | 纯色块圆角面板,包含标题"合成"、合成网格与结果槽 |
| 配方书按钮 | 点击切换配方书打开/关闭,打开时高亮蓝色 |
| 合成网格 | 3x3 槽位(slotType: Container,id 1-9),与原版工作台槽位对应 |
| 结果槽 | 合成结果槽位(slotType: Container,id 0) |
| 预览网格 | 选中配方后在合成网格上叠加的半透明材料预览 |
| 配方书面板 | 展开时显示搜索框、显示切换按钮、分类栏与配方滚动区 |
| 背包区 | 原版背包 27 格 + 快捷栏 9 格(slotType: Backpack) |
熔炉 UI 结构
熔炉 UI 替换原版熔炉界面,保留原版输入槽/燃料槽/输出槽,并扩展配方书面板与进度条:
| 区域 | 说明 |
|---|---|
| 主面板 | 纯色块圆角面板,包含标题"熔炉"、输入槽/燃料槽/输出槽与进度条 |
| 输入槽 | 烧制输入槽位(slotType: Container,id 0) |
| 燃料槽 | 燃料槽位(slotType: Container,id 1) |
| 输出槽 | 烧制结果槽位(slotType: Container,id 2) |
| 燃料进度条 | 纯色块动态宽度,宽度 = 46 * (burnTime / burnTimeTotal) |
| 燃烧进度条 | 纯色块动态宽度,宽度 = 23 * (cookTime / cookTimeTotal),仅在燃烧时可见 |
| 配方书面板 | 展开时显示搜索框、显示切换按钮、分类栏与配方滚动区 |
| 背包区 | 原版背包 27 格 + 快捷栏 9 格(slotType: Backpack) |
配方书交互流程
- 玩家打开工作台/熔炉,UI
open触发器发送request_recipe_book包到服务端 - 服务端返回当前配方书状态(
recipe_book_toggle包),包含分类图标与配方数据 - 玩家点击配方书按钮,发送
toggle_recipe_book包,服务端切换状态并推送新数据 - 玩家在搜索框输入文本,客户端本地过滤配方列表
- 玩家点击分类标签,客户端本地过滤配方列表
- 玩家左键点击配方图标,选中配方并在合成网格上叠加预览
- 玩家 Shift+左键点击配方图标,发送
place_ingredients包,服务端一键填充材料