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。

相关条目