高级压印器
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | ae2stuff:Inscriber |
| 英文名 | Advanced Inscriber |
| 中文名 | 高级压印器 |
| TileEntity | net.bdew.ae2stuff.machines.inscriber.TileInscriber |
| 硬度 | 1(BlockInscriber.scala:32) |
| 材质 | MachineMaterial(MapColor.ironColor) |
| GUI ID | 3(MachineInscriber.scala:25) |
| 可旋转 | 否 |
| 升级槽 | 5(仅 AE2 速度卡) |
| 可自动化 | 是(SidedInventory) |
功能
高级压印器是 AE2 原版压印器的替代品:它复用同一套 AE2 压印配方注册表(AEApi.instance().registries().inscriber().getRecipes,TileInscriber.scala:144-149),所以所有 AE2 及附属模组注册的压印配方都能用,但支持 5 张速度卡、AE 缓冲储能、输出可自动化,并且顶/底槽默认上锁防止自动化误取。
槽位
getSizeInventory = 4(TileInscriber.scala:35):
| 槽号 | 用途 |
|---|---|
| 0 | top(印刷版 / 可选) |
| 1 | middle(基板,必需) |
| 2 | bottom(蚀刻版 / 可选) |
| 3 | output |
另有 5 格升级槽(TileInscriber.scala:46)。
配方匹配
isMatchingFullRecipe(TileInscriber.scala:151-163)要求 4 个条件同时成立:middle 槽非空、getTopOptional 与 top 槽同物品、getBottomOptional 与 bottom 槽同物品、getInputs 中存在与 middle 槽同物品的项。用的是 ItemUtils.isSameItem(忽略数量与 NBT),所以 null 槽等于 getXxxOptional 为空的情况。
启动时(TileInscriber.scala:66-79)扣掉 middle 槽 1 个;若 InscriberProcessType.Press 则额外各扣 top 与 bottom 1 个。其它 process type 只扣 middle。
槽位锁定
topLocked 与 bottomLocked 两个 DataSlotBoolean 默认值均为 true(TileInscriber.scala:51-54)。persistLoad 监听器在读到不含这两个键的旧存档时强制置 true(TileInscriber.scala:56-60),因此老版本存档升级后必定是锁定态。
解锁条件(canExtractItem,TileInscriber.scala:222-230)三者全部满足:!locked 且 正在加工的 output == null 且 middle 槽为空。锁定状态由客户端发 MsgSetLock 切换,服务端在 openContainer 为 ContainerInscriber 时才接受(MachineInscriber.scala:38-48),否则 sys.error("Invalid slot")。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 待机功耗 | 0 AE/t | tuning.cfg Machines/Inscriber/IdlePower |
| 每周期耗电 | 1000 AE | tuning.cfg Machines/Inscriber/CyclePower |
| 内部容量 | 5000 AE | tuning.cfg Machines/Inscriber/PowerCapacity |
| 周期长度 | 100 tick(5 秒) | tuning.cfg Machines/Inscriber/CycleTicks |
| 升级槽数 | 5 | TileInscriber.scala:46 |
| 速度卡最高等级 | 5 | MachineInscriber.scala:35 Upgrades.SPEED.registerItem(new ItemStack(BlockInscriber), 5) |
| 槽位总数 | 4 | TileInscriber.scala:35 |
进度与功耗换算
progressPerTick = (1 / CycleTicks) * (1 + 速度卡数)
powerNeeded = CyclePower * progressPerTick // 每 tick 扣
0 张卡:每 tick 进度 0.01、耗电 10 AE/t,100 tick(5 秒)完成,合计 1000 AE。
5 张卡:每 tick 进度 0.06、耗电 60 AE/t,约 17 tick 完成,合计仍为 1000 AE(TileInscriber.scala:84-92)。
即速度卡只压缩耗时,不降低总耗电。缺电时进入 sleep(),下次有电再 wakeup()。
自动化侧限制
| 槽 | 可否自动取出 | 条件 |
|---|---|---|
| output (3) | 是 | 无条件 |
| top (0) | 条件性 | !topLocked && output == null && middle 槽为空 |
| bottom (2) | 条件性 | !bottomLocked && output == null && middle 槽为空 |
| middle (1) | 否 | 恒 false |
meta 与外观
onWake → meta 1,onSleep → meta 0(TileInscriber.scala:242-249)。上下面共用 topIcon,侧面按 meta 切 sideIconOn / sideIconOff(BlockInscriber.scala:38-43)。
配方
3×3(recipes.cfg:31-40),I = OD:ingotIron,H = 漏斗,S = AE2 tile.BlockInscriber,P = M:engProcessor:
I H I
P S P
I H I
与 AE2 原版压印器配方相比,AE2 Stuff 版本把「中间 AE2 压印器」换成了「周围 4 个漏斗 + 4 个铁锭」,并把原版 2 个处理器升级为 M:engProcessor。