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。

相关条目