---
navigation:
  parent: example-setups/example-setups-index.md
  title: Sub-rede de "Tubo" de Itens/Fluidos
  icon: storage_bus
---

# Sub-rede de "Tubo" de Itens/Fluidos

Um método simples de emular um tubo de itens e/ou fluidos com [dispositivos](../ae2-mechanics/devices.md) do AE2, útil para, bem, qualquer coisa para a qual você usaria um tubo de itens ou fluidos.
Isso inclui retornar o resultado de uma fabricação para um <ItemLink id="pattern_provider" />.

Geralmente existem dois métodos diferentes para conseguir isso:

## Import Bus -> Storage Bus

<GameScene zoom="6" background="transparent">
  <ImportStructure src="../assets/assemblies/import_storage_pipe.snbt" />

<BoxAnnotation color="#dddddd" min="3.7 0 0" max="4 1 1">
        (1) Import Bus: Pode ser filtrado.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="1 0 0" max="1.3 1 1">
        (2) Storage Bus: Pode ser filtrado. Este (e outros storage busses que você quiser que sejam destino)
        devem ser os únicos storages na rede.
  </BoxAnnotation>

<DiamondAnnotation pos="4.5 0.5 0.5" color="#00ff00">
        Origem
    </DiamondAnnotation>

<DiamondAnnotation pos="0.5 0.5 0.5" color="#00ff00">
        Destino
    </DiamondAnnotation>

  <IsometricCamera yaw="195" pitch="30" />
</GameScene>

O <ItemLink id="import_bus" /> (1) no inventário de origem importa os itens ou fluidos e tenta armazená-los no [estoque da rede](../ae2-mechanics/import-export-storage.md).
Como o único armazenamento na rede é o <ItemLink id="storage_bus" /> (2) (por isso é uma sub-rede e não sua rede principal), os itens ou fluidos
são colocados no inventário de destino, assim sendo transferidos. A energia é fornecida através de um <ItemLink id="quartz_fiber" />.
Tanto o import bus quanto o storage bus podem ser filtrados, mas a configuração transferirá tudo que puder acessar caso não haja filtros aplicados.
Essa configuração também funciona com múltiplos import busses e múltiplos storage busses.

## Storage Bus -> Export Bus

<GameScene zoom="6" background="transparent">
  <ImportStructure src="../assets/assemblies/storage_export_pipe.snbt" />

<BoxAnnotation color="#dddddd" min="3.7 0 0" max="4 1 1">
        (1) Storage Bus: Pode ser filtrado. Este (e outros storage busses que você quiser que sejam origem)
        devem ser os únicos storages na rede.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="1 0 0" max="1.3 1 1">
        (2) Export Bus: Deve ser filtrado.
  </BoxAnnotation>

<DiamondAnnotation pos="4.5 0.5 0.5" color="#00ff00">
        Origem
    </DiamondAnnotation>

<DiamondAnnotation pos="0.5 0.5 0.5" color="#00ff00">
        Destino
    </DiamondAnnotation>

  <IsometricCamera yaw="195" pitch="30" />
</GameScene>

O <ItemLink id="export_bus" /> no inventário de destino tenta puxar os itens em seu filtro do [estoque da rede](../ae2-mechanics/import-export-storage.md).
Como o único armazenamento na rede é o <ItemLink id="storage_bus" /> (por isso é uma sub-rede e não sua rede principal), os itens ou fluidos
são puxados do inventário de origem, assim sendo transferidos. A energia é fornecida através de um <ItemLink id="quartz_fiber" />.
Como os export busses devem ser filtrados para funcionar, essa configuração só opera se você filtrar o export bus.
Essa configuração também funciona com múltiplos storage busses e múltiplos export busses.

## Uma Configuração Que Não Funciona (Import Bus -> Export Bus)

<GameScene zoom="6" background="transparent">
  <ImportStructure src="../assets/assemblies/import_export_pipe.snbt" />

<BoxAnnotation color="#dd3333" min="3.7 0 0" max="4 1 1">
        Import Bus: Como a rede não tem armazenamento, não há para onde importar.
  </BoxAnnotation>

<BoxAnnotation color="#dd3333" min="1 0 0" max="1.3 1 1">
        (2) Export Bus: Como a rede não tem armazenamento, não há nada para exportar.
  </BoxAnnotation>

<DiamondAnnotation pos="4.5 0.5 0.5" color="#ff0000">
        Origem
    </DiamondAnnotation>

<DiamondAnnotation pos="0.5 0.5 0.5" color="#ff0000">
        Destino
    </DiamondAnnotation>

  <IsometricCamera yaw="195" pitch="30" />
</GameScene>

Uma configuração apenas com um import bus e um export bus não funcionará. O import bus tentará puxar do inventário de origem
e armazenar os itens ou fluidos no estoque da rede. O export bus tentará puxar do estoque da rede e colocar os
itens ou fluidos no inventário de destino. Porém, como essa rede **não tem armazenamento**, o import bus não pode importar
e o export bus não pode exportar, então nada acontece.

## Entrada e Saída por 1 Face

Suponha que você tenha uma máquina que possa receber entrada e ter sua saída puxada por 1 face. (Como um <ItemLink id="charger" />)
Você pode tanto empurrar os ingredientes quanto puxar o resultado, combinando os 2 métodos de sub-rede de tubo:

<GameScene zoom="6" background="transparent">
  <ImportStructure src="../assets/assemblies/import_storage_export_pipe.snbt" />

<BoxAnnotation color="#dddddd" min="4 1 1" max="5 1.3 2">
        (1) Import Bus: Pode ser filtrado.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="2 1 1" max="3 1.3 2">
        (2) Storage Bus: Pode ser filtrado. Este (e outros storage busses que você quiser para empurrar e puxar itens)
        devem ser os únicos storages na rede.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="2 0 1" max="3 1 2">
        (3) Coisa Para a Qual Você Quer Empurrar e Puxar: Neste caso um Charger.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="0 1 1" max="1 1.3 2">
        (4) Export Bus: Deve ser filtrado.
  </BoxAnnotation>

<DiamondAnnotation pos="4.5 0.5 1.5" color="#00ff00">
        Origem
    </DiamondAnnotation>

<DiamondAnnotation pos="0.5 0.5 1.5" color="#00ff00">
        Destino
    </DiamondAnnotation>

  <IsometricCamera yaw="195" pitch="30" />
</GameScene>

## Interfaces

Acontece que existem [dispositivos](../ae2-mechanics/devices.md) além dos import busses e export busses que empurram itens para dentro
e puxam itens para fora do [estoque da rede](../ae2-mechanics/import-export-storage.md)!
De relevância aqui está o <ItemLink id="interface" />. Se um item for inserido que a interface não está configurada para estocar, a interface irá
empurrá-lo para o estoque da rede, que podemos explorar de modo semelhante ao tubo import bus -> storage bus. Configurar uma interface para
estocar algum item irá puxá-lo do estoque da rede, semelhante ao tubo storage bus -> export bus. Interfaces podem ser configuradas para
estocar algumas coisas e não estocar outras, permitindo que você empurre e puxe remotamente através de storage busses, caso por algum motivo queira fazer isso.

<GameScene zoom="6" background="transparent">
<ImportStructure src="../assets/assemblies/interface_pipes.snbt" />

<BoxAnnotation color="#dddddd" min="3.7 0 0" max="4 1 1">
        Interface
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="1 0 0" max="1.3 1 1">
        Storage Bus
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="3.7 0 2" max="4 1 3">
        Storage Bus
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="0 1 2" max="1 1.3 3">
        Storage Bus
  </BoxAnnotation>

<IsometricCamera yaw="195" pitch="30" />
</GameScene>

## Um-Para-Muitos e Muitos-Para-Um (e muitos-para-muitos)

Claro, você não precisa usar apenas um <ItemLink id="import_bus" /> ou <ItemLink id="export_bus" /> ou <ItemLink id="storage_bus" />

<GameScene zoom="3" background="transparent">
<ImportStructure src="../assets/assemblies/many_to_many_pipe.snbt" />

<IsometricCamera yaw="185" pitch="30" />
</GameScene>

## Fornecendo Para Múltiplos Lugares

A partir de tudo isso, podemos derivar um método para enviar ingredientes de uma face de <ItemLink id="pattern_provider" /> para muitos
locais diferentes, como uma matriz de máquinas, ou várias faces diferentes de uma máquina.

Nós não queremos um tubo import -> storage ou um tubo storage -> export porque o <ItemLink id="pattern_provider" /> nunca
realmente contém os ingredientes. Em vez disso, os provedores *empurram* os ingredientes para inventários adjacentes, então precisamos de algum 
inventário adjacente que também possa importar itens.

Isso soa como... uma <ItemLink id="interface" />!
Certifique-se que o provedor esteja no modo de subparte direcional ou plano e/ou a interface esteja no modo de subparte plano, assim os dois não formam uma conexão de rede.

<GameScene zoom="6" background="transparent">
<ImportStructure src="../assets/assemblies/provider_interface_storage.snbt" />

<BoxAnnotation color="#dddddd" min="2.7 0 1" max="3 1 2">
        Interface (deve ser plana, não um bloco cheio)
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="1 0 0" max="1.3 1 4">
        Storage Busses
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="0 0 0" max="1 1 4">
        Lugares para os quais você quer prover padrões (várias máquinas, ou várias faces de 1 máquina)
  </BoxAnnotation>

<IsometricCamera yaw="185" pitch="30" />
</GameScene>
