---
navigation:
  parent: example-setups/example-setups-index.md
  title: Subred de "Tubería" de Objetos/Fluidos
  icon: storage_bus
---

# Subred de "Tubería" de Objetos/Fluidos

Un método simple para emular una tubería de objetos y/o fluidos con [dispositivos](../ae2-mechanics/devices.md) de AE2, útil para, bueno, cualquier cosa para la que usarías una tubería de objetos o fluidos.
Esto incluye devolver el resultado de una fabricación a un <ItemLink id="pattern_provider" />.

Generalmente hay dos métodos diferentes para lograr esto:

## Bus de Importación -> Bus de Almacenamiento

<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) Bus de importación: Se puede filtrar.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="1 0 0" max="1.3 1 1">
        (2) Bus de almacenamiento: Se puede filtrar. Este (y otros buses de almacenamiento que quieras que sean un destino)
        debe ser el único almacenamiento en la red.
  </BoxAnnotation>

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

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

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

El <ItemLink id="import_bus" /> (1) en el inventario de origen importa los objetos o fluidos e intenta almacenarlos en el [almacenamiento de la red](../ae2-mechanics/import-export-storage.md).
Dado que el único almacenamiento en la red es el <ItemLink id="storage_bus" /> (2) (razón por la cual esto es una subred y no está en tu red principal), los objetos o fluidos
se colocan en el inventario de destino, siendo así transferidos. La energía se proporciona a través de una <ItemLink id="quartz_fiber" />.
Tanto el bus de importación como el bus de almacenamiento se pueden filtrar, pero la configuración transferirá todo lo que pueda acceder si no se aplican filtros.
Esta configuración también funciona con múltiples buses de importación y múltiples buses de almacenamiento.

## Bus de Almacenamiento -> Bus de Exportación

<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) Bus de almacenamiento: Se puede filtrar. Este (y otros buses de almacenamiento que quieras que sean una fuente)
        debe ser el único almacenamiento en la red.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="1 0 0" max="1.3 1 1">
        (2) Bus de exportación: Debe estar filtrado.
  </BoxAnnotation>

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

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

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

El <ItemLink id="export_bus" /> en el inventario de destino intenta extraer objetos en su filtro del [almacenamiento de la red](../ae2-mechanics/import-export-storage.md).
Dado que el único almacenamiento en la red es el <ItemLink id="storage_bus" /> (razón por la cual esto es una subred y no está en tu red principal), los objetos o fluidos
se extraen del inventario de origen, siendo así transferidos. La energía se proporciona a través de una <ItemLink id="quartz_fiber" />.
Debido a que los buses de exportación deben filtrarse para funcionar, esta configuración solo funciona si filtras el bus de exportación.
Esta configuración también funciona con múltiples buses de almacenamiento y múltiples buses de exportación.

## Una configuración que NO funciona (Bus de Importación -> Bus de Exportación)

<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">
        Bus de importación: Dado que la red no tiene almacenamiento, no hay ningún lugar donde importar.
  </BoxAnnotation>

<BoxAnnotation color="#dd3333" min="1 0 0" max="1.3 1 1">
        (2) Bus de exportación: Dado que la red no tiene almacenamiento, no hay nada que exportar.
  </BoxAnnotation>

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

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

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

Una configuración con solo un bus de importación y exportación no funcionará. El bus de importación intentará extraer del inventario de origen
y almacenar los objetos o fluidos en el almacenamiento de la red. El bus de exportación intentará extraer del almacenamiento de la red y poner los
objetos o fluidos en el inventario de destino. Sin embargo, dado que esta red **no tiene almacenamiento**, el bus de importación no puede importar
y el bus de exportación no puede exportar, por lo que no sucede nada.

## Entrada y salida a través de 1 cara

Supongamos que tienes alguna máquina que puede recibir entrada y tener su salida extraída a través de 1 cara (como un <ItemLink id="charger" />).
Puedes tanto empujar los ingredientes como sacar el resultado combinando los 2 métodos de subred de tubería:

<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) Bus de importación: Se puede filtrar.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="2 1 1" max="3 1.3 2">
        (2) Bus de almacenamiento: Se puede filtrar. Este (y otros buses de almacenamiento que quieras para empujar y extraer objetos)
        debe ser el único almacenamiento en la red.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="2 0 1" max="3 1 2">
        (3) Cosa a la que quieres empujar y de la que quieres extraer: En este caso, un Cargador.
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="0 1 1" max="1 1.3 2">
        (4) Bus de exportación: Debe estar filtrado.
  </BoxAnnotation>

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

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

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

## Interfaces

¡Resulta que hay [dispositivos](../ae2-mechanics/devices.md) además de los buses de importación y exportación que empujan objetos
y extraen objetos del [almacenamiento de la red](../ae2-mechanics/import-export-storage.md)!
De relevancia aquí es la <ItemLink id="interface" />. Si se inserta un objeto que la interfaz no está configurada para almacenar, la interfaz
lo empujará al almacenamiento de la red, lo cual podemos explotar de manera similar a la tubería de bus de importación -> bus de almacenamiento. Configurar una interfaz para
almacenar algún objeto lo extraerá del almacenamiento de la red, similar a la tubería de bus de almacenamiento -> bus de exportación. Las interfaces se pueden configurar para
almacenar algunas cosas y no otras, permitiéndote empujar y extraer remotamente a través de buses de almacenamiento, si por alguna razón quieres hacer eso.

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

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

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

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

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

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

## Uno a Muchos y Muchos a Uno (y muchos a muchos)

Por supuesto, no tienes que usar solo un <ItemLink id="import_bus" /> o <ItemLink id="export_bus" /> o <ItemLink id="storage_bus" />

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

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

## Proporcionar a múltiples lugares

De todo esto, podemos derivar un método para enviar ingredientes desde una cara de <ItemLink id="pattern_provider" /> a muchas
ubicaciones diferentes, como un conjunto de máquinas o varias caras diferentes de una máquina.

No queremos una tubería de importación -> almacenamiento o almacenamiento -> exportación porque el <ItemLink id="pattern_provider" /> nunca
contiene realmente los ingredientes. En cambio, los proveedores *empujan* los ingredientes a inventarios adyacentes, por lo que necesitamos algún
inventario adyacente que también pueda importar objetos.

Esto suena como... ¡una <ItemLink id="interface" />!
Asegúrate de que el proveedor esté en modo direccional o subparte plana y/o la interfaz esté en modo subparte plana, para que los dos no formen una conexión de red.

<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">
        Interfaz (debe ser plana, no bloque completo)
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="1 0 0" max="1.3 1 4">
        Buses de almacenamiento
  </BoxAnnotation>

<BoxAnnotation color="#dddddd" min="0 0 0" max="1 1 4">
        Lugares a los que quieres proveer patrones (múltiples máquinas o múltiples caras de 1 máquina)
  </BoxAnnotation>

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