Stairs (Carvable)
可雕刻楼梯方块。
基本属性
| 属性 | 值 |
|---|---|
| 注册名 | <组名>.<序号>,如 chisel:marble_stairs.0 |
| 父类 | BlockStairs (implements ICarvable) |
| 渲染 ID | RendererStairs.id |
| 亮度补偿 | useNeighborBrightness = true |
| 方块名 | setBlockName("chisel." + n)(CarvableStairsMaker.java:38) |
已订正(分类页与本条目同源错误):分类页写"楼梯,8 方向变体", 原文写"
marbleStairs[8]- 8 种大理石楼梯"。这两种说法都把 楼梯方块的数量误当成"方向变体"。 实际情况分两层:
- 朝向由 metadata 表达:低 2 位是 4 个水平朝向(0~3),第 8 位是倒置标志, 即朝向相关取值共 5 种语义(0-3 + 8),不是 8 个"方向变体"。
- 纹理变体由不同的楼梯方块承载:数组下标
i决定该楼梯对应基础方块的 metai*2与i*2+1(CarivableStairsMaker.java:32)。 证据:BlockCarvableStairs.java:64-76;CarvableStairsMaker.java:26-46。
注册的楼梯组(6 个独立组)
| 组名(= 变体组) | 楼梯方块数 | 方块名 | 证据 |
|---|---|---|---|
marble_stairs |
8 | chisel:marble_stairs.0 ~ .7 |
Features.java:2573 |
limestone_stairs |
8 | chisel:limestone_stairs.0 ~ .7 |
Features.java:2461 |
ice_stairs |
8 | chisel:ice_stairs.0 ~ .7 |
Features.java:2071 |
packedice_stairs |
8 | chisel:packedice_stairs.0 ~ .7 |
Features.java:3116 |
concrete_stairs |
6 | chisel:concrete_stairs.0 ~ .5 |
Features.java:913 |
aluminum_stairs |
3 | chisel:aluminum_stairs.0 ~ .2 |
Features.java:175 |
重要组关系:这 6 个是彼此独立的变体组,且都不同于对应的满方块组 (
marble/limestone/ice/packedice/concrete/aluminumblock)。 例如chisel:marble_stairs.0属于组marble_stairs, 不能被雕刻成组marble里的chisel:marble。 原文只列了"楼梯组"名称而未给出组名与该隔离关系。每个楼梯方块向组内贡献 2 个变体:meta 0(正置)与 meta 8(倒置) (
CarvableStairsMaker.java:41-42)。受infoList.size()上限影响,concrete_stairs最后一个楼梯只贡献 1 个变体(:40的条件判断)。
矿物名注册:ice_stairs → iceStairs(:2072)、
packedice_stairs → packedIceStairs(:3117)。
放置行为
onBlockPlacedBy 根据玩家朝向设置 metadata(BlockCarvableStairs.java:64-76):
- 水平旋转:
0→2, 2→3, 3→0, 1→1(原文记作 “0→2, 1→1, 2→3, 3→0”,正确) - 叠加 upside-down 标志 (
metadata % 8) - 物品 damage >= 8 时
meta += 8
纹理计算
getIcon(side, metadata) 使用 carverHelper.getIcon(side, blockMeta + metadata / 8)
计算实际变体索引(BlockCarvableStairs.java:37-40)——
blockMeta 是构造时绑定的 i*2,metadata / 8 取倒置位。
damageDropped(int i) 返回 i & 0x8,只保留倒置位(:42-44)。
物品变体
getSubBlocks 固定列出两个(BlockCarvableStairs.java:50-53):
- metadata 0: 正常方向
- metadata 8: 倒置
原文对本节描述正确。