跳到正文
烈焰甘蔗Wiki

SFM Drive(复制驱动器)

基本信息

属性 值
注册名 StevesAddons:duplicator
物品类 stevesaddons.items.ItemSFMDrive
未本地化名称 duplicator
纹理 stevesaddons:duplicator
最大堆叠 1
耐久 无
创意模式标签 StevesFactoryManager

⚠️ 注册名不是 SFMDrive。代码里的注册名是 duplicator(reference/Names.java:5,registry/ItemRegistry.java:25),类名 ItemSFMDrive 才是旧名;本地化键为 item.StevesAddons.duplicator.name。

功能

SFM Drive(源码注册名 duplicator,也称"复制器")是用于复制和迁移机器管理器布局的单槽位物品。在潜行时右键点击 SFM 机器管理器方块(TileEntityManager,含 RF 版 TileEntityRFManager),会读取该机器的 NBT 并存储在物品上。

存储的布局可以应用到其他机器管理器方块,或通过 /stevesaddons save、/stevesaddons load 命令保存/加载。已装 WAILA 时物品提示会显示作者或来源坐标(ItemSFMDrive.addInformation)。

使用方式

使用方式 触发条件 使用效果 条件/限制
潜行 + 右键点击管理器方块 潜行 + 右键 复制管理器 NBT 数据到驱动器 必须是同类管理器
潜行 + 右键点击同类管理器 潜行 + 右键 将存储的 NBT 写入目标管理器 目标必须是同类型
快捷栏右键 无目标 无效果 —

行为细节

  • 交互判定:生效对象是 instanceof TileEntityManager 的 TileEntity,而非按方块注册名判定(ItemSFMDrive.java:56)。另有一条 PlayerInteractEvent 路径,潜行时用 SFM 管理器替换目标方块的 TileEntity(naming/EventHandler.java:85-94)。
  • NBT 验证:驱动器只接受 NBT id 为 TileEntityMachineManagerName 或 TileEntityRFManager 的数据;无效 NBT 会被清空(ItemSFMDrive.java:43-49)。注意 TileEntityRFManager.writeToNBT 会把自己的 id 覆写为 TileEntityMachineManagerName(vswe/stevesfactory/blocks/TileEntityRFManager.java:8-11)。
  • 坐标剥离:save 时删除 x/y/z 并写入 Author(CommandSave.java:46-49);load 时由 unstripBaseNBT 补回的是 6 个基础键(id、Variables、Components、Timer、ProtocolVersion、ench,CommandDuplicator.java:17,54-59),不含 x/y/z——坐标是在应用到目标管理器时由 correctNBT 按目标方块实际坐标重新写入的(ItemSFMDrive.java:74-76)。
  • 组件重编号:若目标管理器已有流量组件(currentFlow > 0),粘贴时会把 ConnectionComponent 索引整体加上该数量,避免组件串位(ItemSFMDrive.java:77-105)。
  • 最大堆叠为 1,不可叠加。

合成配方

 x        x = 铁锭(oreDict: ingotIron)
xyx       y = StevesFactoryManager 方块管理器
 x

实际形状为 3×3 中间的十字,纵向两端为空格(ItemRegistry.java:33-35)。

已订正(审计)

  • 注册名:原文 stevesaddons:SFMDrive → 实为 StevesAddons:duplicator(reference/Names.java:5,registry/ItemRegistry.java:25)。
  • 未本地化名称:原文 DRIVE → 实为 duplicator。代码用的是 setUnlocalizedName(Names.DRIVE),其值为小写 "duplicator"(ItemSFMDrive.java:22),DRIVE 只是常量名。
  • 合成配方图:原文画成 3×3 实心方阵(4 角与 4 边共 6 个 x),与代码不符。实为 " x " / "xyx" / " x " 十字形,共 5 格(ItemRegistry.java:33-35)。
  • 「加载时恢复坐标」:原文称剥离的 x/y/z 在加载时恢复,实为不恢复——unstripBaseNBT 只补 6 个基础键,坐标在应用时由 correctNBT 重新写入。
  • 「同类型管理器」:原文把生效对象写成 TileEntityMachineManagerName/TileEntityRFManager 方块,实际交互判定是 instanceof TileEntityManager,这两个字符串只是 NBT 校验用的 id 值。
  • 最大堆叠 1、NBT 校验规则经核对属实,未改动。
浏览全部模组