TileEntityCircuitFabricator(电路制造器)

事实基准:/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。

注册信息

属性 值 来源
TileEntity 注册名 Circuit Fabricator GalacticraftCore.java:735
注册类 micdoodle8.mods.galacticraft.core.tile.TileEntityCircuitFabricator 同上
关联方块 GCBlocks.machineBase2 = new BlockMachine2("machine2") core/blocks/GCBlocks.java:122
方块→TE 分派 CIRCUIT_FABRICATOR_METADATA(4) ≤ metadata < OXYGEN_STORAGE_MODULE_METADATA(8) core/blocks/BlockMachine2.java:297-302、:33-34
父类 TileBaseElectricBlockWithInventory(→ TileBaseElectricBlock → TileBaseUniversalElectrical → EnergyStorageTile) core/tile/TileEntityCircuitFabricator.java:21
实现接口 ISidedInventory(父类另带 IInventory / IDisableableMachine / IConnector / IWrenchable) core/tile/TileEntityCircuitFabricator.java:21
所属 modid GalacticraftCore core/GalacticraftCore.java:160-161、core/Constants.java:7
槽位数 7 见下节

槽位与字段

core/tile/TileEntityCircuitFabricator.java:31:

private ItemStack[] containingItems = new ItemStack[7];

getSizeInventory() 本类未覆写,继承 core/energy/tile/TileBaseElectricBlockWithInventory.java:46-48 → 恒为 7 (getContainingItems() 见 :150-153)。

槽位 用途 源码
0 电池槽(只收 GC 电力物品) core/tile/TileEntityCircuitFabricator.java:166-169
1–5 配方原料位(5 格) core/tile/TileEntityCircuitFabricator.java:175、:73-74
6 成品位(isItemValidForSlot 对 slotID > 5 直接 false,:171-173) core/tile/TileEntityCircuitFabricator.java:82-90、:189
侧面可达槽 条件 源码
底面 side == 0 只给 { 6 }(成品) core/tile/TileEntityCircuitFabricator.java:188-190
其余面 硅较少的那格暴露:{0,1,3,4,5} 或 {0,1,2,4,5} core/tile/TileEntityCircuitFabricator.java:192-195

⚠ canExtractItem 只允许槽 6(:203-206)、canInsertItem 限制 slotID < 6(:198-201)。 ⚠ 槽 1–5 的合法性逐格查 CircuitFabricatorRecipes.slotValidItems(:175-183), 具体每格收什么在本类源码里查不到,要去配方类读,本条目不代写。

tick / 能量 / 网络

耗时(本篇核心常量)

core/tile/TileEntityCircuitFabricator.java:23:

public static final int PROCESS_TIME_REQUIRED = 300;
常量 值 含义
PROCESS_TIME_REQUIRED 300 tick 一次合成所需 tick(15 s)
行为 条件 源码
计时推进 hasEnoughEnergyToRun && canCompress() 才 ++processTicks core/tile/TileEntityCircuitFabricator.java:46-47
计时清零 任一条件不满足立刻归零(无进度保留) core/tile/TileEntityCircuitFabricator.java:56-58
产出 达到 300 时播放 random.anvil_land 并 compressItems() core/tile/TileEntityCircuitFabricator.java:49-55
原料消耗 每次产出后 decrStackSize(i, 1),循环 i = 1..5 core/tile/TileEntityCircuitFabricator.java:131-133

能量

项目 值 来源
缓冲容量 16000 gJ core/energy/tile/EnergyStorageTile.java:18、:21
最大输出 hard 模式 40 gJ/t,否则 20 gJ/t core/tile/TileEntityCircuitFabricator.java:33-35
最大输入 25 gJ/t(两参构造 maxReceive = 2.5F * 10,本类未改) core/energy/tile/EnergyStorageTile.java:21、core/energy/tile/EnergyStorage.java:19-21
耗电判定 shouldUseEnergy() = processTicks > 0(只在合成中耗电) core/tile/TileEntityCircuitFabricator.java:208-211

⚠ 单位是 gJ,不是 RF/t、不是 EU/t。 ⚠ 20 这个值受配置项 ConfigManagerCore.hardMode 影响, 写「固定 20 gJ/t」是错的,必须写成「普通 20 / 困难 40」。

配方与产出

项目 值 源码
配方查询 CircuitFabricatorRecipes.getOutputForInput(Arrays.copyOfRange(containingItems, 1, 6)) core/tile/TileEntityCircuitFabricator.java:73-74
每 tick 重查 updateInput() 每 tick 都调(在 isRemote 判断之外) core/tile/TileEntityCircuitFabricator.java:41
快速模式 quickMode 且产物是 GCItems.basicItem 时,基础晶片 ×5、高级晶片 ×2 core/tile/TileEntityCircuitFabricator.java:96-102
溢出处理 成品堆超过 64 时把多余的掉到地上(delayBeforeCanPickup = 10) core/tile/TileEntityCircuitFabricator.java:107-124

GUI / Container

GUI 类 Container 类 分派处(core/client/gui/GuiHandler.java)
core.client.gui.container.GuiCircuitFabricator core.inventory.ContainerCircuitFabricator Container :144、Gui :234

网络

@NetworkedField:processTicks(core/tile/TileEntityCircuitFabricator.java:25-26)+ 父类 disabled / disableCooldown / hasEnoughEnergyToRun(core/energy/tile/TileBaseElectricBlock.java:28-35)。 ⚠ NBT 键名是 smeltingTicks(沿用熔炉的键,:139、:146),不是 processTicks。 无独立封包 ID。

相关条目