IIC2(appeng.integration.abstraction.IIC2)
基本信息
| 属性 | 值 |
|---|---|
| 源码 | appeng/integration/abstraction/IIC2.java |
| 接口声明 | 16 |
| 总行数 | 25 |
| 实现 | appeng/integration/modules/IC2.java:22(implements IIC2, IIntegrationModule) |
| 对应 modID | IC2(IntegrationType.java:15) |
4 个方法
| 方法 | 行号 | 类型依赖 | 语义 |
|---|---|---|---|
addToEnergyNet(TileEntity appEngTile) |
18 | 仅 MC | 把 AE2 方块接入 IC2 电网 |
removeFromEnergyNet(TileEntity appEngTile) |
20 | 仅 MC | 移出 IC2 电网 |
getItem(String string) |
22 | 仅 MC | 按名字取 IC2 物品 |
maceratorRecipe(ItemStack in, ItemStack out) |
24 | 仅 MC | 往 IC2 粉碎机塞配方 |
签名里没有一行 IC2 的类型
四个方法的参数与返回值全部是 net.minecraft.*(TileEntity / ItemStack)
或 String / void。这是本层的设计约束 ——
AE2 核心在没装 IC2 的环境下也必须能加载这些接口。
真正的 IC2 调用在实现里:
// integration/modules/IC2.java:87-89
public ItemStack getItem(final String name) {
return ic2.api.item.IC2Items.getItem(name);
}
// integration/modules/IC2.java:92-94
public void maceratorRecipe(final ItemStack in, final ItemStack out) {
ic2.api.recipe.Recipes.macerator.addRecipe(new RecipeInputItemStack(in, in.stackSize), null, out);
}
注入的东西
| 动作 | 位置 | 内容 |
|---|---|---|
| part layer | IC2.java:48 |
appeng.parts.layers.LayerIEnergySink ← ic2.api.energy.tile.IEnergySink |
| part layer | IC2.java:49 |
appeng.parts.layers.LayerIEnergySource ← ic2.api.energy.tile.IEnergySource |
| P2P 调律 | IC2.java:56-66 |
11 种 IC2 电缆 → TunnelType.IC2_POWER |
| 可搬运白名单 | IC2.java:70 |
Class.forName("ic2.core.crop.TileEntityCrop") → movable().whiteListTileEntity(...) |
11 个被调律的 IC2 物品(IC2.java:56-66,全部经 getItem(name)):
copperCableItem / insulatedCopperCableItem / goldCableItem /
insulatedGoldCableItem / ironCableItem / insulatedIronCableItem /
insulatedTinCableItem / glassFiberCableItem / tinCableItem /
detectorCableItem / splitterCableItem
⚠️ getItem(IC2.java:88)没有判空。它只在 IC2 已加载时
(IntegrationNode 的 Loader.isModLoaded("IC2") 已通过)被调用,
所以安全;但如果 IC2 版本删了某个物品名,返回 null 会直接
addNewAttunement(null, ...)。
mod 没装时是否安全跳过
是。链条:
IntegrationNode.call(PRE_INIT)(IntegrationNode.java:77-78)Loader.isModLoaded("IC2")→falsethrow new ModNotInstalled(modID)(IntegrationNode.java:87)catch (Throwable)(:102)→state = FAILEDisEnabled(IntegrationType.IC2)返回false(IntegrationRegistry.java:73-76)
类加载层面也安全:modules/IC2.java 里的
ic2.api.energy.tile.IEnergySink 等 import 只在类被真正加载时才解析,
而类只在 enabled 时才 loadClass(IntegrationNode.java:82)。
AE2 侧消费者
| 消费者 | 位置 |
|---|---|
| P2P 电力隧道 | appeng/parts/p2p/PartP2PIC2Power.java。注册名是 PartType.P2PTunnelEU(items/parts/PartType.java:183),显示名 GuiText.EUTunnel |
| IC2 能源方块桥 | appeng/tile/powersink/(不在本分片) |
⚠️ 命名陷阱:类名叫 PartP2PIC2Power,但注册名与显示名都是 EU
(PartType.P2PTunnelEU / GuiText.EUTunnel)。
写条目时不要把它当成独立于 EU 隧道的另一种隧道。
对应条目:P2P 隧道(EU)、 feature 侧 AEFeature.P2PTunnelEU。