机器与功能方块
基本信息
| 属性 | 值 |
|---|---|
| 方块数 | 11(其中 1 个未注册) |
| 实际注册 | 10(BlockRPlacer 的 shouldRegister() 恒为 false,永不注册) |
| 注册位置 | TTRegistry.java:37-55、TTRegistry.java:64-65 |
本页收录 11 个同属「机器 / 功能方块」族、但彼此无共同基类的方块:它们没有可共享的行为配置,因此按独立条目 + 对照表组织,而非合并为单一变体表。
数值
| 方块 | 注册名 | Java 类 | 基类 | TileEntity | 注册门槛 | 注册行 |
|---|---|---|---|---|---|---|
| 动画板 | animationTablet |
BlockAnimationTablet |
BlockModContainer |
TileAnimationTablet |
无条件 | TTRegistry.java:37 |
| 要素分析仪 ⚠ | aspectAnalyzer |
BlockAspectAnalyzer |
BlockModContainer |
TileAspectAnalyzer |
需 ComputerCraft | TTRegistry.java:38 |
| 注魔器 | enchanter |
BlockEnchanter |
BlockModContainer |
TileEnchanter |
无条件 | TTRegistry.java:39 |
| 力场 | forcefield |
BlockForcefield |
BlockMod |
无(TileForcefield 存在但不由本方块注册) |
无条件 | TTRegistry.java:40 |
| 漏斗 | funnel |
BlockFunnel |
BlockModContainer |
TileFunnel |
无条件 | TTRegistry.java:41 |
| 磁石 | magnet |
BlockMagnet |
BlockModContainer + IMultiTileEntityBlock |
TileMagnet、TileMobMagnet |
无条件 | TTRegistry.java:47 |
| 平台 | camo |
BlockPlatform |
BlockCamo |
TileCamo |
无条件 | TTRegistry.java:49 |
| 修复器 | repairer |
BlockRepairer |
BlockModContainer |
TileRepairer |
无条件 | TTRegistry.java:50 |
| 远程放置器 ❌ | remotePlacer |
BlockRPlacer |
BlockCamo + IWandable |
TileRPlacer |
永不注册 | TTRegistry.java:51 |
| 召唤器 | spawner |
BlockSummon |
Block + ITTinkererBlock |
TileSummon |
无条件 | TTRegistry.java:52 |
| 石魔像连接器 ⚠ | golemConnector |
BlockGolemConnector |
BlockCamo |
TileGolemConnector |
需 ComputerCraft | TTRegistry.java:44 |
⚠ = 软依赖门控;❌ = 死注册(见下)。
forcefield是全模组唯一只实现运行时 TileEntity 创建、却没有getTileEntity()的方块。详见下方「力场的 TileEntity 注册缺口」。
功能
注魔器(Enchanter)
唯一的附魔施加方块。TileEnchanter 实现 ISidedInventory 与 AE2 的 IMovableTile(TileEnchanter.java:46,后者带 @Optional.Interface(iface = "appeng.api.movable.IMovableTile", modid = "appliedenergistics2"),即 AE2 缺失时该接口被剥离):
| 属性 | 值 | 来源 |
|---|---|---|
| 物品槽位数 | 2(ItemStack[] inventorySlots = new ItemStack[2]) |
TileEnchanter.java:64 |
| 附魔持久化 | enchantsIntArray + levelsIntArray |
TileEnchanter.java:48-49 |
| 要素持久化 | totalAspects + currentAspects |
TileEnchanter.java:50-51 |
| 工作状态持久化 | working |
TileEnchanter.java:52 |
| 要素扣费 | EnchantmentManager.enchantmentData.get(enchant).get(level).aspects |
TileEnchanter.java:331 |
修复器(Repairer)
可修复物品,受 ConfigHandler.repairTConTools 控制对 Tinkers’ Construct 工具的支持:
TileRepairer.java:76:if (LoadedMods.TConstructLoaded && ConfigHandler.repairTConTools)才走 TCon 分支TileRepairer.java:272:if (ConfigHandler.repairTConTools)控制修复流程TileRepairer.java:397:return ConfigHandler.repairTConTools && TinkersConstructCompat.getDamage(stack) > 0;—— 该项同时要求 TCon 已加载(否则getDamage不会被调用)
repairTConTools 默认 false(配置键 repairTconTools.enabled)。
磁石(Magnet)
唯一实现 IMultiTileEntityBlock 的方块。TTRegistry.registerBlock() 对实现该接口的方块额外遍历 getAdditionalTileEntities() 并逐个 registerTileEntity()(TTRegistry.java:282-287),因此磁石同时注册 TileMagnet(本体)与 TileMobMagnet(生物磁石)两个 TileEntity。它是唯一持有 ItemBlock(ItemBlockMagnet)的方块之一。
远程放置器(BlockRPlacer)— 死注册
TTRegistry.java:51 确实调用了 loadSimpleBlock(new BlockRPlacer()),但 BlockRPlacer.shouldRegister() 无条件 return false:
@Override
public boolean shouldRegister() {
return false;
}
(BlockRPlacer.java:91-93)
TTRegistry.loadSimpleBlock() 在 ittBlock.shouldRegister() 为假时直接跳过整个注册流程并返回 null(TTRegistry.java:161-174),因此:
- 方块、ItemBlock、TileEntity 均不注册
- 其
getResearchItem()中的KEY_REMOTE_PLACER研究(LibResearch中值为REMOTE_PLACER)也永远不会注册 —— 它是本仓库中唯一「有构造点但不可达」的研究键 shouldDisplayInTab()虽返回true(BlockRPlacer.java:96-98),但该分支不可达
TileRPlacer.java 文件存在,但同样不构成注册证据。
力场的 TileEntity 注册缺口
本模组的 TileEntity 有两条接入路径:ITTinkererBlock.getTileEntity()(供 TTRegistry.registerBlock() 调 GameRegistry.registerTileEntity(),TTRegistry.java:278-281)与原版 createTileEntity(World, int)(供世界运行时实例化)。
BlockForcefield 只走了第二条:
| 成员 | 实现 | 源码 |
|---|---|---|
createTileEntity(World, int) |
return new TileForcefield(); |
BlockForcefield.java:40-41 |
hasTileEntity(int) |
return true; |
BlockForcefield.java:44-46 |
getTileEntity() |
未覆写 | — |
对全部 34 个注册方块做交叉核对后,BlockForcefield 是唯一有运行时 createTileEntity() 却无 getTileEntity() 的方块(BlockInfusedFarmland、BlockInfusedGrain、BlockSummon、BlockBedrockPortal、BlockMobilizer、BlockMobilizerRelay 两者皆有)。因此 GameRegistry.registerTileEntity() 从未为 TileForcefield 执行过注册。TileForcefield.java 文件的存在不构成注册证据。
记录口径:以上为代码结构的事实陈述。仓库内没有测试、注释或提交信息表明这是否有意为之,故不断言其为缺陷。
ComputerCraft 门控的 2 个方块
BlockAspectAnalyzer.shouldRegister() 返回 LoadedMods.computerCraftLoaded(BlockAspectAnalyzer.java:143-145),BlockGolemConnector.shouldRegister() 同理(BlockGolemConnector.java:55-57)。ComputerCraft 缺失时这两个方块连同其 KEY_ASPECT_ANALYZER / KEY_GOLEMCONNECTOR 研究一并消失。
研究
| 方块 | 研究键 | 状态 |
|---|---|---|
| 动画板 | KEY_ANIMATION_TABLET |
可达 |
| 要素分析仪 | KEY_ASPECT_ANALYZER |
仅 CC 加载时可达 |
| 注魔器 | KEY_ENCHANTER |
可达 |
| 漏斗 | KEY_FUNNEL |
可达 |
| 磁石 | KEY_MAGNETS |
可达 |
| 平台 | KEY_PLATFORM |
可达 |
| 修复器 | KEY_REPAIRER |
可达 |
| 召唤器 | KEY_SUMMON |
可达 |
| 石魔像连接器 | KEY_GOLEMCONNECTOR |
仅 CC 加载时可达 |
| 远程放置器 | KEY_REMOTE_PLACER |
不可达(死注册) |
| 力场 | 无 | LibResearch 中无对应键 |