TileEntityNasaWorkbench(NASA 制造台)
事实基准:
/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。
注册信息
| 属性 | 值 | 来源 |
|---|---|---|
| TileEntity 注册名 | NASA Workbench |
core/GalacticraftCore.java:711 |
| 所属 modid | GalacticraftCore |
core/Constants.java:7,@Mod 见 core/GalacticraftCore.java:160-161 |
| 关联方块 | GCBlocks.nasaWorkbench = new BlockNasaWorkbench("rocketWorkbench") |
core/blocks/GCBlocks.java:104 |
| 方块→TE 分派 | createNewTileEntity(非 createTileEntity)→ new TileEntityNasaWorkbench() |
core/blocks/BlockNasaWorkbench.java:223-225 |
| 父类 | TileEntityMulti(→ TileEntityAdvanced → 原版 TileEntity) |
core/tile/TileEntityNasaWorkbench.java:17、core/tile/TileEntityMulti.java:14 |
| 实现接口 | IMultiBlock |
core/tile/TileEntityNasaWorkbench.java:17 |
| 槽位数 | 无(不实现 IInventory,全类无 getSizeInventory()) |
core/tile/TileEntityNasaWorkbench.java:1-115 |
槽位与字段
无槽位、无自有字段。 唯一的继承字段是 mainBlockPosition(core/tile/TileEntityMulti.java),
在 onCreate 里被赋成自身位置(core/tile/TileEntityNasaWorkbench.java:33)。
本类不覆写 readFromNBT / writeToNBT。
能量
无。 父类链 TileEntityMulti → TileEntityAdvanced → 原版 TileEntity
不含 EnergyStorageTile(core/tile/TileEntityMulti.java:14),因此没有容量 / maxReceive / maxExtract。
制造台不耗电。
结构(多方块)
onCreate(:32-61)在自己周围铺 GCBlocks.fakeBlock 假方块(:50、:60):
| 层(相对自身 y) | 铺放范围 | 源码 |
|---|---|---|
| y = +1、+2 | 3×3,四个角除外(Math.abs(x) != 1 || Math.abs(z) != 1) |
core/tile/TileEntityNasaWorkbench.java:37-54 |
| y = +3 | 仅正中 1 格 | core/tile/TileEntityNasaWorkbench.java:56-60 |
即整体是 3×3×4、中间两层掏空四角、顶格收成一个头的框架,
makeFakeBlock(..., 3) 的最后一个参数是假方块自带的 metadata。
- 超出世界高度时逐层提前 return(
:38-40、:56-58),即允许被地形截断。 onDestroy(:64-102)按同一边界拆回,y=0 用func_147480_a(带碎屑), 其余直接setBlockToAir;客户端有 5% 概率播addBlockDestroyEffects(:72-79、:87-94)。- 渲染包围盒
x-1..x+2、y..y+4、z-1..z+2(:106-113)。
⚠ 本结构不可旋转——源码里没有任何朝向字段或旋转逻辑, 四角固定在 x/z 的 ±1 位置。
GUI / Container
onActivated(:20-29)固定打开 GuiIdsCore.NASA_WORKBENCH_ROCKET = 0
(core/client/gui/GuiIdsCore.java:5),该 ID 属于火箭 T1 图纸页;
Container 由图纸页自己提供:core/schematic/SchematicRocketT1.java:40-42
→ ContainerSchematicTier1Rocket。
⚠ 方块本身在 GuiHandler 里没有任何分派分支(core/client/gui/GuiHandler.java 全文无
TileEntityNasaWorkbench)——制造台界面完全经由 ISchematicPage 路径打开。
其它图纸页 ID 分散在 core/schematic/ 与 planets/*/schematic/,
其中 GuiIdsPlanets 的 ID 需 + Constants.MOD_ID_PLANETS.hashCode() 偏移(planets/mars/schematic/SchematicTier2Rocket.java:27)。