天境地牢方块

基本信息

地牢方块共 15 个,全部使用 BlockDungeonBase 或 BlockDungeonTrap,在 BlocksAether.initialization() 的 :206-257 注册。

注册名 中文名 类 构造参数 发光 创造栏
carved_stone 雕纹石 BlockDungeonBase false 否 有
sentry_stone 岗哨石 BlockDungeonBase true 是 有
angelic_stone 天灵石 BlockDungeonBase false 否 有
light_angelic_stone 流光天灵石 BlockDungeonBase true 是 有
hellfire_stone 狱炎石 BlockDungeonBase false 否 有
light_hellfire_stone 流光狱炎石 BlockDungeonBase true 是 有
locked_carved_stone 雕纹石(锁) BlockDungeonBase carved_stone, false 否 无
locked_sentry_stone 岗哨石(锁) BlockDungeonBase sentry_stone, true 是 无
locked_angelic_stone 天灵石(锁) BlockDungeonBase angelic_stone, false 否 无
locked_light_angelic_stone 流光天灵石(锁) BlockDungeonBase light_angelic_stone, true 是 无
locked_hellfire_stone 狱炎石(锁) BlockDungeonBase hellfire_stone, false 否 无
locked_light_hellfire_stone 流光狱炎石(锁) BlockDungeonBase light_hellfire_stone, true 是 无
carved_trap 雕纹石(陷阱) BlockDungeonTrap carved_stone — 无
angelic_trap 天灵石(陷阱) BlockDungeonTrap angelic_stone — 无
hellfire_trap 狱炎石(陷阱) BlockDungeonTrap hellfire_stone — 无

locked_* 六个方块与三个 *_trap 在 zh_CN.lang 中复用基础方块的显示名(如 locked_carved_stone 的中文名仍是「雕纹石」),因此在游戏内无法从名字区分锁定态。

功能

锁定态方块(BlockDungeonBase)

BlockDungeonBase 有两个构造(BlockDungeonBase.java:19-34):

  • BlockDungeonBase(boolean isLit) —— 普通态,pickBlock 为 null
  • BlockDungeonBase(Block pickBlock, boolean isLit) —— 锁定态,pickBlock 指向其对应的可破坏版本

锁定态方块的行为差异:

行为 普通态 锁定态
硬度 0.5 -1(不可破坏)
爆炸抗性 默认 6000000.0
创造标签 AetherCreativeTabs.blocks null(不出现在创造栏)
getPickBlock 返回自身物品 返回基础方块的物品(:55-59)
getUnlockedBlock() 返回自身 返回基础方块(:61-63)

发光值:getLightValue 在 isLit 为真时返回 15.0F * 0.75f,即 11(BlockDungeonBase.java:38-51)。sentry_stone、light_angelic_stone、light_hellfire_stone 及其锁定版本都是发光方块。

脚步声统一为 soundTypeStone(BlockDungeonBase.java:32)。

陷阱方块(BlockDungeonTrap)

BlockDungeonTrap 构造时调用 setBlockUnbreakable()(BlockDungeonTrap.java:22),不可破坏。

onEntityWalking(BlockDungeonTrap.java:26-59)在玩家踩上时触发:

  1. 方块自身被替换回其 pickBlock(基础方块),陷阱消失
  2. 按种类刷出对应敌人:
陷阱 刷出实体 位置 来源
carved_trap EntitySentry(哨卫) x+2, y+1, z+2 BlockDungeonTrap.java:32-38
angelic_trap EntityValkyrie(女武神) x+0.5, y+1, z+0.5 BlockDungeonTrap.java:39-45
hellfire_trap EntityFireMinion(火之仆从) x+0.5, y+1, z+0.5 BlockDungeonTrap.java:46-52
  1. 播放关门音效 random.door_close,音量 2.0F,音高 world.rand.nextFloat() - world.rand.nextFloat() * 0.2F + 1.2F(BlockDungeonTrap.java:52-58)

数值

数值名 值 来源
普通地牢石硬度 0.5 BlockDungeonBase.java:33
锁定地牢石硬度 -1 BlockDungeonBase.java:33(三元表达式)
锁定地牢石抗性 6000000.0 BlockDungeonBase.java:28
发光方块亮度 11 BlockDungeonBase.java:46(15.0F * 0.75f)
陷阱音效音量 2.0 BlockDungeonTrap.java:57
陷阱音效音高区间 1.2 – 2.2 BlockDungeonTrap.java:58

交互

解锁

锁定方块的替换由 Boss 死亡触发。EntitySlider.unlockBlock(EntitySlider.java:709-721)在滑块死亡时递归检查 6 个相邻方块:

if (block == BlocksAether.locked_carved_stone || block == BlocksAether.locked_sentry_stone) {
    this.worldObj.setBlock(x, y, z, ((BlockDungeonBase) block).getUnlockedBlock());
    // 递归 6 个方向
}

即击杀滑块 Boss 会解锁其所在房间四周的锁定雕纹石与岗哨石,递归传播到整个房间墙面。

黄金地牢使用 locked_hellfire_stone / locked_light_hellfire_stone(ComponentGoldenDungeon.java:38、:106-107、:125-126、:138),白银地牢使用 locked_angelic_stone / locked_light_angelic_stone(ComponentSilverDungeon.java:24、:26)。

拾取外观

因为锁定态的 getPickBlock 返回基础方块(BlockDungeonBase.java:53-59),中键拾取锁定石会得到普通版,因此可以用普通版在地牢外重建房间。

相关条目