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。
相关条目
- Metaphysical Rose - 同基类的植物材质版本
- Node Transmodifier - 本模组唯一可交互的机器方块