跳到正文
陈嵩洋
← 所有项目

God Damn Repackager

Create 扩展模组 · Forge 1.20.1 与 NeoForge 1.21.1 · MIT · ALPHA

一句话版本

Create 的物流系统每 20 刻只从每个 Repackager 发出一个合成包裹——就算你在同一个输入仓库上接十个也一样。这个模组给每个仓库加了一个共享包裹池,让所有 Repackager 并行工作:9 台机器能把约 1000 秒的订单压到约 111 秒。v0.5 起还支持部分打包:只要有任何材料到位就立刻开工,不再等整套凑齐。

问题

在 Create 6.0+ 中,大型合成订单由包裹系统完成:包裹经过输入仓库,由 Repackager 逐个发出。每 20 刻一个包裹意味着每秒只有一个——而且给同一个仓库多接几台 Repackager 也无济于事,因为一张订单只由一台机器处理。全自动超级工厂就卡死在每秒一个包裹上。

思路

让接到同一个输入仓库上的所有 Repackager 分摊工作。模组用 Mixin 注入 Create 的 repackager 逻辑,并把订单包裹池保存在世界 SavedData 里。每个周期,每台机器都从池中取走自己的一份——N 台机器约等于 N 倍吞吐,且不会重复处理。

实现方式

输入仓库 共享包裹池(SavedData) Repackager × N
每台 Repackager 每个周期都从同一个仓库共享池取件——并行而不错账。

迭代历程

  1. v0.2.1 修复能力缓存失效问题,该问题可能导致包裹传输卡死。
  2. v0.3.0 用跨机器的动态再平衡取代了快照式平均分配。
  3. v0.4.0 引入按仓库共享的包裹池,以世界 SavedData 持久化——模组的核心。
  4. v0.5.0 部分打包:任何材料到位订单就开工,不再要求整套凑齐。
  5. v0.5.1 基于 UUID 的仓库身份:仓库改造或部分破坏不再导致物品复制或丢失——被破坏的方块按 1/N 排干自己的份额。

效果

Repackager 数量 处理 1000 个包裹的订单
1 台(原版 Create) 约 1000 秒(约 17 分钟)
9 台(装本模组) 约 111 秒

CurseForge 下载量 1.2K+

学到的东西