TileEntityElectricFurnace(电力熔炉)
事实基准:
/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。
注册信息
| 属性 | 值 | 来源 |
|---|---|---|
| TileEntity 注册名 | Galacticraft Electric Furnace |
GalacticraftCore.java:730 |
| 所属 modid | GalacticraftCore |
core/Constants.java:7,@Mod 见 GalacticraftCore.java:160-161 |
| 关联方块(旧版) | BlockMachine |
core/blocks/BlockMachine.java:226(metadata 8) |
| 关联方块(分体版) | BlockMachineTiered |
core/blocks/BlockMachineTiered.java:265-268(按 metadata / 8 + 1 决定 tier) |
| 父类 | TileBaseElectricBlockWithInventory |
core/energy/tile/TileBaseElectricBlockWithInventory.java:10 |
| 实现接口 | ISidedInventory |
core/tile/TileEntityElectricFurnace.java:22 |
| 槽位数 | 3(getSizeInventory() 本类未覆写,继承 core/energy/tile/TileBaseElectricBlockWithInventory.java:46-48,返回 getContainingItems().length) |
同上 |
⚠ 注册名带 Galacticraft 前缀,与 Ingot Compressor、Energy Storage Module
(GalacticraftCore.java:733、:728)不同。名字里的空格是源码原文。
槽位与字段
core/tile/TileEntityElectricFurnace.java:38:
private ItemStack[] containingItems = new ItemStack[3];
getContainingItems()(:195-197)返回该数组 → getSizeInventory() 恒为 3。
:181 的 readFromNBT 用 readStandardItemsFromNBT
(core/energy/tile/TileBaseElectricBlockWithInventory.java:12-26)按同一长度重建。
| 槽位 | 用途 | 源码判定 |
|---|---|---|
| 0 | 电池(充/放电两用) | core/tile/TileEntityElectricFurnace.java:219 判 ItemElectricBase.isElectricItem;getBatteryInSlot() 固定返回槽 0(core/energy/tile/TileBaseElectricBlockWithInventory.java:124-126) |
| 1 | 原料(输入) | core/tile/TileEntityElectricFurnace.java:113-116 读取 FurnaceRecipes.smelting() |
| 2 | 产物(输出) | core/tile/TileEntityElectricFurnace.java:118-120 比对冶炼结果;:234 只允许从槽 2 取出 |
getAccessibleSlotsFromSide() 返回 {0, 1, 2}(:223-225),即六面全部开放。
getInventoryStackLimit() 继承基类,返回 64(core/energy/tile/TileBaseElectricBlockWithInventory.java:102-104)。
处理速率 / 耗时(本篇核心常量)
core/tile/TileEntityElectricFurnace.java:30:
public static int PROCESS_TIME_REQUIRED = 130;
| 常量 | 值 | 含义 | 来源 |
|---|---|---|---|
PROCESS_TIME_REQUIRED |
130 | 1 次冶炼所需 tick | core/tile/TileEntityElectricFurnace.java:30 |
Tier 2 processTimeRequired |
100 | 分体版 tier 2 的冶炼耗时 | core/tile/TileEntityElectricFurnace.java:63 |
| Tier 2 动态耗时 | 200 / (1 + poweredByTierGC) |
即 200 → 100(1 级供电)或约 66(2 级供电) | core/tile/TileEntityElectricFurnace.java:88 |
Tier 1 maxExtract |
45(hardMode 60) | 拉取功率 | core/tile/TileEntityElectricFurnace.java:53 |
Tier 2 maxExtract |
60(hardMode 90) | 拉取功率 | core/tile/TileEntityElectricFurnace.java:62 |
| Tier 2 容量 | 25000 | 仅 tier 2 显式设容量 | core/tile/TileEntityElectricFurnace.java:61 |
hardMode 是配置项,默认 false(core/util/ConfigManagerCore.java:510)。
Tier 1 不调 setCapacity,容量沿用 STANDARD_CAPACITY = 16000
(core/energy/tile/EnergyStorageTile.java:18)。
⚠ 单位是 gJ(GigaJoule),不是 RF/t、不是 EU/t。
⚠ 熄火会「冷却」而不是立即归零::97-102 里,若中途断电且
processTicks < processTimeRequired,有 1/4 概率(rand.nextInt(4) == 0)让进度倒退 1 tick。
源码注释里的能量账(是注释,不是常量)
core/tile/TileEntityElectricFurnace.java:23-28 有一段设计说明注释:
- 比原版熔炉快 50%(
:23) - 快速熔 8 个 ingot 耗 46800 gJ(
:25) - 1 个煤炭产生的能量是 38400 gJ(
:26) - 用 Tier 2 熔炉可提升效率(
:28)
⚠ 这些数字只出现在注释里,源码中没有对应的计算代码,勿当作可校验的运行时数值。
GUI / Container
| GUI 类 | Container 类 | 分派处(core/client/gui/GuiHandler.java) |
|---|---|---|
core.client.gui.container.GuiElectricFurnace |
core.inventory.ContainerElectricFurnace |
Container :137-138、Gui :227-228 |
网络封包
processTimeRequired 与 processTicks 是 @NetworkedField(:32-36);
playersUsing 是 final Set<EntityPlayer>(:39)。封包范围与冷却继承
TileBaseUniversalElectrical:12.0 / 3
(core/energy/tile/TileBaseUniversalElectrical.java:45-51)。无独立封包 ID。