基本信息
| 属性 |
值 |
| 注册名 |
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 方块共享 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。
相关条目