---
navigation:
  title: Ячейка массового хранения
  icon: bulk_item_cell
  parent: index.md
  position: 040
categories:
  - megacells
item_ids:
  - bulk_item_cell
  - bulk_cell_component
  - compression_card
  - decompression_module
---

# MEGA Cells: Ячейка массового хранения

Мы переходим к первой из *специализированных* ячеек хранения MEGA. Здесь начинается самое интересное.

## Ячейка массового хранения предметов

<Row>
  <ItemImage id="bulk_cell_component" scale="3" />
  <ItemImage id="bulk_item_cell" scale="3" />
</Row>

**MEGA-ячейка массового хранения** во многих отношениях является своего рода противоположностью [обычной ячейке хранения](ae2:items-blocks-machines/storage_cells.md).

В то время как стандартная ячейка способна хранить до 63 различных типов предметов, ячейка массового хранения может хранить только один тип. Само по себе это сделало бы ячейку довольно бесполезной, но у неё есть одно ключевое преимущество: в отличие от конечного количества предметов каждого типа в стандартной ячейке, ячейка массового хранения способна хранить ***бесконечное*** количество этого единственного типа предметов. И я действительно имею в виду *бесконечное*, по крайней мере, в практическом смысле. *(см. раздел «Техническая заумь» чуть ниже, если вам любопытно)*.

Также стоит отметить, что ячейку массового хранения нельзя скрафтить с использованием существующих корпусов ячеек от AE2 или MEGA — она требует собственного незеритового корпуса, который всегда крафтится с нуля вместе с соответствующим компонентом. По этой причине ячейку массового хранения также нельзя разобрать на компонент и корпус — впрочем, в этом всё равно не было бы особого смысла.

<Row>
  <RecipeFor id="bulk_cell_component" />
  <RecipeFor id="bulk_item_cell" />
</Row>

Только что скрафченная ячейка массового хранения ещё не работает; сначала её нужно *разметить* (отфильтровать), чтобы указать, какой предмет она будет хранить. Это делается с помощью <ItemLink id="ae2:cell_workbench" /> или нашего удобного <ItemLink id="portable_cell_workbench" />. Как только это будет сделано, ячейка начнёт принимать соответствующий предмет, даже становясь приоритетным и, вероятно, единственным местом, куда этот предмет будет отправляться с момента установки фильтра.

![Пустая ячейка](assets/diagrams/bulk_cell_empty.png)
![Размеченная ячейка](assets/diagrams/bulk_cell_partitioned.png)
![Ячейка с содержимым](assets/diagrams/bulk_cell_with_contents.png)

Как только ячейка начала принимать и хранить свой тип предметов, до тех пор, пока фильтр совпадает с уже содержащимся предметом, она будет продолжать функционировать, позволяя как вставку, так и извлечение, как обычная ячейка. Если же фильтр будет случайно очищен или заменен, ячейка выдаст ошибку и перестанет принимать новые предметы. Тем не менее, она позволит извлечь существующее содержимое в случае чрезвычайной ситуации или для восстановления, и как только оригинальный фильтр будет возвращен или ячейка будет полностью очищена (и получит новый непустой фильтр), она снова заработает в обычном режиме.

![Ошибка: фильтр пуст](assets/diagrams/bulk_cell_mismatch_1.png)
![Ошибка: фильтр не совпадает](assets/diagrams/bulk_cell_mismatch_2.png)

### Техническая заумь о ёмкости:

Обычно под «бесконечной ёмкостью» в модах Minecraft понимают максимально возможное значение определенного типа данных, например, лимит Java для «int» (около 2,14 миллиарда), «long» (около 9,2 *квинтиллиона*, или 9,2 \* 10^**18**) или даже «double» (который достигает *308* порядков, хотя он совершенно не подходит для работы с целыми количествами).

Ячейка массового хранения отбрасывает все эти примитивные типы и спроектирована так, чтобы удерживать любое произвольно большое количество, которое только может представить себе пользователь. Действительно, хотя любая МЭ-сеть сможет обрабатывать и отображать не более вышеупомянутых 9,2 квинтиллионов предметов одного типа, ячейка массового хранения внутренне способна выходить за этот предел, и, по крайней мере, намекать на то, что она это сделала.

![Количество (Long.MAX_VALUE - 1)](assets/diagrams/bulk_cell_max_count_1.png)
![Отображение при превышении Long.MAX_VALUE](assets/diagrams/bulk_cell_max_count_2.png)

## Массовое сжатие

<Row>
  <ItemImage id="compression_card" scale="3" />
</Row>

Итак, мы разобрались, как ячейка массового хранения работает как бездонная яма для любого типа предметов. Однако большинство игроков знают, что некоторые типы предметов — а именно ресурсы вроде *металлических слитков* — требуют особого подхода. Часто такие ресурсы принимают несколько форм: например, «блоки» для компактного хранения и «самородки» для крафта. Хотя обычно ими удобнее управлять вместе, обычная ячейка массового хранения в стандартном виде не справится с этой задачей.

Здесь вступает в игру механика ***массового сжатия*** благодаря **карте сжатия** — уникальной [карте улучшения](ae2:items-blocks-machines/upgrade_cards.md), созданной специально для ячейки массового хранения.

<RecipeFor id="compression_card" />

С включенным *сжатием* ячейка массового хранения начинает распознавать варианты ресурса, одинаково принимая их и автоматически «сжимая» при поступлении в форму следующего уровня. Это автоматическое сжатие работает согласно рецептам крафта: если по рецепту из одного (1) слитка получается девять (9) самородков и наоборот, то ячейка, настроенная на этот металл, будет принимать и слитки, и самородки, превращая каждые 9 вставленных самородков в слиток «на лету».

Более того, это автоматическое сжатие распространяется на *все* более высокие варианты, такие как блоки металла и даже ещё более сильно «сжатые» версии блоков из других модов, обрабатывая их как одну длинную «цепочку» вариантов от самого маленького до самого большого.

![Ячейка со сжатием](assets/diagrams/bulk_cell_compressed_1.png)

![Содержимое ячейки со сжатием](assets/diagrams/bulk_cell_compressed_2.png)
![Содержимое ячейки со сжатием (+ AllTheCompressed)](assets/diagrams/bulk_cell_compressed_3.png)

Чтобы эта механика работала, ячейка массового хранения внутренне отслеживает своё фактическое «количество» как число самых маленьких возможных «единиц», на которые можно разобрать ресурс — обычно это самородок, осколок, пыль или аналог. Вдоль всей цепочки ячейка со сжатием будет охотно принимать любые варианты, конвертируя их в единицы, и даже позволит *извлекать* любой из вариантов через автоматику — например, <ItemLink id="ae2:import_bus" /> и <ItemLink id="ae2:export_bus" /> — или через [терминал](ae2:items-blocks-machines/terminals.md) (при клике с зажатым *Shift*).

Если установлены моды на сильно сжатые блоки, может возникнуть желание ограничить уровень автосжатия, чтобы было проще отслеживать количество ресурса в конкретной форме (например, в слитках). Для этого ячейку массового хранения со сжатием можно поместить в верстак для ячеек и переключать её «порог сжатия» (**cutoff**), указывая высший вариант, который ячейка должна накапливать и на котором автосжатие должно остановиться. Щелчок левой кнопкой мыши понижает порог в сторону мелких единиц, правой — повышает в сторону блоков.

![Порог по умолчанию](assets/diagrams/bulk_cell_cutoff_1.png)
![Порог ниже](assets/diagrams/bulk_cell_cutoff_2.png)

![Содержимое при заданном пороге](assets/diagrams/bulk_cell_cutoff_3.png)

Когда сжатие включено, поведение при «несоответствии фильтра» становится более мягким: ячейка «запоминает», с какой цепочкой ей нужно работать, и если фильтр случайно снят, его можно заменить любым из связанных вариантов, а не только тем специфическим вариантом, который использовался ранее. Кроме того, в случае изменения рецептов крафта (добавления или удаления промежуточных ступеней), «коэффициент единицы» (сколько единиц в одном предмете данного варианта) также автоматически обновляется.

В крайнем случае, если ячейка массового хранения полностью «окирпичилась» и перешла в режим восстановления, любые мелкие остатки вариантов можно будет извлечь вместе с основным предметом.

## Модуль декомпрессии

<GameScene zoom="8" background="transparent">
  <ImportStructure src="assets/assemblies/decompression_module.snbt" />
  <IsometricCamera yaw="195" pitch="10" />
</GameScene>

Всё хорошо. Мы знаем, что со сжатием ячейка массового хранения легко работает с любыми вариантами при вводе/выводе игроком или устройствами вроде <ItemLink id="ae2:import_bus" />. А как насчет авто-крафта?

Здесь всё немного сложнее. В AE2 система [авто-крафта](ae2:ae2-mechanics/autocrafting.md) опирается на предположение «что видишь, то и имеешь». Если система хранения сообщает, например, только о 5 железных слитках, то система крафта решит, что (без специального [шаблона](ae2:ae2-mechanics/autocrafting.md#patterns)) у неё есть только эти 5 слитков, и не сможет запустить задачу, требующую больше. Проблема в том, что если на ячейке массового хранения слитков установлен порог сжатия выше (в блоки), то система хранения может сообщать максимум о 8 слитках в любой момент времени (так как остальные сжаты в блоки), из-за чего крафт не запустится.

Решением является **MEGA-модуль декомпрессии** — относительно простая часть кабеля, которая служит расширением системы авто-крафта сети.

<RecipeFor id="decompression_module" />

Когда модуль декомпрессии размещен в сети, он постоянно сканирует её на наличие подключенных ячеек массового хранения со сжатием и автоматически генерирует набор специальных «фейковых шаблонов» для каждой такой ячейки, охватывая все предметы в её цепочке вариантов. Эти шаблоны обрабатываются полностью внутренне, без необходимости в <ItemLink id="ae2:pattern_provider" /> или <ItemLink id="ae2:molecular_assembler" />, позволяя системе крафта работать как обычно, «крафтя» предметы, которые технически и так уже хранятся в сети.

![Шаблоны декомпрессии](assets/diagrams/bulk_cell_decompression.png)

Эти шаблоны реагируют на порог (cutoff), установленный на ячейке: шаблоны для вариантов меньше порога позволяют «разбирать» более высокие варианты на мелкие, а шаблоны для вариантов выше порога — «собирать» мелкие в крупные. В любом случае, все варианты по обе стороны порога автоматически учитываются при расчёте крафта.

Модуль также позволяет установить «глобальный» [приоритет](ae2:ae2-mechanics/autocrafting.md#priority) для всех этих шаблонов относительно обычной инфраструктуры крафта (например, если у вас есть свои шаблоны для тех же предметов), через меню приоритета (ПКМ по модулю).

Модуль декомпрессии работает по принципу «поставил и забыл», и обычно в сети достаточно одного модуля. ***ОДНАКО ИМЕЙТЕ В ВИДУ***, что модуль работает только в пределах одной сети и может отслеживать только те ячейки, что находятся в МЭ-накопителях или сундуках той же сети. Он ***НЕ БУДЕТ РАБОТАТЬ*** через [подсети](ae2:ae2-mechanics/subnetworks.md), так что убедитесь, что ваши массовые хранилища централизованы в основной сети.
