玉阶梯 / 绳梯 / 石板路 / 脚手架 / 海绵 / 大按钮 / 治疗方块

基本信息

这七个方块都属「地形与移动辅助」类,共用 openblocks.common.block.OpenBlock 基类,但行为差异很大,因此放在同一页做对照。

注册名 类 材质 硬度 声明位置
OpenBlocks:ladder BlockLadder extends BlockTrapDoor Material.wood 3.0 OpenBlocks.java:253
OpenBlocks:ropeladder BlockRopeLadder extends OpenBlock Material.circuits 0.4 OpenBlocks.java:356
OpenBlocks:path BlockPath extends OpenBlock Material.ground 默认 OpenBlocks.java:332
OpenBlocks:scaffolding BlockScaffolding extends OpenBlock Material.cloth 0.1 OpenBlocks.java:401
OpenBlocks:sponge BlockSponge extends OpenBlock Material.sponge 默认 OpenBlocks.java:310
OpenBlocks:bigbutton BlockBigButton extends OpenBlock Material.circuits 默认 OpenBlocks.java:313
OpenBlocks:heal BlockHeal extends OpenBlock Material.rock 默认 OpenBlocks.java:276

功能

玉阶梯(BlockLadder)

继承原版 BlockTrapDoor,但不是活板门:一律不落板(func_150117_b 中 isOpen 分支才计算边界,闭合态保持构造时的 1.5 格见方边界,BlockLadder.java:47-49)。setStepSound(soundTypeWood),非普通渲染(renderAsNormalBlock 返回 false,:28-31)。

BlockLadder.disableValidation 是一个 public static 开关(BlockLadder.java:18),默认 false。

绳梯(BlockRopeLadder)

最细的梯子:RENDER_THICKNESS = 1/64(渲染),COLLISION_THICKNESS = 1/16(碰撞)(BlockRopeLadder.java:31-32)。使用平面渲染 OpenBlocks.renderIdFlat(:42-45),并强制 isLadder 返回 true(:47-50)——所以它能附着在任意方块上。

quantityDropped 受配置控制:Config.infiniteLadder 为 true 时不掉落(:52-55)。

石板路(BlockPath)

高 0.1 格的薄片(BlockPath.java:16),getCollisionBoundingBoxFromPool 返回 null(完全无碰撞,:24-27)。只能放在顶面为实心的方块上(isValidLocation,:34-37);下方方块被挖掉时自身掉落并消失(onNeighborBlockChange,:39-45)。

脚手架(BlockScaffolding)

setTickRandomly(true),靠随机刻自我销毁(BlockScaffolding.java:20、:30-36):

if (Config.scaffoldingDespawnRate <= 0 || random.nextInt(Config.scaffoldingDespawnRate) == 0)

即 scaffoldingDespawnRate <= 0(默认 0 以外的值)时每次随机刻都消失;大于 0 时为 1/N 概率。shouldSideBeRendered 明确注释为「Code adapted from BlockBreakable」,用于做内部面剔除(:38-45)。

海绵(BlockSponge)

不是原版海绵:吸的是液体方块,不是吸收水分子的海绵。

  • 定时器 TICK_RATE = 20 * 5 = 100 刻(BlockSponge.java:21、:36-39)
  • 清除半径由 Config.spongeRange 决定的三维立方体遍历(:48-64)
  • 命中岩浆时额外触发方块事件(:65),客户端播 20 个 largesmoke 粒子、服务端把该格变成火焰(onBlockEventReceived,:68-81)
  • 相邻方块变化时立即吸一次(onNeighborBlockChange,:31-34)
  • 收获等级 setHarvestLevel("axe", 1)(:28)

大按钮(BlockBigButton)

TileEntityBigButton 驱动的巨型按钮,边界按按压状态在 z 方向 0.125 / 0.0625 之间切换(BlockBigButton.java:56-60)。放置要求背后(north)方块实心(canPlaceBlock,:26-31)。

治疗方块(BlockHeal + TileEntityHealBlock)

方块类本身极简(只有 canBeReplacedByLeaves 与 isFlammable 返回 false,BlockHeal.java:14-21)。效果全在 TE:

  • 每 20 刻对站在方块上方 2 格内(y .. y+2)的非创造模式玩家施加效果(TileEntityHealBlock.java:21-24)
  • 施加 Potion.regeneration( amplifiers 10,时长仅 1 刻)与 Potion id 23 饱和(:34-35)
  • 源码 TODO 注释明确说明:时长设为 1 刻只是为了够玩家回复,不显示粒子效果是副作用,作者把是否显示留给别人决定(:28-33、:36-39)

数值

数值名 配置项 默认值 来源
绳梯无限 infiniteLadder 见配置页 BlockRopeLadder.java:54
脚手架消失速率 scaffolding.despawnRate 4 Config.java:561
海绵半径 sponge.spongeRange 见配置页 BlockSponge.java:53-55
海绵刷新间隔 硬编码 100 刻 + 0~4 刻随机 BlockSponge.java:21、:45、:86
治疗方块周期 硬编码 20 刻 TileEntityHealBlock.java:25
治疗范围 硬编码 自身上方 2 格 TileEntityHealBlock.java:24
绳梯渲染厚度 硬编码 1/64 BlockRopeLadder.java:31
绳梯碰撞厚度 硬编码 1/16 BlockRopeLadder.java:32
石板路高度 硬编码 0.1 BlockPath.java:16

交互

触发 行为
踩上大按钮 TileEntityBigButton 切换状态并发出红石信号(BlockBigButton.java:56)
海绵旁液体变化 立即清除 spongeRange 内的全部液体方块(BlockSponge.java:31-34)
海绵定时到期 再次清除并重新排定(updateTick,BlockSponge.java:85-88)
石板路下方方块被挖 掉落自身并变为空气(BlockPath.java:39-45)
踩上脚手架 随机刻触发即消失
治疗方块每 20 刻 范围内玩家获得 1 刻回复 + 饱和

合成配方

玉阶梯(Config.java:614-616):

sl
sl
sl
字符 物品
s Blocks.stone 石头
l Blocks.ladder 原版梯子

绳梯(Config.java:943-957):

tl
ll
tl
字符 物品
t string 线
l Blocks.ladder 原版梯子

石板路(Config.java:854-858):

 p
字符 物品
p Blocks.stone_slab 石台阶

脚手架(Config.java:1102-1107):

bbb
bHb
bbb
字符 物品
b Blocks.bamboo 竹子
H Blocks.hay_block 干草块

海绵(Config.java:780-785):

www
wHw
www
字符 物品
w Blocks.wool 羊毛
H Blocks.chest 箱子

大按钮(Config.java:784-790):

www
bHb
bbb
字符 物品
w Blocks.wool 羊毛
H Blocks.heavy_weighted_pressure_plate 重质压力板
b brickBlock 砖块

治疗方块(Config.java:791-798):

ggg
gdg
ggg
字符 物品
g blockGold 金块
d gemDiamond 钻石

相关条目