TileEntitySolar(太阳能板)
事实基准:
/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。
注册信息
| 属性 | 值 | 来源 |
|---|---|---|
| TileEntity 注册名 | Galacticraft Solar Panel |
GalacticraftCore.java:726 |
| 注册类 | micdoodle8.mods.galacticraft.core.tile.TileEntitySolar |
同上 |
| 关联方块 | 太阳能板方块 | GalacticraftCore.java:726 同块 |
| 父类 | TileBaseUniversalElectricalSource |
core/tile/TileEntitySolar.java:34 |
| 实现接口 | IMultiBlock / IDisableableMachine / IInventory / ISidedInventory / IConnector |
同上 |
| 是否配置门控 | 否(GalacticraftCore.java:726 无条件调用) |
同上 |
⚠ TileEntitySolar implements IMultiBlock,但它不是 5 大多方块之一——
它继承的是 TileBaseUniversalElectricalSource 而不是 TileEntityMulti。
🔴 本节旧论断已被源码推翻(2026-10-02 复核订正)。旧文写「它的『多方块』 是自身的面板朝向(
direction字段),与『主块 + 假方块』框架不是同一回事」—— 这是错的。onCreate(core/tile/TileEntitySolar.java:236-259)确实铺设假方块, 且与TileEntityDish的实现逐行同构:
| 位置 | 内容 | 来源 |
|---|---|---|
y+1 正上方 |
1 个支架(fake block,meta 0) |
core/tile/TileEntitySolar.java:242-243 |
y+2 |
3×3 共 9 个 假方块 | core/tile/TileEntitySolar.java:248-257 |
| 假方块 meta | getTierGC() == 1 时为 4,否则为 0 |
core/tile/TileEntitySolar.java:256 |
合计占用 10 个方块位置。高度不足时 onCreate 直接 return
(:239-241、:245-247),即贴天花板放置会得到不完整结构。
onDestroy(:262-)清理 y+1、y+2。
⇒ 实际影响:太阳能板并非「只占 1 格」,上方两层会被假方块占据, 玩家不能在其上方放置其它方块。旧论断会让读者严重高估可用空间。
槽位数量与布局
core/tile/TileEntitySolar.java:49:
private ItemStack[] containingItems = new ItemStack[1];
只有 1 个槽位。getSizeInventory()(:398-400)返回
this.containingItems.length,即恒为 1(:298 的重新赋值是等长的)。
| 槽位 | 用途 |
|---|---|
| 0 | 单格缓存(:92 对它调 this.recharge(this.containingItems[0])) |
⚠ 太阳能板不需要燃料槽——它靠光照发电,这个 1 格是电力节点的通用中转位, 不是「放煤发电」那种输入槽。
处理速率 / 耗时(本篇核心常量)
core/tile/TileEntitySolar.java:50:
public static final int MAX_GENERATE_WATTS = 200;
| 常量 | 值 | 含义 |
|---|---|---|
MAX_GENERATE_WATTS |
200 | 峰值发电功率(单位:GigaWatt,即 gJ/t) |
⚠ 单位是 GigaWatt(gJ/t),不是瓦特、不是 RF/t、不是 EU/t。
Galacticraft 用自己的能源单位,与 BuildCraft 的 RF 不是同一套——
把它写成「200 RF/t」即为跨 mod 单位混淆。
发电量随光照与面板朝向变化,MAX_GENERATE_WATTS 只是晴天正对时的上限。
朝向(易编造字段)
:485 的判定:
if (direction == null || ForgeDirection.UNKNOWN.equals(direction) || type != NetworkType.POWER) {
即 direction 为 null 或 ForgeDirection.UNKNOWN 时视为未定向。
面板只有正对恒星方向才满发——这是朝向影响发电的机制。
⚠ 「多方块几×几×几 / 控制器 / 可否旋转」是这套 wiki 头号易编造字段。 太阳能板是单方块,
IMultiBlock在这里指的是网络接口语义(IConnector), 不是结构拼接。源码中没有任何面板结构尺寸常量,也不可旋转。
GUI / Container
| GUI 类 | Container 类 | 分派处(core/client/gui/GuiHandler.java) |
|---|---|---|
core.client.gui.container.GuiSolar |
core.inventory.ContainerSolar |
Container :132、Gui :220 |
⚠ 太阳能板是有界面的——虽然它只发 1 格的电,但该槽可供漏斗自动化。
网络封包
走 GC 的 @NetworkedField 字段同步 + TileEntity NBT。无独立的封包 ID。