integration/modules/BCHelpers(bc-helpers)

覆盖范围

appeng.integration.modules.BCHelpers 包,5 个 .java 文件。

实测:find integration/modules/BCHelpers -name '*.java' | wc -l = 5。

文件 行号 继承 / 实现
BCPipeHandler.java 24 implements IExternalStorageHandler
BCPipeInventory.java 28 implements IMEInventory<IAEItemStack>
AEGenericSchematicTile.java 25 extends SchematicTile(BC 类)
AECableSchematicTile.java 32 extends AEGenericSchematicTile + implements IPartHost
AERotatableBlockSchematic.java 19 extends SchematicBlock(BC 类)

分成两组

组 A:管道外部存储(2 个)

IExternalStorageHandler          BCPipeHandler   (:24)
  └─ getInventory(...)  ──────▶  BCPipeInventory  (:28)
                                  implements IMEInventory<IAEItemStack>

注册点:integration/modules/BuildCraftTransport.java:229

api.registries().externalStorage().addExternalStorageInterface(new BCPipeHandler());

这是 6 个 addExternalStorageInterface 调用点之一 (完整清单见 me/storage 总览)。

⚠️ BCPipeInventory 实现的是 AE2 的 IMEInventory<IAEItemStack>, 不是 BC 的类型。BC 管道在内部被适配掉。

组 B:蓝图 / schematic 支持(3 个)

类 BC 父类 作用
AEGenericSchematicTile SchematicTile 通用蓝图 tile 适配
AECableSchematicTile AEGenericSchematicTile + IPartHost 线缆总线在蓝图中的宿主
AERotatableBlockSchematic SchematicBlock 可定向方块的蓝图方块

继承链:

buildcraft.transport.SchematicTile
        └─ AEGenericSchematicTile   (:25)
             └─ AECableSchematicTile  (:32)  implements appeng.api.parts.IPartHost

AECableSchematicTile implements IPartHost 意味着 AE2 的 part 可以被放进 BC 蓝图并作为线缆总线宿主存在。 IPartHost 定义在 appeng/api/parts/(不在本分片), 实现在 appeng/parts/(不在本分片)。

与 BuildCraftBuilder 的分工

关注点 模块 helper
管道读写 BuildCraftTransport BCPipeHandler / BCPipeInventory
蓝图摆放 BuildCraftBuilder AECableSchematicTile / AERotatableBlockSchematic
扳手 BuildCraftCore 无 helper

BuildCraftBuilder.initBuilderSupport() (integration/modules/BuildCraftBuilder.java:70-)登记的是方块到 ISchematicRegistry;而 3 个 Schematic 类提供的是运行时的 tile / block 实现。

本组直接继承 BC 的类 —— 无隔离层

⚠️ AEGenericSchematicTile extends SchematicTile 与 AERotatableBlockSchematic extends SchematicBlock 是编译期硬继承 BC 的类(与 abstraction/ 层的隔离风格相反)。

安全性来自 IntegrationNode:这 5 个类只在 BuildCraft|Transport 已加载时才被 loadClass (integration/IntegrationNode.java:82), 所以 BC 缺席时 SchematicTile / SchematicBlock 不解析。

mod 没装时是否安全跳过

是,理由同上:BuildCraft|Transport 未装 → 该目标 FAILED → 本目录 5 个类不被加载。

⚠️ 但 BuildCraft|Transport 装而 BuildCraft|Core 没装时, 本目录仍会被加载(两者独立判定)。此时 SchematicTile 来自 Transport 而非 Core,可正常解析。

相关条目