玉阶梯 / 绳梯 / 石板路 / 脚手架 / 海绵 / 大按钮 / 治疗方块
基本信息
这七个方块都属「地形与移动辅助」类,共用 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 刻)与Potionid 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 钻石 |