门工厂
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | malisisdoors:door_factory |
| 显示名(en_US) | Door Factory |
| 类 | net.malisis.doors.block.DoorFactory(继承 MalisisBlock,实现 ITileEntityProvider) |
| TileEntity | net.malisis.doors.entity.DoorFactoryTileEntity(注册名 doorFactoryTileEntity,Registers.java:374) |
| 材质 | Material.iron(DoorFactory.java:44) |
| 硬度 | 3.0(DoorFactory.java:47) |
| 创造标签 | Malisis' Doors(DoorFactory.java:45) |
| 槽位数 | 5(DoorFactoryTileEntity.java:60-75) |
| 产出 | 自定义门 ×1 |
门工厂是模组内的门生成器:玩家放入门框与两种面板材料,即可造出一扇自定义门;或反向编辑已有自定义门。
槽位
DoorFactoryTileEntity 定义 5 个槽(DoorFactoryTileEntity.java:60-75):
| 槽位 | 字段 | 类 | 作用 |
|---|---|---|---|
| 0 | frameSlot |
DoorFactorySlot(0) |
门框方块 |
| 1 | topMaterialSlot |
DoorFactorySlot(1) |
上半门板材料 |
| 2 | bottomMaterialSlot |
DoorFactorySlot(2) |
下半门板材料 |
| 3 | doorEditSlot |
DoorEditSlot(3) |
待编辑的已有自定义门 |
| 4 | outputSlot |
MalisisSlot(4) |
产物,setOutputSlot() |
门属性
DoorFactoryTileEntity 保存的可调门属性(DoorFactoryTileEntity.java:52 起):
| 属性 | 字段 | 类型 |
|---|---|---|
| 移动方式 | doorMovement |
IDoorMovement |
| 音效 | doorSound |
IDoorSound |
| 开门时间 | openingTime |
int |
| 自动关闭时间 | autoCloseTime |
int |
| 需红石 | requireRedstone |
boolean |
| 对开门 | doubleDoor |
boolean |
| 密码 | code |
String |
buildDescriptor()(DoorFactoryTileEntity.java:187-200)把这些属性装配成一个 DoorDescriptor,其中方块/物品固定为 Blocks.customDoor 与 Items.customDoorItem,最后一步 desc.setCode(getCode()) 决定是否启用密码锁。
功能
createDoor()(DoorFactoryTileEntity.java:141-169)分两种模式,由 isCreate 标志切换(GUI 中的模式按钮):
创建模式(isCreate == true)
- 前置校验(
canCreateDoor,DoorFactoryTileEntity.java:171-185):必须同时具备doorMovement、doorSound、非零openingTime,且槽 0/1/2 全部非空 - 用
CustomDoorItem.fromDoorFactory(this)预生成预期产物 - 若输出槽已有物品且 NBT 不同或已满,放弃本次生产(
DoorFactoryTileEntity.java:147-150) - 成功则各消耗槽 0/1/2 各 1 个并插入产物(
DoorFactoryTileEntity.java:152-156)
编辑模式(isCreate == false)
- 槽 3 必须非空
- 取出槽 3 的门,把当前面板属性
buildDescriptor().writeNBT(nbt)写入门物品的 NBT,再放回输出槽(DoorFactoryTileEntity.java:157-167)
编辑模式只改 NBT 属性,不消耗材料——因此可以用空白门反复调整参数。
数值
| 数值名 | 值 | 出处 |
|---|---|---|
| 槽位总数 | 5 | DoorFactoryTileEntity.java:60-64 |
| 最小开门时间 | 必须 > 0,否则禁止生产 | DoorFactoryTileEntity.java:172 |
| 创建模式最少材料 | 3(门框 + 2 面板) | DoorFactoryTileEntity.java:175-177 |
合成配方
(Registers.java:376-388)
ABA
C C
ADA
| 字符 | 物品 |
|---|---|
A |
铁锭 Items.iron_ingot ×6(四个角 + 中间两行外侧) |
B |
铁门 Items.iron_door ×1 |
C |
红石 Items.redstone ×2 |
D |
活塞 Blocks.piston ×1 |
相关条目
- 自定义门 - 门工厂的产物
- 门工厂 GUI -
DoorFactoryGui的双模式界面 - 自定义门 NBT 格式 -
writeNBT写出的字段定义