门工厂

基本信息

属性 值
注册名 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

相关条目