Таймер исчезновения и наследование возраста (MC 26.2)
Этот документ описывает жизненный цикл исчезновения, перевод тиков в секунды, наследование возраста самого молодого предмета и защиту ферм в Minecraft 26.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 |
| Поведение при простое | Стандартный 5-минутный таймер при отсутствии новых предметов |
⏳ Математика перевода тиков в секунды
В 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 на $+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)Почему это защищает высокоэффективные фермы
- Проблема ванильного времени жизни: В ванильной механике при медленном сборе новые предметы, вливаясь в старые, могут исчезнуть через 10 секунд, если старый предмет лежал уже 4 минуты 50 секунд.
- Решение Item Clumps: Постоянный поток предметов на активных фермах мобов, авто-фермах дерева или карьерах непрерывно сбрасывает возраст скопления на
0. Пока ферма работает, предметы никогда не исчезнут. - Очистка бездействующих предметов: Когда ферма перестает производить дроп, скопление лежит неподвижно. Таймер возраста отсчитывает от $0$ до $6000$ тиков, удаляя предметы через 5 минут для предотвращения раздувания файла мира.
🛑 Безопасность задержки подбора
Чтобы игрок моментально не подобрал только что выброшенный из рук предмет, игра назначает pickupDelay (обычно 40 тиков = 2 секунды).
При слиянии предметов:
$$\text{pickupDelay}{\text{merged}} = \max(\text{pickupDelay}{\text{this}}, \text{pickupDelay}_{\text{other}})$$
Это гарантирует, что если игрок бросит предмет на лежащее скопление, оно не притянется мгновенно обратно в инвентарь до истечения задержки подбора.
💻 Исходный код реализации на Java
Из ItemEntityMixin.java в Minecraft 26.2:
// 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);