Ограничения стаков по категориям
Обзор системы
Minecraft разделяет предметы на три основных уровня стакования через DataComponents.MAX_STACK_SIZE:
- Стакуемые до 64: Строительные блоки, ресурсы, базовые предметы (булыжник, земля, железо).
- Стакуемые до 16: Жемчуг Края, снежки, ведра, яйца, таблички.
- Нестакуемые (по 1 шт.): Инструменты, оружие, броня, зелья, седла, вагонетки.
🧮 Блок-схема вычисления размера стака
+--------------------------------+
| Расчет размера стака предмета|
+--------------------------------+
|
v
[ Проверка зарегистрированных ]
[ переопределений ]
(например, Potion Stacker Addon)
|
+----------------+----------------+
| |
Найдено правило? Нет переопределения
| |
v v
Вернуть лимит Проверить ванильный
DataComponent
|
+-----------------------------+-----------------------------+
| | |
Ванильный >= 64 Ванильный >= 16 Ванильный == 1
| | |
v v v
Вернуть `items_64_limit` Вернуть `items_16_limit` Вернуть `items_1_limit`💻 Логика на Java
Вычисление лимита выполняется в методе StackSizeManager.getModifiedStackSize:
java
public static int getModifiedStackSize(Item item, int original) {
if (original <= 0) {
return original;
}
// Применение зарегистрированных переопределений из аддонов (например, Potion Stacker)
int size = original;
for (BiFunction<Item, Integer, Integer> override : OVERRIDES) {
size = override.apply(item, size);
}
if (size != original) {
return size;
}
if (original >= 64) {
return limit64;
} else if (original >= 16) {
return limit16;
} else if (original == 1) {
return limit1;
}
return original;
}🛠️ Рекомендации по лимитам категорий
| Категория | По умолчанию | Рекомендуемый максимум | Профиль производительности |
|---|---|---|---|
| Стакуемые до 64 | 128 | $39,768,215$ | Высокая эффективность. Миллионные лимиты работают плавно. |
| Стакуемые до 16 | 32 | $39,768,215$ | Плавное масштабирование для жемчуга и яиц. |
| Нестакуемые | 1 | $39,768,215$ | Позволяет стаковать инструменты и зелья. |
