Metaphysical Brick

基本信息

属性 值
注册名 ThaumicMachina:metaphysicalBrick
类 BlockMetaphysicalBrick(继承抽象基类 BlockMetaphysical)
TileEntity TileMetaphysical(registerTileEntity ID = tileTMMetaphysicalBlock)
材质 Material.rock
getRenderType -1(TESR 路径)
isOpaqueCube false(基类构造器硬编码)
亮度 15(RenderMetaphysical 自行用 GL11 提亮,未调用 setLightLevel)
硬度 / 抗性 未调用 setter —— Block 默认 0.0 / 0.0
图标 TMBlock.registerBlockIcons → thaumicmachina:metaphysicalBrick

形而上(Metaphysical)机制

两个 metaphysical 方块共享 BlockMetaphysical 基类(block/metaphysical/BlockMetaphysical.java),实现一套**「戴护目镜才看得见/摸得着」**的准隐形机制:

方法 未戴护目镜时 戴 IRevealer 护目镜时
方块边界 (0,0,0)-(0,0,0) —— 零体积 (0,0,0)-(1,1,1) —— 完整方块
addCollisionBoxesToList 不添加碰撞 走 super,产生完整方块碰撞
getSelectedBoundingBoxFromPool 零体积 AABB 按当前 min/max 计算真实 AABB
collisionRayTrace 返回 null(射线穿过) 正常命中

护目镜判定(BlockMetaphysical.hasGoggles):

int slot = 3;                                   // 盔甲槽 3 = 头部
ItemStack helmet = player.getCurrentArmor(slot);
return helmet.getItem() instanceof IRevealer;   // thaumcraft.api.nodes.IRevealer

只认头盔槽,IRevealer 之外的面罩/手持揭示器无效。solidWithGoggles 字段为 final boolean = true,两个子类都未改动。

数值

数值 值
TileEntity 注册名 tileTMMetaphysicalBlock
护目镜判定槽位 3(头部)
判定接口 thaumcraft.api.nodes.IRevealer
边界(无眼镜 / 有眼镜) 0 体积 / 完整 1³
TESR 资源名 metaphysicalBrick(RenderMetaphysical.java:47)

交互

触发 行为
未戴护目镜右键 射线无法命中,无法交互
戴护目镜右键 走标准 Block 行为;TMBlockContainer.onBlockActivated 转发给 TE,未覆写故无额外行为
破坏 未戴护目镜时无法选中 → 无法破坏

源码缺陷

  • 无配方。全仓无 GameRegistry.addRecipe 调用,本方块在生存模式无法获得。
  • lang 缺条目。src/main/resources/assets/thaumicmachina/lang/en_US.lang 只定义了 tile.nodeTransmodifier.name,没有 tile.metaphysicalBrick.name(也没有 tile.metaphysicalRose.name),未本地化环境下游戏内显示为 tile.metaphysicalBrick.name 原始 key。
  • 默认硬度 0.0 / 抗性 0.0。BlockMetaphysicalBrick 构造器(block/metaphysical/BlockMetaphysicalBrick.java:13-16)只传 name 与 material。
  • 资源域大小写不一致。代码用 ThaumicMachina: 前缀(core/lib/Reference.java:6-16),实际资源目录是小写 assets/thaumicmachina/。1.7.10 的 ResourceLocation 在 jar 内按大小写敏感查找,此路径在大小写敏感文件系统上会解析不到(开发期 macOS/Windows 不敏感因而掩盖)。
  • 注册名与 GameRegistry.registerBlock 重名:BlockMetaphysical 构造器已 registerBlock(this, name)(block/metaphysical/BlockMetaphysical.java:29),子类只额外 registerTileEntity。

相关条目