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。