如果你在用 Rebar 做巨型多方块机器,你一定会遇到这三个致命痛点:
- 状态丢失:Rebar 原生预览和检测不支持楼梯朝向、半砖等复杂
BlockData。你定义的机器只能是光秃秃的方块。 - 状态严格匹配:巨型机器(几千方块)如果玩家放错了一个楼梯方向,Rebar 会瞬间判定
unform,整个机器停机,体验极差。 - 检测性能瓶颈:Rebar 的
checkFormed()是暴力遍历匹配,结构越大,每次放置方块时的延迟检测消耗越严重。
MonolithLib 就是为了彻底消灭这三个问题而生。
MonolithLib 不依赖 Rebar 的检测系统,而是拥有一套完全独立的、借鉴格雷科技的高级验证引擎。
- 独立验证:采用增量式、格雷科技级别的高性能检测,只检查材质匹配,忽略方块状态(朝向、半砖类型等)。玩家只需放对材质,状态由 MonolithLib 自动修正。
- 无缝欺骗:当所有方块材质匹配后,MonolithLib 会在底层瞬间自动修正所有方块状态为 Rebar 要求的精确状态,然后轻触 Rebar 的触发器,让 Rebar 毫无察觉地接收这台完美机器。
- Shape(形状):纯粹的 3D 物理模型。包含精确的相对坐标和
BlockData(完美保存楼梯朝向等状态)。 - Blueprint(蓝图):
Shape+ 业务元数据(显示名、所需材料、核心偏移量)。这是玩家和开发者直接交互的对象。
|
独立于 Rebar,只检查材质匹配,忽略方块状态,巨型结构不卡顿 |
材质全部匹配后,自动将所有方块状态修正为 Rebar 要求的精确状态 |
类似 Litematica 的逐层投影,仅渲染玩家周身 7 格幽灵方块,万级结构丝滑预览 |
支持导入 .schem/.litematic/.nbt,导出极速二进制 .mnb 格式,游戏内搭建导出 |
作为 Rebar 机械开发者,你的代码将变得极度清爽。你只需要关心机器的逻辑,物理形状全部交给 .mnb。
class MyPlugin : JavaPlugin() {
override fun onEnable() {
// 加载物理形状
val shape = MonolithAPI.io.loadShape(File(dataFolder, "blast_furnace.mnb"))
val blueprint = Blueprint(
id = "blast_furnace",
shape = shape,
meta = BlueprintMeta(
name = text("高级高炉"),
description = listOf(text("支持自动状态修正的巨型高炉"))
)
)
MonolithAPI.registry.register(blueprint)
}
}Rebar 代码里写死最严格的规则,MonolithLib 会在最后帮你"骗"过这些规则。
class BlastFurnaceMultiblock : RebarSimpleMultiblock {
override val components = mapOf(
Pair(Vector3i(0, 0, 0), RebarMultiblockComponent(NamespacedKey("myplugin", "core"))),
// Rebar 要求必须是朝西的楼梯,但玩家朝东放了也能用,MonolithLib 会自动修正!
Pair(Vector3i(1, 0, 0), VanillaBlockdataMultiblockComponent(
Material.OAK_STAIRS.createBlockData("[facing=west,half=bottom]")
))
)
}当玩家在建造巨型结构时,MonolithLib 完全接管了检测过程:
- 玩家建造期:Rebar 完全休眠。MonolithLib 的高性能引擎实时检测,只检查材质,即使玩家把楼梯放反了,MonolithLib 也算作"有效进度"。
- 材质全部匹配:当所有方块材质都正确放置后,MonolithLib 判定建造完成。
- 自动修正:MonolithLib 在 1 tick 内,将所有方块
setBlockData修正为 Rebar 代码里要求的精确状态。 - 唤醒 Rebar:MonolithLib 自动触发 Rebar 的核心放置机制。Rebar 醒来一测,全是完美匹配,瞬间
onMultiblockFormed()。
开发者无需编写任何修正逻辑,MonolithLib 全包了。
/monolith list- 查看所有可用蓝图/monolith info <ID>- 查看详情与材料/monolith preview <ID>- 开启分层投影预览/monolith build <ID>- 执行自动建造(未来功能)/monolith litematica easybuild- 开启/关闭轻松放置模式/monolith litematica printer- 开启/关闭自动打印模式
工地系统 (BuildSite):玩家使用蓝图物品右键放置后创建的建造区域,支持:
- 分层渲染:逐层显示待建造的幽灵方块
- 进度追踪:记录已放置的方块位置
- 核心检测:支持 Rebar 核心控制器的放置检测
轻松放置模式 (EasyBuild):类似 Litematica 的半自动建造
- 玩家手持正确材质的方块对准幽灵位置右键即可自动放置
- 层级完成时自动切换到下一层
- 建造完所有层后自动进行最终状态修正
自动打印模式 (Printer):自动化的建造助手
- 玩家周围 4 格范围内的幽灵方块会被自动放置
- 每 4 tick 自动检测并放置一个方块
- 适合生存模式下的快速建造
建造体验:玩家看着投影,不需要死磕每一个方块的朝向。只要放对了材质,MonolithLib 会自动修正所有状态,机器直接启动。
蓝图桌是一个特殊的方块机器,用于在游戏内创建蓝图物品:
合成配方:/# Loom + 4x Paper → Blueprint Table
蓝图桌功能:
- GUI 界面显示所有已注册的蓝图
- 放入纸(Paper)后可以从列表中选择蓝图进行"打印"
- 打印出的蓝图物品可以右键放置创建工地(BuildSite)
- 蓝图物品包含面向信息,可以设定结构的朝向
MonolithLib/
├── api/ # 🚪 对外门面
│ ├── MonolithAPI.kt # 核心 API 入口
│ ├── BlueprintAPI.kt # 蓝图操作 API
│ ├── dsl/ # DSL 构建器
│ └── event/ # 事件定义
│
├── core/ # 🧱 纯粹的基础设施
│ ├── model/ # Shape、Blueprint 数据模型
│ ├── math/ # 向量、矩阵数学
│ ├── io/formats/ # 格式读写器 (.mnb/.schem/.litematic/.nbt)
│ └── transform/ # 坐标变换、方块状态旋转
│
├── feature/ # 🛠️ 业务功能
│ ├── preview/ # Ghost 渲染器、投影会话
│ ├── builder/ # 建造执行器
│ ├── buildsite/ # 工地系统:分层建造、进度追踪
│ ├── machine/ # 蓝图桌机器方块
│ ├── material/ # 材料统计计算器
│ └── rebar/ # Rebar 适配器
│
├── validation/ # 🛡️ 核心灵魂:高级验证引擎
│ ├── ValidationEngine.kt # 高性能增量检测(只检查材质)
│ ├── AsyncValidator.kt # 异步验证
│ ├── AutoFixer.kt # 自动状态修正
│ └── predicate/ # 谓词工厂:严格/松散/Rebar 匹配
│
├── integration/ # 🔗 第三方集成
│ └── BlueprintMultiblockAdapter.kt # Rebar 多方块适配器
│
├── lifecycle/ # ♻️ 生命周期管理
│ └── BlueprintLifecycle.kt
│
└── internal/ # ⚙️ 内部实现
├── command/ # 命令系统
└── mixin/ # 底层注入
- 投影打印机:类似投影打印机MOD。
- 蓝图加农炮:类似机械动力,搭好加农炮,放入材料图纸,轰出巨型机器。
- 图形化蓝图 GUI:分类浏览、材料预览。
- 蓝图分享网络:支持从在线仓库直接下载
.mnb蓝图。
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
用 MonolithLib,让你的玩家享受造巨型机器的乐趣,而不是被死板的规则折磨。
如果觉得有用,请给一个 ⭐️ !
