Present
礼物盒方块,节日主题装饰方块,具有邻居方块同步功能。
基本属性
| 属性 | 值 |
|---|---|
| 注册名 | chisel:present |
| 父类 | Block (implements ICarvable)(BlockPresent.java:31) |
| 材质 | Material.wood(BlockPresent.java:33) |
| 硬度 | 2.0F(Features.java:3182) |
| 爆炸抗性 | 10.0F(Features.java:3183) |
| 方块边界 | 0.0625,0,0.0625 ~ 0.9375,0.875,0.9375(BlockPresent.java:36-38) |
| 瓦片实体 | TileEntityPresent(BlockPresent.java:199-201) |
| 物品类 | ItemBlockPresent(Features.java:3190) |
| GUI ID | 2(BlockPresent.java:115) |
| 渲染 ID | getRenderType() 返回 -1(BlockPresent.java:70-72) |
| 变体组 | present |
功能
- 实现 ICarvable,16 个纹理变体
- 实现了
IInventory容器语义(由 TileEntity 承载),是一个可开箱的双箱 - 右键打开 GUI(GUI ID 2):
player.openGui(Chisel.instance, 2, world, x, y, z)(BlockPresent.java:110-119) TileEntityPresent implements IInventory, IDoubleChest(TileEntityPresent.java:21),可与相邻 present 连接成双箱 (connectTo/findConnections,BlockPresent.java:79-88)- 支持比较器取样:
Container.calcRedstoneFromInventory((TileEntityPresent) te)(BlockPresent.java:210-212) - 破坏时把箱内物品全部掉落(
BlockPresent.java:88-105) isOpaqueCube()= false、renderAsNormalBlock()= false(:61-68)- 实际外观由
RenderPresent(TileEntitySpecialRenderer)绘制,ClientProxy.java:74绑定;因为getRenderType()返回 -1, 不走 CTM
已订正(编造的行为):原文"邻居同步"整节称 “BlockPresent 响应
onNeighborBlockChange,用于检测红石信号变化 / 与相邻方块同步状态”。BlockPresent中不存在onNeighborBlockChange方法(已确认全文)。 这是"把原版箱子/红石灯的行为套到 present 上"造成的编造。 present 的"相邻联动"真实机制是 TileEntity 层的connectTo()/findConnections()/MessagePresentConnect(双箱连接), 与红石信号无关。证据:BlockPresent.java全文无该方法;BlockPresent.java:75-88、TileEntityPresent.java:48-70。已订正(编造的方法):原文称"特殊渲染 | 支持 CTM/多纹理"——
getRenderType()实际返回-1(BlockPresent.java:70-72), 即标准方块渲染 + TileEntity 特殊渲染,不涉及 CTM。已订正(语义写反):原文称"
getPickBlock- 快捷键获取物品(返回 metadata 0)"。 实际getPickBlock返回new ItemStack(this, 1, world.getBlockMetadata(x, y, z))——即方块当前的 metadata(BlockPresent.java:222-225), 会正确保留镌取到的变体,而不是强制 0。已订正(语义写反):原文称"放置时根据玩家朝向设置 metadata"。 实际
onBlockPlacedBy里 metadata 取自物品耐久值(变体 id)world.setBlockMetadataWithNotify(x, y, z, stack.getItemDamage(), 3), 玩家朝向写入的是te.setRotation(heading)(BlockPresent.java:74-86)。 朝向与变体是两个独立字段。
变体系统
变体组 present 共 16 个成员,全部是 chisel:present 自身
(Features.java:3185-3187,for i in 0..15),
纹理统一引用 minecraft:planks_oak(:3186)。
组注册矿物名 Carving.chisel.registerOre("present", "chest")(Features.java:3191),
即可用原版箱子合成(Features.java:3197-3199:箱子 + 对应染料)。
getSubBlocks 列出全部 16 个(BlockPresent.java:51-55),
damageDropped(meta) 返回 meta 保留变体(:217-220)。