Skip to content

消失计时与年龄繼承 (MC 26.2)

本文件深入解析 Minecraft 26.2Item Clumps 的掉落物消失生命週期、Tick換算数学、最年轻年龄繼承規則与自動化农场保護機制。


📊 特性資訊框

属性技术规格
系统名称最年轻壽命消失保護器
原版消失閾值$6,000\text{ ticks}$($300\text{ 秒} = 5.0\text{ 分钟}$)
年龄繼承規則$\text{age}_{\text{merged}} = \min(\text{age}_A, \text{age}_B)$(保留最年轻年龄)
拾取延迟規則$\text{pickupDelay}_{\text{merged}} = \max(\text{pickupDelay}_A, \text{pickupDelay}_B)$(保留最长冷卻时间)
目標字段ItemEntity.ageItemEntity.pickupDelay
闲置消失行为无新物品合併时,标准 5 分钟倒數計時遞減

⏳ Tick 与秒数換算数学

在 Minecraft 中,實體计时器以每秒 20 个 tick 运行:

$$1\text{ second} = 20\text{ ticks}$$ $$1\text{ minute} = 60\text{ seconds} = 1,200\text{ ticks}$$ $$5\text{ minutes} = 300\text{ seconds} = 6,000\text{ ticks}$$

在原版 Minecraft 中,ItemEntity 每个游戏 tick 会将内部 age 字段加 1。当 $\text{age} \ge 6000$ 时,该物品会从世界上被永久清除。


🛡️ 最年轻掉落物安全繼承保護

在 Item Clumps 中两个物品合併时,留存的實體会执行:

$$\text{age}{\text{merged}} = \min(\text{age}{\text{this}}, \text{age}_{\text{other}})$$

  Existing Ground Clump                           Newly Dropped Item
  - Count: 500 Cobblestone                       - Count: 1 Cobblestone
  - Age: 5,800 ticks (4m 50s old)                - Age: 0 ticks (Brand new)
                 │                                              │
                 └──────────────────────┬───────────────────────┘
                                        │ (Item Clumps Merging)

                           Merged Mega-Stack Entity
                           - Count: 501 Cobblestone
                           - Age: min(5800, 0) = 0 ticks (Fresh 5-minute timer)

为什么这能保護高产农场

  • 原版壽命機制的缺陷:在原版中,若您的收集装置较慢,当新掉落的物品合併进较旧的物品时,如果宿主實體已经存在了 4 分 50 秒,新物品将在 10 秒后一起被清除。
  • Item Clumps 的解决方案:在活跃的生怪塔、自動樹場或采石场鑽機流水线中,源源不絕的物品流会不断将聚合實體的年龄刷新为 0。只要农场在持續產出,物品就絕不會意外消失
  • 静止清理機制:一旦农场停止產出且聚合堆静止在地面,年龄计时器会不受阻礙地从 $0$ 遞增到 $6000$,在静止 5 分钟后安全清除未收集的物品,防止世界存档无限膨脹。

🛑 拾取延迟冷卻安全機制

为防止玩家误按 Q 键丢出物品后瞬间又被自己吸回背包,Minecraft 为掉落物设定了 pickupDelay(通常为 40 ticks = 2 秒)。

当物品合併时:

$$\text{pickupDelay}{\text{merged}} = \max(\text{pickupDelay}{\text{this}}, \text{pickupDelay}_{\text{other}})$$

这确保了当玩家特意把手持物品扔到已有聚合体上时,整个聚合体不會立即吸回背包,直到拾取冷卻完全结束。


💻 真實源码实现参考

源自 Minecraft 26.2 的 ItemEntityMixin.java

java
// During Complete or Partial Merging:
this.pickupDelay = Math.max(this.pickupDelay, ((ItemEntityMixin)(Object)other).pickupDelay);
this.age = Math.min(this.age, ((ItemEntityMixin)(Object)other).age);

🔗 相关文件 (MC 26.2)

Official documentation & web portal for Dasik Igaijinn mods.