Slab (Carvable)
可雕刻半砖方块,支持双层堆叠。
基本属性
| 属性 | 值 |
|---|---|
| 注册名 | chisel:marble_slab / chisel:limestone_slab / chisel:marble_pillar_slab / chisel:concrete_slab |
| 父类 | BlockCarvable |
| 物品类 | ItemCarvableSlab |
| 渲染 | 非实心 (isOpaqueCube() = false) |
| 物品高度 | 0.5F(setBlockBoundsForItemRender → 0~0.5) |
双层机制
isBottom- 标记当前实例是下半砖还是上半砖(BlockCarvableSlab.java:27、:48)bottom/top- 引用配对的半砖(:25-26、:43-44)master- 引用满方块本体,两半填满时替换成它(:24)
上下半砖是两个独立的 Block 实例(top = new BlockCarvableSlab(this),
BlockCarvableSlab.java:35),共享同一个 carverHelper(:46),
靠 isBottom 区分高度,不是靠 metadata。
放置逻辑
已订正(编造的方法):原文列有"
onBlockPlaced- 根据放置面和高度确定 metadata"。BlockCarvableSlab中不存在onBlockPlaced方法(已确认全文)。 上下半砖的选择完全在物品类ItemCarvableSlab.onItemUse中完成:
- 点击位置
hy > 0.5D且不是从下方点击 → 放block.top,否则放block.bottom(ItemCarvableSlab.java:59-63)- 若目标处已是配对的另一半且 meta 相同 → 直接放
block.master(满方块), 即"双层填满变回整块"(ItemCarvableSlab.java:40-45)- 若点击的是下半砖且从上方点击(或上半砖从下方点击)→ 补满为
block.master(ItemCarvableSlab.java:48-53)证据:
ItemCarvableSlab.java:23-67;BlockCarvableSlab全文无onBlockPlaced。
setBlockBoundsForItemRender 固定为 0~0.5 半高(BlockCarvableSlab.java:73-75);
addCollisionBoxesToList 先调 setBlockBoundsBasedOnState 再交给父类
(BlockCarvableSlab.java:78-84)。
材质属性
| 方法 | 行为 |
|---|---|
isOpaqueCube() |
false(:88-90) |
renderAsNormalBlock() |
false(:104-106) |
isSideSolid() |
!isBottom && (side == UP)——下半砖顶面实心,上半砖任何面都不实心(:137-140) |
damageDropped(int) |
返回 meta,保留变体(:92-94) |
已订正(语义写反):原文写"
isSideSolid()| 仅顶面实心(isBottom=false 时)"。 条件写反。源码是return !isBottom && (side == UP);——即isBottom = true(下半砖)时顶面才实心;上半砖对 UP 也返回 false。 证据:BlockCarvableSlab.java:137-140。
注册的半砖(各自独立变体组)
| 方块 | 变体组 | 证据 |
|---|---|---|
chisel:marble_slab |
marble_slab |
Features.java:2538 |
chisel:limestone_slab |
limestone_slab |
Features.java:2424 |
chisel:marble_pillar_slab |
marble_pillar_slab |
Features.java:2759 |
chisel:concrete_slab |
concrete_slab |
Features.java:888 |
这 4 个是四个互不相通的组,不能互相雕刻替换(原文把它们并列但未说明组关系)。
破坏行为
getItemDropped 返回 Item.getItemFromBlock(bottom)(BlockCarvableSlab.java:97-99),
getPickBlock 同样返回 new ItemStack(bottom, 1, meta)(:109-112)——
无论破坏上半砖还是下半砖,掉落的都是下半砖的物品。