QmunityLib
[!INFO] Git Commit:
a16d4a6(tag0.3.1) | Updated: 2026-10-02
QmunityLib 是 GTNH 整合包中 Blue Power 的核心多方块(Multipart)库模组,
仓库 GTNewHorizons/QmunityLib,作者 Qmunity(BluePower 团队)。
它的作用是把「一个方块里塞进多个可独立存在、可独立渲染的小部件」这套机制
抽象成一套 API,让 Blue Power 等下游模组直接实现 IPart 接口即可获得
渲染、红石、碰撞、光照、WAILA 支持。
| 属性 | 实测值 |
|---|---|
| modid | qmunitylib(全小写,QLModInfo.java:5) |
| modName | QmunityLib(QLModInfo.java:6) |
| 主包 | uk.co.qmunity.lib |
| Java 文件 | 133 |
| 注册方块 | 1(qmunitylib:multipart) |
| 注册 TileEntity | 1(qmunitylib:multipart) |
| 注册物品 | 0 |
| 命令 | 1(/qlib) |
| 语言文件 | 0(见「已知缺陷」) |
mcmod.info |
不存在 |
| 版本字段 | GRADLETOKEN_VERSION(构建期占位符,QLModInfo.java:7) |
[!IMPORTANT] 定位:库模组,不是独立玩法 mod 玩家视角几乎看不到任何内容——注册的
qmunitylib:multipart方块 没有对应的 ItemBlock,进不了背包、也不在创造模式物品栏里。 它存在的唯一意义是给TileMultipart一个注册锚点,让下游模组通过PartRegistry把IPart挂到这个方块上。 不要把它当成「有方块有物品的普通模组」来记录。
[!WARNING] 本 mod 仓库内完全没有
src/main/resources目录 没有mcmod.info、没有任何.lang、没有贴图。 后果:BlockMultipart的setBlockName("qmunitylib:multipart")没有对应语言条目, 在游戏内该方块的显示名就是裸键名qmunitylib:multipart。 这对库模组无害(玩家本来就拿不到),但「无本地化」是实测事实而非疏漏。
[!NOTE] 一处死常量:
Names.Registry.Items.MULTIPART(Names.java:23)在全仓库没有任何引用——ItemMultipart是abstract类(ItemMultipart.java:14), 从未被实例化也从未注册。物品注册表实际为空。
依赖关系
本 mod 不依赖任何其它模组,@Mod 注解(QmunityLib.java:15)未声明
dependencies / depends。它提供的是 Forge 多方块兼容层:
- 同时提供 FMP(ForgeMultipart) 与 standalone(自带) 两套实现,
由
MultipartSystem在preInit/init/postInit三阶段分别初始化 (QmunityLib.java:25、:37、:43) - 客户端额外注册渲染处理器:
RenderMultipart(方块)、RenderParticle(实体)
方块与实体
- 多方块方块 -
qmunitylib:multipart,唯一的注册方块,无 ItemBlock - 多方块 TileEntity -
TileMultipart,部件容器的宿主
API
本 mod 的核心价值全部在 API 层,玩家不可见。
- 部件接口体系 - 27 个
IPart*/IMicroblock能力接口 - PartBase 与部件注册表 - 部件基类与
PartRegistry注册入口 - 微方块形状 -
MicroblockShape立方体占用模型
兼容层
网络
- 网络处理器 - 注解驱动的 SimpleNetworkWrapper 封装
命令
- /qlib 命令 - 调试用 UUID / TPS / 运行时间查询
快速导航
- ForgeMultipart - 同类多方块框架库(独立仓库,本分类之外)
- WAILAPlugins - 本库通过
IPartWAILAProvider对接的 WAILA 附加组件