消失框架

基本信息

属性 值
注册名 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 = 15 tick 后自动恢复(VanishingTileEntity.java:139-147)
  • 正常通电过渡时长为 maxTransitionTime = 8 tick(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 的钻石框架放置,或由创造模式取得。

相关条目