电力体系

基本信息

属性 值
实现文件 power/TilePowered.scala / TilePoweredEU.scala / TilePoweredRF.scala / ItemPowered*.scala
内部单位 MJ(所有机器参数、工具电量均以 MJ 计量)
外部系统 IC2(EU)与 CoFH API(RF),均为可选
必需性 PowerProxy.logModVersions 明确警告:至少要有 CoFHCore 或 IC2 Experimental 之一,否则「No useable energy system detected」

模块探测

compat/PowerProxy.scala:

常量 / 变量 值
IC2_MOD_ID "IC2"
TE_MOD_ID "CoFHAPI"
haveIC2 Misc.haveModVersion("IC2")
haveTE Misc.haveModVersion("CoFHAPI")
EUEnabled Tuning.Power.EU.Enabled
RFEnabled Tuning.Power.RF.Enabled

两个系统都通过 @Optional.Interface / @Optional.Method 注解做可选加载(TilePoweredEU 上有 @Optional.Interface(modid = IC2_MOD_ID, iface = "ic2.api.energy.tile.IEnergySink")),因此未安装 IC2 时不会报 NoClassDefFoundError。

换算比例

来自 tuning.cfg 的 Power 段:

键 值 注释原文
RF_MJ_Ratio 10 10 RF = 1 MJ
EU_MJ_Ratio 2.5 5 EU = 2 MJ

两者方向一致:1 MJ = 10 RF = 2.5 EU。因此 1 EU 比 1 RF 便宜 4 倍(以 MJ 计价)。

IC2 EU 接入

TilePoweredEU 实现 IEnergySink:

方法 实现
getDemandedEnergy Misc.clamp(power.capacity - power.stored, 0f, power.maxReceive) * ratio —— 索取量 = 剩余可用空间(不超过 maxReceive)× EU_MJ_Ratio
getSinkTier 读 Tuning.Power.EU.SinkTier,默认 2(注释:1 = LV, 2 = MV, 3 = HV, 4 = EV etc.)
injectEnergy power.stored += (amount / ratio).toFloat,绕过 power.inject 并返回 0
acceptsEnergyFrom 见源文件,未做方向限制

injectEnergy 绕开正常注入通道的原因写在源码注释里:IC2 忽略了返回值,不这么做会导致能量被白白浪费。代价是 IC2 会以为什么都没接收从而持续推送,模组用「全部收下」的返回值换取不丢能量。

sendLoad / sendUnload 在 serverTick 与 invalidate / onChunkUnload 时向 MinecraftForge.EVENT_BUS 发 EnergyTileLoadEvent / EnergyTileUnloadEvent。

CoFH RF 接入

TilePoweredRF 通过 CoFH API 接口接收 RF,按 RF_MJ_Ratio 折算为 MJ 存入同一个 power 数据槽。两套系统共用同一份储能,不存在双缓冲。

工具侧

ItemPowered trait = ItemPoweredBase(bdlib)+ ItemPoweredRF + ItemPoweredEU,即 Industrial Grafter 与 Scooporator 同样接受 RF 与 EU。

显示单位

client.config 的 PowerShowUnits 决定 GUI 显示单位,默认 RF。选 MJ 时 powerShowMultiplier 保持 1f;选 RF / EU 时分别读 RF_MJ_Ratio / EU_MJ_Ratio。见 client.config。

FML 依赖声明

@Mod(dependencies = ...) 中 CoFH 与 IC2 都是 after:(软依赖)而非 required-after::

required-after:Forestry@[4.0.0.0,);after:BuildCraft|energy;after:BuildCraft|Silicon;
after:IC2;after:CoFHCore;after:BinnieCore;after:ExtraBees;after:ExtraTrees;
after:MineFactoryReloaded;after:MagicBees;required-after:bdlib@[1.9.4.109,)

即硬依赖只有两个:Forestry ≥ 4.0.0.0 与 bdlib ≥ 1.9.4.109。after:Energy 类依赖决定加载顺序但不强制存在。

相关条目