消失框架
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | malisisdoors:vanishing_block(meta 0–3)、malisisdoors:vanishing_block_diamond(独立方块,带 GUI) |
| 显示名(en_US) | Vanishing Frame / Wooden·Iron·Gold·Diamond Vanishing Frame |
| 类 | net.malisis.doors.block.VanishingBlock(继承 BlockContainer)、VanishingDiamondBlock(继承 VanishingBlock) |
| TileEntity | VanishingTileEntity(注册名 vanishingTileEntity)、VanishingDiamondTileEntity(注册名 vanishingDiamondTileEntity),见 Registers.java:331-332 |
| 材质 | Material.wood(VanishingBlock.java:65) |
| 硬度 | 0.5(VanishingBlock.java:68) |
| 创造标签 | Malisis' Doors(VanishingBlock.java:67) |
| 贴图 | malisisdoors:vanishing_block_wood / _iron / _gold / _diamond(VanishingBlock.java:75-78) |
| 注册条件 | 需 enableVanishingBlocks = true(Registers.java:103) |
功能
可被红石切换显隐的隐形方块:框架本身几乎不可见,通电时变为完全不可碰撞(并播放传送门音效),断电时恢复——用来制作隐藏机关、陷阱地板与视野开关。
元数据变体
VanishingBlock 用 meta 低 2 位选择框架材质(VanishingBlock.java:51-54、getIcon 取 frameType & 3,VanishingBlock.java:82-83):
| meta | 常量 | 显示名(en_US) | 框架材质 |
|---|---|---|---|
| 0 | typeWoodFrame |
Wooden Vanishing Frame | 木 |
| 1 | typeIronFrame |
Iron Vanishing Frame | 铁 |
| 2 | typeGoldFrame |
Gold Vanishing Frame | 金 |
| 3 | typeDiamondFrame |
Diamond Vanishing Frame | 钻石 |
另有独立注册的 VanishingDiamondBlock(VanishingBlock 子类,方块名 vanishing_block_diamond,VanishingDiamondBlock.java:37-40),它不传播电源状态(shouldPropagate 恒为 false,propagateState 空实现,VanishingDiamondBlock.java:58-65),因此只有它自己响应红石,而 meta 版会把状态传播给相邻框架。
状态位
| 标志 | 值 | 含义 |
|---|---|---|
flagPowered |
1 << 2 = 4 |
已通电(正在变为不可见) |
flagInTransition |
1 << 3 = 8 |
过渡/故障中(VanishingBlock.java:56-57) |
电源传播
updateTick每 tick 调propagateState(VanishingBlock.java:178-181)- 状态变化时播放音效
malisisdoors:portal,音量 0.3、音高 0.5(VanishingBlock.java:170-176) - 碰撞箱在
flagPowered或flagInTransition置位时返回null;否则返回被复制方块的碰撞箱,无复制内容时为整格(VanishingBlock.java:199-206) - 破坏时把被复制的方块正常掉落:
te.copiedBlock.dropBlockAsItem(...)(VanishingBlock.java:184-190)
故障(glitch)动画
VanishingTileEntity.updateEntity(VanishingTileEntity.java:123-177)在未通电且未过渡时,每 tick 掷一次随机数:
rand.nextFloat() < vanishingGlitchChance(默认 0.0005)且enableVanishingGlitch开启 → 进入vibrating状态并置flagInTransition(VanishingTileEntity.java:125-136)- 故障持续
maxVibratingTime = 15tick 后自动恢复(VanishingTileEntity.java:139-147) - 正常通电过渡时长为
maxTransitionTime = 8tick(VanishingTileEntity.java:37、46),过渡完成时在中心生成smoke粒子(VanishingTileEntity.java:154-162)
数值
| 数值名 | 值 | 出处 |
|---|---|---|
| 硬度 | 0.5 | VanishingBlock.java:68 |
| 框架变体数 | 4(meta 0–3) | VanishingBlock.java:51-54 |
| 电源过渡时长 | 8 tick | VanishingTileEntity.java:37 |
| 故障持续时长 | 15 tick | VanishingTileEntity.java:38 |
| 故障触发概率 | 0.0005 / tick | MalisisDoorsSettings.java:49 |
| 状态变化音效 | malisisdoors:portal,音量 0.3,音高 0.5 |
VanishingBlock.java:173 |
合成配方
4 个框架变体形状一致,仅中间材料不同,各产出 4 个(Registers.java:286-329):
ABA
BCB
ABA
| 字符 | 物品 |
|---|---|
A |
红石 Items.redstone ×4(四个角) |
B |
框架主体 ×4(见下表) |
C |
末影珍珠 Items.ender_pearl ×1(正中) |
| 变体 | B 材料 |
|---|---|
| 木质框架(meta 0) | 木棍 Items.stick |
| 铁质框架(meta 1) | 铁锭 Items.iron_ingot |
| 金质框架(meta 2) | 金锭 Items.gold_ingot |
| 钻石框架(meta 3) | 钻石 Items.diamond |
钻石消失方块
vanishing_block_diamond 作为独立方块注册(Registers.java:280-283),但源码中未注册对应配方(grep -n 'vanishing' src/main/java/net/malisis/doors/Registers.java 仅命中 272/273/276-283 注册行与 4 条 meta 框架配方)——需在游戏内用 meta 3 的钻石框架放置,或由创造模式取得。
相关条目
- 消失钻石方块 GUI -
VanishingDiamondGui的容器布局 - 模组配置 - 控制本组方块注册与故障动画的 4 个配置项