CraftFlow

CraftFlow

CraftFlow 是一个用于Minecraft Forge 1.20.1的递归合成规划与自动化模组。

CraftFlow 是一款适用于 Minecraft Forge 1.20.1 的递归合成规划与自动化模组。它将 JEI 或 EMI 的配方浏览与玩家物品栏、存储网络及受支持的模组工作站相连接,使得复杂物品能够通过单一工作流进行规划和合成。

无需手动合成每一个中间组件、在机器间搬运材料以及反复查阅配方,你只需选择想要的物品、设定数量、查看生成的计划,然后让 CraftFlow 执行所需步骤即可。

工作原理

当你在受支持的 JEI 或 EMI 配方页面请求某一物品时,CraftFlow 会分析该配方并递归搜索生产该物品所需的原材料。

例如,如果请求的物品需要木板、木棍、工具以及若干中间组件,CraftFlow 将:

  1. 检查哪些材料已经可用。
  2. 解析缺失中间物品的配方。
  3. 计算每一步所需的数量。
  4. 在适当的情况下复用可用的催化剂和工具。
  5. 显示完整合成计划的预览。
  6. 按正确顺序执行每个配方。
  7. 收集中间产物和最终成品。
  8. 将请求的结果送到选定的目的地。
  9. 尽可能将多余的材料返还至存储处。

CraftFlow 不会添加替代配方。它仅规划并执行由 Minecraft、数据包、CraftTweaker/KubeJS 脚本以及受支持模组所提供的配方。

主要特性

递归合成计划

CraftFlow 能自动解析多步合成链。中间产物会被视为后续步骤的可用材料,从而无需手动合成每一个组件即可完成大型配方树。

规划器会计算:

  • 所需原料
  • 可用材料
  • 缺失材料
  • 中间产物
  • 请求的输出数量
  • 可复用的工具和催化剂
  • 配方产生的多余物品
  • 正确的执行顺序

在合成开始前,预览会显示计划好的步骤,以便你检查将要合成的内容以及每项操作将在何处进行。

JEI 与 EMI 集成

CraftFlow 直接在其支持的 JEI 和 EMI 配方显示界面中添加合成控制选项。

你可以直接从当前查看的配方开始规划,而无需打开单独的合成界面。普通配方和受支持的特殊工作站配方都可以参与递归计划。

只需一个配方查看器即可。CraftFlow 可以根据整合包中安装的模组,与 JEI 或 EMI 配合使用。

物品栏与存储访问

CraftFlow 可以从玩家的物品栏或受支持的存储网络中获取原料。

受支持的存储集成包括:

  • Refined Storage
  • Tom's Simple Storage Mod
  • Beyond Dimensions 存储系统

CraftFlow 会根据已安装的模组选择可用的存储集成。可以同时安装多个受支持的存储模组。

根据所选的目的地,请求的最终产品可以送至玩家物品栏或返还至存储处。中间产物和多余材料会保留在合成工作流中,并尽可能返还至存储处。

模组工作站自动化

许多模组配方无法在普通合成台中完成。CraftFlow 包含一个模块化的特殊执行器系统,用于处理受支持的工作站和配方类型。

特殊执行器可以处理诸如以下操作:

  • 将原料放入工作站
  • 提供催化剂或工具
  • 复用不会被消耗的配方组件
  • 应用真实的工具耐久度
  • 等待工作站完成作业
  • 收集输出槽位
  • 收集多个输出
  • 回收掉落的配方产物
  • 返还未使用的材料
  • 将完成的产品传递到后续的递归步骤中

工作站可以绑定到兼容的终端或存储访问物品上。绑定后,CraftFlow 可以将相应的配方步骤引导至该工作站。

受支持的集成可能包括来自诸如 Farmer's Delight、Youkai's Homecoming、Ars Nouveau、The Aether、Malum、Goety、Forbidden and Arcanus、Apotheosis、Eidolon、TerraCurio、Immortalers Delight、Crock Pot 等模组的工作站和配方系统。

具体可用的集成取决于所安装的 CraftFlow 版本以及整合包中包含的模组。

数量感知合成

CraftFlow 支持订购一件物品的多个副本。

规划器会考虑:

  • 配方输出堆叠大小
  • 批量合成
  • 中间物品需求
  • 可复用的催化剂
  • 工具耐久度
  • 产出多个结果堆叠的配方
  • 产生多余材料的配方

这可以防止每次请求物品时都合成一次可复用工具,也避免将每种催化剂都视为消耗性原料。

工具与催化剂

工具会根据其真实的物品状态来处理。CraftFlow 不会通过创建人工副本或模拟附魔来模拟耐久度。

当配方消耗工具耐久时,实际工具会被使用,其耐久度会正常更新。如果请求的数量超过了现有工具提供的耐久度上限,规划器会考虑到额外的需求,而不会假设一把工具可以完成无限次的操作。

在配方允许的情况下,可复用的催化剂会被保留并在兼容的合成步骤中重复使用。

特殊配方输出

一些工作站会将产物放入输出槽、物品栏、储罐或世界中,而不是返回正常的合成格结果。

CraftFlow 的特殊执行器负责监控这些输出,并在操作完成后将其收集。收集到的产品可以:

  • 被后续递归步骤使用
  • 返还至存储网络
  • 送至玩家物品栏
  • 与同一请求的其他输出合并

对于受支持的掉落物配方,会使用受保护的收集逻辑,以确保预期的输出在 CraftFlow 处理之前不会被无关的物品收集效果取走。

多人游戏支持

CraftFlow 专为多人游戏设计。合成请求会在服务端而非客户端进行验证和执行,不会信任客户端的物品栏数据。

对于多人游戏,客户端和服务端都应安装 CraftFlow。玩家使用客户端集成来创建和预览计划,而服务端则执行存储访问、工作站交互、物品移动和合成执行。

每个请求都与发起它的玩家相关联。存储访问和工作站操作使用可用的服务端上下文,而不是在所有玩家之间共享一个全局客户端缓存。

服主在启用无限制自动化之前,应使用整合包配置的存储系统、配方脚本、区块加载规则和保护模组测试大型合成计划。

配置

CraftFlow 为基础递归合成之外的自动化功能提供了配置选项。

特殊集成默认启用,可以在不需要时或整合包对工作站行为进行了大量自定义时单独禁用。

禁用某项集成会阻止 CraftFlow 规划或执行该特殊配方类型。这不会移除原始配方或禁用工作站本身。

这种模块化设计允许整合包保留普通的递归合成功能,同时有选择地禁用不兼容或不期望的自动化系统。

兼容性说明

CraftFlow 面向模组环境,因此兼容性可能取决于整合包使用的具体配方定义和工作站实现。

通过数据包、KubeJS 或 CraftTweaker 创建的配方,只要它们通过 Minecraft 的配方系统或受支持的 JEI/EMI 配方类别提供了有效的原料和输出,通常就可以参与进来。

某些配方在以下情况下可能需要专门的处理:

  • 使用隐藏的内部物品栏
  • 创建世界实体作为输出
  • 需要多方块结构
  • 在正常配方界面之外消耗流体或能量
  • 依赖于玩家特定的进度
  • 使用随机输出
  • 处理过程中需要手动交互
  • 未向 JEI 或 EMI 提供足够的配方信息

可见的配方并不自动意味着其工作站可以被自动化。CraftFlow 仅执行具有兼容执行器的特殊配方。

需求

  • Minecraft 1.20.1
  • Forge
  • JEI 或 EMI
  • 多人游戏需要客户端和服务端均安装 CraftFlow

存储网络自动化需要一个受支持的存储模组。基于物品栏的行为和具体可用的目的地取决于所安装的集成。

除非在相应的发布页面上有说明,否则 CraftFlow 不会强制要求特定版本的可选存储或工作站模组。

预期用途

CraftFlow 专为拥有长合成链、大型存储网络和许多专业工作站的玩家和整合包而设计。

在以下情况下尤为有用:

  • 一件物品需要许多中间配方
  • 原料分布在存储网络中
  • 整合包使用多种不同的合成机器
  • 需要重复合成相同的复杂物品
  • 特殊配方的输出需要继续用于后续步骤
  • 玩家希望在开始前检查材料需求

CraftFlow 将配方浏览转变为可执行的合成工作流,同时保留原始配方、工具、存储系统和工作站的行为。