TileEntityCoalGenerator( coal generator)

事实基准:/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。

注册信息

属性 值 来源
TileEntity 注册名 Galacticraft Coal Generator GalacticraftCore.java:729
注册类 micdoodle8.mods.galacticraft.core.tile.TileEntityCoalGenerator 同上
关联方块 煤炭发电机方块 GalacticraftCore.java:729 同块
父类 TileBaseUniversalElectricalSource core/tile/TileEntityCoalGenerator.java:23
实现接口 IInventory / ISidedInventory / IConnector 同上
是否配置门控 否(无条件注册) GalacticraftCore.java:729

槽位数量与布局

core/tile/TileEntityCoalGenerator.java:57:

private ItemStack[] containingItems = new ItemStack[1];

只有 1 个槽位。getSizeInventory()(:153-155)返回 this.containingItems.length → 恒为 1。

槽位 可接受的物品(源码逐一判定) 源码
0 Items.coal(煤炭) :83 getItem() == Items.coal
0 Blocks.coal_block(煤炭块) :86-87

⚠ 只接受煤与煤块两种(:83、:86)—— 不是「任何可燃物」。用木炭(charcoal)不消耗, 源码未把 Items.charcoal 列进判定。

判定顺序在 :82-87:if (this.itemCookTime <= 0 && this.containingItems[0] != null), 即上一块烧完(itemCookTime <= 0)才取下一块。

处理速率 / 耗时(本篇核心常量)

core/tile/TileEntityCoalGenerator.java:39-42:

public static final int MAX_GENERATE_GJ_PER_TICK = 150;
public static final int MIN_GENERATE_GJ_PER_TICK = 30;
private static final float BASE_ACCELERATION = 0.3f;
常量 值 含义
MAX_GENERATE_GJ_PER_TICK 150 满载发电功率
MIN_GENERATE_GJ_PER_TICK 30 最低发电功率(刚点火时)
BASE_ACCELERATION 0.3f 每 tick 的功率爬升系数(0.3 → 1.0)

⚠ 单位是 GJ/t(GigaJoule 每 tick),不是 RF/t、不是 EU/t。 Galacticraft 的能源单位与 BuildCraft 的 RF、GT 的 EU 都不是同一套—— 把它们互换即为跨 mod 单位幻觉。

⚠ MIN_GENERATE_GJ_PER_TICK = 30 不是「最小效率」,是「启动功率」: 发电机点火后功率从 30 起,每 tick 按 0.3 的比例向 150 爬升, 所以从点火到满载需要若干 tick,而不是恒定输出 150。

单块煤的燃烧时长由 itemCookTime 字段控制, 该字段的初值/赋值逻辑在 :82 附近,本条目不写死具体 tick 数。

GUI / Container

GUI 类 Container 类 分派处(core/client/gui/GuiHandler.java)
core.client.gui.container.GuiCoalGenerator core.inventory.ContainerCoalGenerator Container :136、Gui :226

燃料靠机器自动消耗,开界面可查看剩余燃烧时间。

网络封包

走 GC 的 @NetworkedField 字段同步。:268 有 if (direction == null || ForgeDirection.UNKNOWN.equals(direction) || type != NetworkType.POWER) 的方向守卫。无独立的封包 ID。

相关条目