车库门
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | malisisdoors:garage_door |
| 类 | net.malisis.doors.block.GarageDoor(继承 Block) |
| TileEntity | net.malisis.doors.entity.GarageDoorTileEntity(继承 DoorTileEntity,注册名 garageDoorTileEntity,Registers.java:365) |
| 材质 | Material.wood(GarageDoor.java:47) |
| 硬度 | 2.0(GarageDoor.java:50) |
| 脚步声 | soundTypeWood(GarageDoor.java:51) |
| 创造标签 | Malisis' Doors(GarageDoor.java:49) |
| 注册方式 | GameRegistry.registerBlock(Registers.java:360-363) |
功能
可纵向堆叠的门:每放置一个方块即可向上或向下延伸,整列作为一扇门同步开合,适合车库与卷帘门洞。
- 列的识别:每个 TileEntity 先递归向上找顶端(
getTopDoor),再从顶端向下收集全部成员(getGarageDoor(ForgeDirection.DOWN)+addChildDoors,GarageDoorTileEntity.java:44-59) - 整列同步:
setPowered对getDoors()返回的每个成员统一置OPENING/CLOSING状态(GarageDoorTileEntity.java:76-85) - 连锁到相邻门:置位后还会向侧面(东或北,取决于 meta)查找同向的相邻门并一并置位,实现连续门洞联动(
GarageDoorTileEntity.java:86-88) - 开门时长随高度增长:
getOpeningTime()返回getDoors().size() * maxOpenTime,即每个方块 10 tick(GarageDoorTileEntity.java:32/40-42) - 红石驱动:
onNeighborBlockChange在方块通电或邻居可供电时调用te.setPowered(...)(GarageDoor.java:88-95) - 非完整方块:
isNormalCube/renderAsNormalBlock/isOpaqueCube均返回false(GarageDoor.java:143-150) - 碰撞:开门后
getCollisionBoundingBoxFromPool返回null(GarageDoor.java:128-130);关闭时厚度为Door.DOOR_WIDTH / 2(GarageDoor.java:103-107) - 顶格贴图:meta 带
Door.FLAG_TOPBLOCK且处于上下表面时使用_top贴图(GarageDoor.java:68-69)
数值
| 数值名 | 值 | 出处 |
|---|---|---|
| 单格开门时长 | 10 tick | GarageDoorTileEntity.java:32 |
| 整列开门时长 | 格数 × 10 tick | GarageDoorTileEntity.java:40-42 |
| 硬度 | 2.0 | GarageDoor.java:50 |
| 门扇厚度 | Door.DOOR_WIDTH / 2 = 0.09375 |
Door.java:70、GarageDoor.java:103 |
合成配方
(Registers.java:367)
ABA
AAA
| 字符 | 物品 |
|---|---|
A |
木板 Blocks.planks ×5 |
B |
玻璃 Blocks.glass ×1 |