
HoloBuilder - 蓝图加载器
客户端侧原理图全息投影构建器,支持Fabric和NeoForge。
HoloBuilder
HoloBuilder 是一个原创的客户端侧 Minecraft 模组,用于加载本地结构文件并在世界中显示建筑全息投影。
该项目有意独立于 Litematica:未复用任何 Litematica 的代码、类名、包名、内部架构、文件布局或实现细节。
目标版本
| Minecraft | Java | Fabric Loader | Fabric API | NeoForge |
|---|---|---|---|---|
| 1.21.1 | 21 | 0.19.3 | 0.116.13+1.21.1 | 21.1.235 |
| 26.1.2 | 25 | 0.19.3 | 0.152.1+26.1.2 | 26.1.2.76 |
Fabric 和 NeoForge 版本以独立文件形式针对每个 Minecraft 版本分发。1.21.1 的构建目标严格对应 1.21.1,不声称与后续的 1.21.x 版本兼容。
模块
common:与加载器无关的模型、解析、放置、比较和客户端状态。fabric:Fabric 入口点、按键绑定、本地游戏目录集成和 Fabric 渲染事件适配器。neoforge:NeoForge 入口点、按键绑定、本地游戏目录集成和 NeoForge 渲染事件适配器。
Minecraft API 的引用不会进入 common 模块。加载器模块将 Minecraft 客户端状态适配为 common 模块暴露的少量抽象接口。
MVP 行为
启动时,客户端会创建:
<游戏目录>/holobuilder/schematics/
<游戏目录>/holobuilder/config.json
如果 schematics 文件夹中尚无示例文件,会自动写入一个简单的 .holo 结构。游戏启动时不会自动加载任何原理图;玩家必须从原理图界面中选择一个。
叠加层会将预期的结构方块状态与客户端世界进行比较:
- 幽灵方块:预期方块缺失,因为世界中的位置是空气。
- 红色幽灵方块:预期方块应处的位置被其他方块占据。
- 绿色轮廓:预期方块已正确放置,仅在界面中启用此选项时显示。
渲染器会忽略预期的 minecraft:air 方块。缺失和错误的方块会以半透明的幽灵版本形式渲染,显示为预期的 Minecraft 方块模型,并保留加载原理图中所包含的方块状态属性,例如上半砖、楼梯朝向、墙/栅栏形状等。
整个原理图体积会以琥珀色轮廓标记。当图层视图激活时,选中的 Y 层还会以蓝色轮廓标记。
渲染器只读取客户端世界。放置功能是自愿加入的,仅限于创造模式,并使用标准的 Minecraft /setblock 命令。
操作控制
- H:打开原理图选择界面。
- 数字键盘 5:重新加载当前激活的原理图。
- 数字键盘 0:卸载当前激活的原理图。
- B:在创造模式下,使用
/setblock直接建造所有缺失/错误的原理图方块。 - V:切换自动放置器。启用后,右键点击即可放置全息投影中当前瞄准的方块。
- C:切换全自动建造。启用后,瞄准的全息投影方块会以短暂冷却时间自动放置。
- G:切换原理图渲染。当原理图渲染时,HUD 快捷方式叠加层会保持可见,且不会阻挡玩家移动。
- 数字键盘 4 / 6:相对于玩家水平视角方向,向左或向右移动放置位置。
- 数字键盘 3 / 9:在 Y 轴上移动放置位置。
- 数字键盘 8 / 2:相对于玩家水平视角方向,向前或向后移动放置位置。
- 数字键盘 + / -:将原理图放置位置顺时针或逆时针旋转 90 度。
- 数字键盘 1 / 7:启用图层视图,并显示较低或较高的 Y 层。
- X:将图层视图恢复为显示所有层。
直接建造、自动放置器和全自动建造会保留原理图中的精确方块状态,包括当前应用的 90 度旋转。这些建造辅助功能需要创造模式,并发送 /setblock 命令;在多人游戏服务器上,命令执行仍取决于服务器权限。
使用 /holo undo 来恢复当前会话中 HoloBuilder 最近一次建造操作之前的方块状态。方块实体数据(如容器中的物品)无法在客户端侧恢复。
选择界面会列出 holobuilder/schematics/ 中支持的文件:
.holo.litematic.schem.schematic
选择一个文件,然后按 加载 将其加载到当前玩家位置附近。
原理图界面分为两个面板:左侧面板列出可用的原理图文件,较宽的右侧面板预览当前或所选原理图所需的非空气方块。可滚动的材料面板可以在列表视图和拼贴视图之间切换,显示方块图标,将数量格式化为“组数 + 余数”,例如 4x64 + 29,在拼贴视图中悬停时显示方块名称,并允许玩家点击方块条目以在收集资源时用绿色勾选标记它。
界面还提供简单的渲染设置:
- 全息投影不透明度。
- 显示或隐藏已正确放置的方块。
- 启用或禁用轮廓。
- 显示或隐藏缺失方块。
- 显示或隐藏错误方块。
- 打开本地原理图文件夹。
全息投影渲染距离遵循 Minecraft 的有效渲染距离,但受 HoloBuilder 保存的渲染距离上限限制,以避免在高区块距离设置下扫描和绘制远处的全息投影方块。
性能警告
非常大的原理图在显示全息投影时仍可能导致显著的 FPS 下降或卡顿,尤其是在高渲染距离设置或复杂方块状态的情况下。为获得最流畅的体验,请调低 HoloBuilder 的渲染距离,使用图层视图,隐藏已正确放置的方块,或将大型建筑拆分成多个较小的原理图。
结构格式
第一种内部格式是 JSON:
{
"format": "holobuilder.structure.v1",
"name": "示例平台",
"placement": [0, 64, 0],
"palette": [
"minecraft:oak_planks",
"minecraft:glass"
],
"regions": [
{
"name": "base",
"origin": [0, 0, 0],
"blocks": [
{ "pos": [0, 0, 0], "palette": 0 },
{ "pos": [1, 0, 0], "palette": 0 },
{ "pos": [0, 1, 0], "palette": 1 }
]
}
]
}
调色板条目可以是完整的方块状态,例如:
"minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]"
通用模型将调色板条目、区域、相对位置、尺寸、元数据和放置原点分离开来,以便将来可以在不重写加载器代码的情况下添加变换功能。
计划中的扩展点
common模块中的旋转和镜像变换。- 基于调色板和方块数量的材料列表聚合。
- 对导入的 NBT 格式进行更丰富的验证和元数据报告。
- 对旧的
.schematic文件进行更完整的遗留元数据转换。
构建
.\gradlew.bat :common:build :fabric:build :neoforge:build
构建产物位于:
fabric/build/libs/neoforge/build/libs/
加入官方 Discord:
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。