消失计时与年龄繼承 (MC 26.1.2)
本文件深入解析 Minecraft 26.1.2 下 Item 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.age 与 ItemEntity.pickupDelay |
⏳ 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}})$$
活跃生怪塔、自動伐木场或采矿流水线中的连续物品掉落会反复将聚合体年龄刷新为 0。只要农场持續產出,物品就絕不會消失。
一旦农场停止產出,聚合体静止在地面,年龄计时器将从 $0$ 遞增到 $6000$,并在静止 5 分钟后安全清除所有未收集物品。
💻 真實源码实现参考
源自 Minecraft 26.1.2 的 ItemEntityMixin.java:
java
// Complete Merge: larger stack absorbs the smaller stack
if (otherCount < thisCount) {
thisStack.setCount(thisCount + otherCount);
this.setItem(thisStack);
this.pickupDelay = Math.max(this.pickupDelay, ((ItemEntityMixin)(Object)other).pickupDelay);
this.age = Math.min(this.age, ((ItemEntityMixin)(Object)other).age);
other.discard();
} else {
otherStack.setCount(thisCount + otherCount);
other.setItem(otherStack);
((ItemEntityMixin)(Object)other).pickupDelay = Math.max(((ItemEntityMixin)(Object)other).pickupDelay, this.pickupDelay);
((ItemEntityMixin)(Object)other).age = Math.min(((ItemEntityMixin)(Object)other).age, this.age);
this.discard();
}