デスポーンタイマーと寿命継承 (MC 26.1.2)
本書では、Minecraft 26.1.2 におけるデスポーンのライフサイクル、時間計算、最新寿命継承ルール、トラップ保護機能を解説します。
📊 機能情報ボックス
| 項目 | 仕様 |
|---|---|
| システム名 | 最新寿命デスポーン保護システム |
| バニラの消滅時間 | $6,000\text{ ティック}$ ($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 |
⏳ ティックから秒への換算計算
Minecraftでは、エンティティのタイマーは毎秒20ティックで動作します:
$$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}$$
バニラでは、ItemEntity の内部フィールド age が毎tick $+1$ 加算されます。$\text{age} \ge 6000$ に達するとアイテムは消滅 (デスポーン) します。
🛡️ 最も新しいアイテムの保護ルール
Item Clumps で2つのアイテムが結合すると、残ったエンティティは以下を実行します:
$$\text{age}{\text{merged}} = \min(\text{age}{\text{this}}, \text{age}_{\text{other}})$$
稼働中のトラップ等でアイテムがドロップし続ける限り、寿命タイマーは 0 に更新され続けます。アイテムの生成が続く限り、消失することは絶対にありません。
生成が停止するとアイテムは地上に留まり、タイマーが6000ティックまで進行して5分後に安全に消滅します。
💻 実際のJavaソースコード実装
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();
}