---
navigation:
  parent: ae2-mechanics/ae2-mechanics-index.md
  title: Автоматический крафт
  icon: pattern_provider
---

# Автоматический крафт

### Главное

<GameScene zoom="4" interactive={true}>
  <ImportStructure src="../assets/assemblies/autocraft_setup_greebles.snbt" />
  <IsometricCamera yaw="195" pitch="30" />
</GameScene>

Автоматический крафт — одна из основных функций AE2. Вместо того, чтобы вручную создавать нужное количество каждого подингредиента
и трудиться, как какой-то *простолюдин*, вы можете попросить свою систему ME сделать это за вас. Или автоматически создавать предметы и экспортировать их куда-то.
Или автоматически поддерживать определённое количество предметов на складе благодаря хитрому поведению. Это также работает с жидкостями, и, если у вас
есть определённые дополнения для дополнительных типов материалов из модов, таких как газы из Mekanism, то и эти материалы тоже. Это довольно круто.

Это довольно сложная тема, так что пристегнитесь и поехали.


Настройка автоматического крафта состоит из 3 вещей:
- Вещь, отправляющая запрос на крафт
- Центральный процессор крафта (CPU)
- <ItemLink id="pattern_provider" />.

Вот что происходит:

1.  Что-то создаёт запрос на крафт. Это можете быть вы в терминале, нажимающий на что-то, что можно автоматически создать,
    или шина экспорта или интерфейс с карточкой крафта, запрашивающей один из предметов, которые он настроен экспортировать/хранить.

*   (**ВАЖНО:** используйте то, что у вас привязано к "выбору блока" (обычно средняя кнопка мыши), чтобы запросить крафт чего-то, что у вас уже есть на складе, это может конфликтовать с модами для сортировки инвентаря),

2.  Система ME рассчитывает необходимые ингредиенты и предварительные шаги крафта для выполнения запроса и сохраняет их в выбранном центральном процессоре крафта

3.  <ItemLink id="pattern_provider" /> с соответствующим [паттерном](../items-blocks-machines/patterns.md) отправляет ингредиенты, указанные в паттерне, в любой смежный инвентарь.
    В случае рецепта из верстака («паттерн крафта») это будет <ItemLink id="molecular_assembler" />.
    В случае рецепта, не связанного с крафтом («паттерн обработки»), это будет какой-то другой блок, машина или сложная настройка, контролируемая редстоуном.

4.  Результат крафта каким-то образом возвращается в систему, будь то через шинопровод импорта, интерфейс или возврат результата обратно в поставщик паттернов.
    **Обратите внимание, что должно произойти событие "предмет вошёл в систему", вы не можете просто направить результат в сундук с <ItemLink id="storage_bus" /> на нём.**

5.  Если этот крафт является предпосылкой для другого крафта в запросе, предметы сохраняются в этом центральном процессоре крафта, а затем используются в этом крафте.

## Рекурсивные рецепты

<ItemImage id="minecraft:netherite_upgrade_smithing_template" scale="4" />

Одна вещь, с которой алгоритм автоматического крафта *не может* справиться, — это рекурсивные рецепты. Например, рецепты дублирования, такие как
«1 пыль красного камня = 2 пыли красного камня», полученные бросанием красного камня в резервуар маны Botania. Другим примером будут шаблоны ковки
в ванильном Minecraft. Однако, [есть способ обработки этих рецептов.](../example-setups/recursive-crafting-setup.md)

# Паттерны

<ItemImage id="crafting_pattern" scale="4" />

Паттерны создаются в <ItemLink id="pattern_encoding_terminal" /> из пустых паттернов.

Существует несколько различных типов паттернов для разных вещей:

*   <ItemLink id="crafting_pattern" /> кодируют рецепты, создаваемые верстаком. Их можно поместить прямо в <ItemLink id="molecular_assembler" />, чтобы он
    создавал результат каждый раз, когда ему дают ингредиенты, но их основное использование — в <ItemLink id="pattern_provider" /> рядом с молекулярным ассемблером.
    Поставщики паттернов ведут себя по-особому в этом случае и будут отправлять соответствующий паттерн вместе с ингредиентами в смежные ассемблеры.
    Поскольку ассемблеры автоматически выбрасывают результаты крафта в смежные инвентари, для автоматизации паттернов крафта достаточно иметь ассемблер на поставщике паттернов.

***

*   <ItemLink id="smithing_table_pattern" /> очень похожи на паттерны крафта, но они кодируют рецепты кузнечного стола. Они также автоматизируются поставщиком паттернов и молекулярным ассемблером и функционируют точно так же. На самом деле, паттерны крафта, ковки и распиловки могут использоваться в одной и той же установке.


***


*   <ItemLink id="stonecutting_pattern" /> очень похожи на паттерны крафта, но они кодируют рецепты камнерезного станка. Они также автоматизируются поставщиком паттернов и молекулярным ассемблером и функционируют точно так же. На самом деле, паттерны крафта, ковки и распиловки могут использоваться в одной и той же установке.

***


*   <ItemLink id="processing_pattern" /> — это то, откуда берётся большая гибкость в автоматическом крафте. Это наиболее обобщённый тип, просто
    говорящий: «если поставщик паттернов отправляет эти ингредиенты в смежные инвентари, система ME получит эти предметы в ближайшем или далёком будущем».
    Именно так вы будете автоматизировать крафт почти с любой машиной из модов, или печами и тому подобным. Поскольку они настолько
    общие в использовании и не заботятся о том, что происходит между отправкой ингредиентов и получением результата, вы можете делать действительно странные вещи, например, подавать
    ингредиенты в целую сложную производственную цепочку фабрики, которая будет сортировать вещи, брать другие ингредиенты из бесконечно производящих
    ферм, распечатывать весь сценарий фильма «Пчелиный фильм», системе ME всё равно, пока она получает результат, который указывает паттерн. На самом деле,
    ей даже всё равно, связаны ли ингредиенты каким-либо образом с результатом. Вы можете сказать ей: «1 доска вишнёвого дерева = 1 звезда Нижнего мира» и заставить
    свою ферму визеров убить визера при получении доски вишнёвого дерева, и это будет работать.


Поддерживается использование нескольких <ItemLink id="pattern_provider" /> с идентичными паттернами, и они работают параллельно. Кроме того, вы можете указать паттерн, например,
8 булыжника = 8 камня вместо 1 булыжника = 1 камень, и поставщик паттернов будет вставлять 8 булыжника в
вашу установку обжига каждый раз, а не по одному.

## Наиболее обобщённая форма «паттерна»

На самом деле существует ещё более «обобщённая» форма «паттерна», чем паттерн обработки. <ItemLink id="level_emitter" /> с карточкой крафта можно настроить
так, чтобы он излучал сигнал редстоуна для создания чего-либо. Этот «паттерн» не определяет и даже не заботится об ингредиентах.
Всё, что он говорит: «Если вы подадите редстоун с этого эмиттера уровня, система ME получит этот предмет в ближайшем или далёком будущем».
Это обычно используется для активации и деактивации бесконечных ферм, которым не требуются входные ингредиенты,
или для активации системы, которая обрабатывает рекурсивные рецепты (которые стандартный автоматический крафт не может понять), такие как, например, «1 булыжник = 2 булыжника»,
если у вас есть машина, которая удваивает булыжник.

# Центральный процессор крафта (CPU)

<GameScene zoom="4" background="transparent">
  <ImportStructure src="../assets/assemblies/crafting_cpus.snbt" />
  <IsometricCamera yaw="195" pitch="30" />
</GameScene>

Центральные процессоры крафта управляют запросами/заданиями на крафт. Они хранят промежуточные ингредиенты во время выполнения заданий на крафт с несколькими шагами
и влияют на то, насколько большими могут быть задания, и в некоторой степени на то, насколько быстро они завершаются. Это многоблочные структуры,
и они должны быть прямоугольными призмами с минимум одним хранилищем крафта.

Центральные процессоры крафта состоят из:

*   (Обязательно) [Хранилища крафта](../items-blocks-machines/crafting_cpu_multiblock.md), доступные во всех стандартных размерах ячеек (1к, 4к, 16к, 64к, 256к). Они хранят ингредиенты и
    промежуточные ингредиенты, участвующие в крафте, поэтому для того, чтобы процессор мог справляться с заданиями на крафт с большим количеством ингредиентов,
    требуются большие или более вместительные хранилища.
*   (Опционально) <ItemLink id="crafting_accelerator" />, они заставляют систему чаще отправлять пакеты ингредиентов от поставщиков паттернов.
    Это позволяет, например, поставщику паттернов, окружённому 6 молекулярными ассемблерами, отправлять ингредиенты (и, следовательно, использовать) все 6 одновременно, а не только один.
*   (Опционально) <ItemLink id="crafting_monitor" />, они отображают задание, которое в данный момент обрабатывает процессор. Их можно раскрашивать с помощью <ItemLink id="color_applicator" />
*   (Опционально) <ItemLink id="crafting_unit" />, они просто заполняют пространство, чтобы сделать процессор прямоугольной призмой.

Каждый центральный процессор крафта обрабатывает 1 запрос или задание, поэтому если вы хотите запросить одновременно процессор расчётов и 256 гладкого камня, вам нужно 2 многоблочные структуры процессора.

Они могут быть настроены на обработку запросов от игроков, автоматизации (экспортные шинопроводы и интерфейсы) или от обоих.

# Поставщики паттернов

<Row>
<BlockImage id="pattern_provider" scale="4" />

<BlockImage id="pattern_provider" p:push_direction="up" scale="4" />

<GameScene zoom="4" background="transparent">
  <ImportStructure src="../assets/blocks/cable_pattern_provider.snbt" />
</GameScene>
</Row>

<ItemLink id="pattern_provider" /> — это основной способ, с помощью которого ваша система автоматического крафта взаимодействует с миром. Они отправляют ингредиенты из
их [паттернов](../items-blocks-machines/patterns.md) в смежные инвентари, и в них можно вставлять предметы, чтобы внести их в сеть. Часто
канал можно сэкономить, направив выход машины обратно в ближайший поставщик паттернов (часто тот же, который отправил ингредиенты)
вместо использования <ItemLink id="import_bus" />, чтобы вытащить выход машины в сеть.

Важно отметить, что, поскольку они отправляют ингредиенты непосредственно из [хранилища крафта](../items-blocks-machines/crafting_cpu_multiblock.md#crafting-storage) в центральном процессоре крафта, они
никогда на самом деле не содержат ингредиенты в своем инвентаре, поэтому вы не можете извлечь из них. Вам нужно, чтобы поставщик отправлял
в другой инвентарь (например, бочку), а затем извлекал из этого.

Также важно отметить, что поставщик должен отправлять ВСЕ ингредиенты сразу, он не может отправлять половинчатые пакеты. Это полезно
для использования.

У поставщиков паттернов есть особое взаимодействие с интерфейсами на [подсетях](../ae2-mechanics/subnetworks.md): если интерфейс не изменён (ничего в слотах запроса)
поставщик полностью пропустит интерфейс и отправит напрямую на [хранилище](../ae2-mechanics/import-export-storage.md) этой подсети,
пропуская интерфейс и не заполняя его пакетами рецептов, и, что более важно, не вставляя следующую партию, пока в хранилище есть место.

Поддерживается использование нескольких поставщиков паттернов с идентичными паттернами, и они работают параллельно.

Поставщики паттернов будут пытаться равномерно распределять свои пакеты по всем своим граням, таким образом используя все прикреплённые машины параллельно.

## Варианты

Поставщики паттернов бывают 3 разных видов: обычные, направленные и плоские. Это влияет на то, на какие конкретные стороны они отправляют
ингредиенты, с каких сторон получают входы и к каким сторонам предоставляют подключение к сети.

*   Обычные поставщики паттернов отправляют ингредиенты на все стороны, получают входы со всех сторон и, как и большинство машин AE2, действуют
    как кабель, обеспечивая подключение к сети со всех сторон.

*   Нап