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)。

相关条目