ForgeMultipart

[!INFO] Git Commit: 7808254 | Updated: 2026-10-02

[!IMPORTANT] 一仓三个 modid,不是单 mod 本仓库同时提供三个 Forge mod:ForgeMultipart(库)、ForgeMicroblock(微块)、 McMultipart(原版方块 multipart 化)。三者共用一份 config/multipart.cfg, 源码总量 96 个源文件(25 个 .java + 75 个 .scala)。

在一个方块空间里放置多个各自独立的功能部件的框架库,以及配套的 「把任意方块切成小方块」微块系统。

[!NOTE] multipart 不是中文的「多方块结构」 这里的 “multipart” 指一个方块格内的多个部件(part),与工业 mod 那种 「多个方块拼成一台机器」的多方块结构(multiblock)无关。仓库里 没有任何几×几×几的机器框架、控制器方块或旋转/拆除规则。 唯一与「3×3×3」有关的概念是微块把方块切成 27 小块的槽位划分 (见 PartMap 的 27 个枚举常量)。

身份

属性 实测值
modid ForgeMultipart / ForgeMicroblock / McMultipart(3 个)
modName Forge Multipart / Forge Microblocks / Minecraft Multipart Plugin
语言 主类为 Scala(modLanguage = "scala"),25 个 Java 文件与 Scala 同目录混编(src/main/scala/ 下放 .java)
源文件 96(25 Java + 75 Scala,11 893 行)
接受版本 acceptedMinecraftVersions = "[1.7.10]"(三个 modid 均硬锁)
注册方块 1(ForgeMultipart:block,仅为容器,无功能)
注册物品 5(microblock、sawStone、sawIron、sawDiamond、stoneRod)
微材质 104 个默认(36 次 createAndRegister → 101 变种 + grass/mycelium/missing)
槽位 27(PartMap 枚举:1 CENTER + 6 面 + 12 棱 + 8 角)
配置项 3(multipart.cfg:debug_asm、durability、useSawIcons)
依赖声明 仅 ForgeMicroblock 声明 required-after:CodeChickenCore@[1.4.3,);required-after:ForgeMultipart

[!NOTE] mcmod.info 有 3 个条目,其中第 1 个的 modid / name / version 全是 ${modId} / ${modName} / ${modVersion} 占位符;另 2 个 (McMultipart、ForgeMicroblock)的 modid 是硬编码的,版本仍是占位符。 三个 modid 只能从三个 @Mod 注解实读。

核心与配置列表

API 列表

部件 Trait 列表

方块实体 Trait 列表

微块列表

McMultipart(原版方块 multipart 化)列表

字节码生成列表

事件与存盘列表

兼容列表

依赖关系

  • 硬依赖 codechickencore(CodeChickenCore): dependencies.gradle 中为 implementation("com.github.GTNewHorizons:CodeChickenCore:1.4.19:dev"), 且 ForgeMicroblock 在 @Mod 里声明 required-after:CodeChickenCore@[1.4.3,)。 该分类已登记于 relation.md 但尚未成文,此处为前向引用。
  • 内部依赖:同仓的 ForgeMicroblock 硬依赖 ForgeMultipart(required-after:ForgeMultipart)。
  • 编译期可选(dependencies.gradle,均非硬依赖):CubicChunks1710、Angelica 2.1.54、 Postea 1.2.5、NotEnoughItems 2.8.114-GTNH、GTNHLib 0.11.44、unimixins 0.1.23。
  • 运行时可选:runtimeOnlyNonPublishable 声明 Hodgepodge 2.7.174。
  • MCPC、NEI、Postea、CubicChunks 均不在本 wiki 收录范围(relation.md 无对应行)。

源码缺陷

  1. ForgeMultipart 与 McMultipart 的 @Mod 均未声明 dependencies, 但 ForgeMultipart 实际硬依赖 CodeChickenCore(dependencies.gradle 的 implementation(...))。FML 在运行期拿不到这条依赖,缺 CCL 时只在 类加载阶段炸 NoClassDefFoundError。
  2. 三个 modid 共用同一个 config/multipart.cfg: MicroblockProxy_serverImpl 直接 import MultipartProxy._ 取 config (microblock/handler/proxies.scala:11),因此不存在 microblock.cfg。 ConfigContent 声称读取 microblock.cfg,与此矛盾。
  3. ConfigContent 的注释与实现不符:其文档称读 microblock.cfg, 实际 config 变量指向的是 multipart.cfg。
  4. 3 处源码拼写错误已保留,本 wiki 条目标题沿用源码原样,未做修正: ControlKeyModifer(少 i,multipart/ControlKeyModifier.scala:3)、 MultipartCompatiblity(少 i,multipart/handler/MultipartCompatiblity.scala:7)、 生成类名前缀 heirachy(multipart/MultipartGenerator.scala)。
  5. AT 变换只有 1 条:src/main/resources/META-INF/multipart_at.cfg 仅含 public net.minecraft.block.BlockButton func_150043_b(I)V,未做整包合并。