Skip to content

Ограничения стаков по категориям

Обзор системы

Minecraft разделяет предметы на три основных уровня стакования через DataComponents.MAX_STACK_SIZE:

  1. Стакуемые до 64: Строительные блоки, ресурсы, базовые предметы (булыжник, земля, железо).
  2. Стакуемые до 16: Жемчуг Края, снежки, ведра, яйца, таблички.
  3. Нестакуемые (по 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;
}

🛠️ Рекомендации по лимитам категорий

КатегорияПо умолчаниюРекомендуемый максимумПрофиль производительности
Стакуемые до 64128$39,768,215$Высокая эффективность. Миллионные лимиты работают плавно.
Стакуемые до 1632$39,768,215$Плавное масштабирование для жемчуга и яиц.
Нестакуемые1$39,768,215$Позволяет стаковать инструменты и зелья.

Official documentation & web portal for Dasik Igaijinn mods.