From e6a49c386f12468076009f3a75a8b079543c1ea3 Mon Sep 17 00:00:00 2001
From: Sea-Kerman <41390862+Sea-Kerman@users.noreply.github.com>
Date: Fri, 10 Nov 2023 12:43:41 -0800
Subject: [PATCH] Guidebook (#7465)
---
.../import_storage_export_pipe.snbt | 23 ++++
.../assemblies/import_storage_pipe.snbt | 8 +-
.../assemblies/interface_internals.snbt | 80 +++++++++++++
.../assets/assemblies/interface_pipes.snbt | 25 ++++
.../assemblies/interface_storage_pipe.snbt | 17 +++
.../assets/assemblies/many_to_many_pipe.snbt | 48 ++++++++
.../provider_interface_storage.snbt | 25 ++++
guidebook/example-setups/pipe-subnet.md | 108 +++++++++++++++---
.../items-blocks-machines/cell_workbench.md | 6 +-
guidebook/items-blocks-machines/export_bus.md | 4 +-
.../items-blocks-machines/formation_plane.md | 4 +-
guidebook/items-blocks-machines/import_bus.md | 4 +-
guidebook/items-blocks-machines/interface.md | 62 +++++++++-
.../items-blocks-machines/level_emitter.md | 4 +
.../items-blocks-machines/pattern_provider.md | 44 +++++++
.../items-blocks-machines/storage_bus.md | 7 +-
guidebook/items-blocks-machines/terminals.md | 13 ++-
17 files changed, 448 insertions(+), 34 deletions(-)
create mode 100644 guidebook/assets/assemblies/import_storage_export_pipe.snbt
create mode 100644 guidebook/assets/assemblies/interface_internals.snbt
create mode 100644 guidebook/assets/assemblies/interface_pipes.snbt
create mode 100644 guidebook/assets/assemblies/interface_storage_pipe.snbt
create mode 100644 guidebook/assets/assemblies/many_to_many_pipe.snbt
create mode 100644 guidebook/assets/assemblies/provider_interface_storage.snbt
diff --git a/guidebook/assets/assemblies/import_storage_export_pipe.snbt b/guidebook/assets/assemblies/import_storage_export_pipe.snbt
new file mode 100644
index 00000000000..e189ff24f9b
--- /dev/null
+++ b/guidebook/assets/assemblies/import_storage_export_pipe.snbt
@@ -0,0 +1,23 @@
+{
+ DataVersion: 3465,
+ size: [5, 2, 2],
+ data: [
+ {pos: [0, 0, 0], state: "minecraft:oak_wall_sign{facing:north,waterlogged:false}", nbt: {back_text: {color: "black", has_glowing_text: 0b, messages: ['{"text":""}', '{"text":""}', '{"text":""}', '{"text":""}']}, front_text: {color: "black", has_glowing_text: 0b, messages: ['{"text":"CHARGED"}', '{"text":"CERTUS"}', '{"text":""}', '{"text":""}']}, id: "minecraft:sign", is_waxed: 0b}},
+ {pos: [0, 0, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [2, 0, 1], state: "ae2:charger{facing:north,spin:0}", nbt: {id: "ae2:charger", internalCurrentPower: 1600.0d, inv: {item0: {}}, proxy: {p: 0}, visual: {}}},
+ {pos: [4, 0, 0], state: "minecraft:oak_wall_sign{facing:north,waterlogged:false}", nbt: {back_text: {color: "black", has_glowing_text: 0b, messages: ['{"text":""}', '{"text":""}', '{"text":""}', '{"text":""}']}, front_text: {color: "black", has_glowing_text: 0b, messages: ['{"text":"CERTUS"}', '{"text":""}', '{"text":""}', '{"text":""}']}, id: "minecraft:sign", is_waxed: 0b}},
+ {pos: [4, 0, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:pink_smart_cable", visual: {channelsEast: 3, connections: ["east"], missingChannel: 0b, powered: 1b}}, down: {config: [{"#": 0L, "#c": "ae2:i", id: "ae2:charged_certus_quartz_crystal"}], craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:pink_smart_cable", visual: {channelsEast: 3, channelsWest: 3, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [2, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:pink_smart_cable", visual: {channelsEast: 3, channelsWest: 3, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:pink_smart_cable", visual: {channelsEast: 3, channelsWest: 3, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:pink_smart_cable", visual: {channelsWest: 3, connections: ["west"], missingChannel: 0b, powered: 1b}}, down: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}}
+ ],
+ entities: [],
+ palette: [
+ "minecraft:oak_wall_sign{facing:north,waterlogged:false}",
+ "minecraft:barrel{facing:north,open:false}",
+ "ae2:charger{facing:north,spin:0}",
+ "ae2:cable_bus{light_level:0,waterlogged:false}"
+ ]
+}
\ No newline at end of file
diff --git a/guidebook/assets/assemblies/import_storage_pipe.snbt b/guidebook/assets/assemblies/import_storage_pipe.snbt
index c09220b8601..354917a890c 100644
--- a/guidebook/assets/assemblies/import_storage_pipe.snbt
+++ b/guidebook/assets/assemblies/import_storage_pipe.snbt
@@ -1,11 +1,11 @@
{
- DataVersion: 3337,
+ DataVersion: 3465,
size: [5, 1, 1],
data: [
{pos: [0, 0, 0], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
- {pos: [1, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {g: 15089L, k: -1L, p: 1}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {g: 15089L, k: -1L, p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
- {pos: [2, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {g: 15089L, k: -1L, p: 1}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {gn: {g: 15089L, k: -1L, p: 0}, id: "ae2:quartz_fiber", outer: {g: 367L, k: -1L, p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
- {pos: [3, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {g: 15089L, k: -1L, p: 1}, id: "ae2:orange_smart_cable", visual: {channelsWest: 2, connections: ["west"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {g: 15089L, k: -1L, p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [1, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [2, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsWest: 2, connections: ["west"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
{pos: [4, 0, 0], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}}
],
entities: [],
diff --git a/guidebook/assets/assemblies/interface_internals.snbt b/guidebook/assets/assemblies/interface_internals.snbt
new file mode 100644
index 00000000000..cd8d3fe3f32
--- /dev/null
+++ b/guidebook/assets/assemblies/interface_internals.snbt
@@ -0,0 +1,80 @@
+{
+ DataVersion: 3465,
+ size: [13, 5, 3],
+ data: [
+ {pos: [1, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 0, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [2, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [3, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [4, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsSouth: 0, channelsWest: 0, connections: ["south", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [4, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsNorth: 0, channelsUp: 4, connections: ["up", "north", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [5, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [5, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [6, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [6, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [7, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [7, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [8, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [8, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [9, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, visual: {}}},
+ {pos: [9, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [10, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsUp: 0, channelsWest: 0, connections: ["up", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [10, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsUp: 4, channelsWest: 4, connections: ["up", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [1, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 1, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [2, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 2, channelsWest: 1, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [3, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 3, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [4, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsSouth: 4, channelsWest: 3, connections: ["south", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [4, 1, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsDown: 4, channelsNorth: 4, connections: ["down", "north"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [5, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 1, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [6, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 2, channelsWest: 1, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [7, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 3, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [8, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 4, channelsWest: 3, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [9, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 5, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", up: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
+ {pos: [10, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsDown: 0, channelsSouth: 5, channelsWest: 5, connections: ["down", "south", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [10, 1, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:fluix_smart_dense_cable", visual: {channelsDown: 4, channelsNorth: 5, channelsUp: 9, connections: ["down", "up", "north"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [1, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [2, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [3, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [4, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [5, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [6, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [7, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [8, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [9, 2, 1], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [10, 2, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_dense_cable", visual: {channelsDown: 9, channelsEast: 18, channelsUp: 9, connections: ["down", "up", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [11, 2, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_dense_cable", visual: {channelsEast: 18, channelsWest: 18, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [1, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 1, connections: ["east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [2, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 2, channelsWest: 1, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 3, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsSouth: 4, channelsWest: 3, connections: ["south", "west"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 3, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsNorth: 4, channelsUp: 4, connections: ["up", "north"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [5, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 1, connections: ["east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [6, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 2, channelsWest: 1, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [7, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 3, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [8, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 4, channelsWest: 3, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [9, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 5, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_only: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:export_bus", nextSlot: 0, redstone_controlled: "IGNORE", scheduling_mode: "DEFAULT", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [10, 3, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsSouth: 5, channelsUp: 0, channelsWest: 5, connections: ["up", "south", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [10, 3, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:fluix_smart_dense_cable", visual: {channelsDown: 9, channelsNorth: 5, channelsUp: 4, connections: ["down", "up", "north"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [1, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 0, connections: ["east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [2, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsSouth: 0, channelsWest: 0, connections: ["south", "west"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 4, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsDown: 4, channelsEast: 4, channelsNorth: 0, connections: ["down", "north", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [5, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, connections: ["east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [5, 4, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [6, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [6, 4, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [7, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [7, 4, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [8, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [8, 4, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [9, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 0, channelsWest: 0, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {craft_via_redstone: "NO", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:level_emitter", lastReportedValue: 0L, prevState: 1b, redstone_emitter: "HIGH_SIGNAL", reportingValue: 0L, visual: {missingChannel: 0b, on: 1b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [9, 4, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsEast: 4, channelsWest: 4, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [10, 4, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsDown: 0, channelsWest: 0, connections: ["down", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [10, 4, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:cyan_smart_cable", visual: {channelsDown: 4, channelsWest: 4, connections: ["down", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}}
+ ],
+ entities: [],
+ palette: [
+ "ae2:cable_bus{light_level:0,waterlogged:false}",
+ "minecraft:barrel{facing:north,open:false}"
+ ]
+}
\ No newline at end of file
diff --git a/guidebook/assets/assemblies/interface_pipes.snbt b/guidebook/assets/assemblies/interface_pipes.snbt
new file mode 100644
index 00000000000..e776240552f
--- /dev/null
+++ b/guidebook/assets/assemblies/interface_pipes.snbt
@@ -0,0 +1,25 @@
+{
+ DataVersion: 3465,
+ size: [5, 2, 3],
+ data: [
+ {pos: [0, 0, 0], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 0, 2], state: "minecraft:hopper{enabled:true,facing:down}", nbt: {Items: [], TransferCooldown: 0, id: "minecraft:hopper"}},
+ {pos: [1, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 1}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsEast: 2, channelsUp: 2, connections: ["up", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [2, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 1}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [2, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsEast: 2, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 1}, id: "ae2:orange_smart_cable", visual: {channelsWest: 2, connections: ["west"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:cable_interface", priority: 0, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsWest: 2, connections: ["west"], missingChannel: 0b, powered: 1b}}, east: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 0, 0], state: "minecraft:hopper{enabled:true,facing:west}", nbt: {Items: [], TransferCooldown: 0, id: "minecraft:hopper"}},
+ {pos: [4, 0, 2], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 1, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsEast: 2, connections: ["east"], missingChannel: 0b, powered: 1b}}, down: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:cable_interface", priority: 0, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [1, 1, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsDown: 2, channelsWest: 2, connections: ["down", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}}
+ ],
+ entities: [],
+ palette: [
+ "minecraft:barrel{facing:north,open:false}",
+ "minecraft:hopper{enabled:true,facing:down}",
+ "ae2:cable_bus{light_level:0,waterlogged:false}",
+ "minecraft:hopper{enabled:true,facing:west}"
+ ]
+}
\ No newline at end of file
diff --git a/guidebook/assets/assemblies/interface_storage_pipe.snbt b/guidebook/assets/assemblies/interface_storage_pipe.snbt
new file mode 100644
index 00000000000..f9d908ad579
--- /dev/null
+++ b/guidebook/assets/assemblies/interface_storage_pipe.snbt
@@ -0,0 +1,17 @@
+{
+ DataVersion: 3465,
+ size: [5, 1, 1],
+ data: [
+ {pos: [0, 0, 0], state: "minecraft:barrel{facing:north,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [1, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 1}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [2, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 1}, id: "ae2:orange_smart_cable", visual: {channelsEast: 2, channelsWest: 2, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 1}, id: "ae2:orange_smart_cable", visual: {channelsWest: 2, connections: ["west"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:cable_interface", priority: 0, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 0, 0], state: "minecraft:hopper{enabled:true,facing:west}", nbt: {Items: [], TransferCooldown: 0, id: "minecraft:hopper"}}
+ ],
+ entities: [],
+ palette: [
+ "minecraft:barrel{facing:north,open:false}",
+ "ae2:cable_bus{light_level:0,waterlogged:false}",
+ "minecraft:hopper{enabled:true,facing:west}"
+ ]
+}
\ No newline at end of file
diff --git a/guidebook/assets/assemblies/many_to_many_pipe.snbt b/guidebook/assets/assemblies/many_to_many_pipe.snbt
new file mode 100644
index 00000000000..957675aeb0b
--- /dev/null
+++ b/guidebook/assets/assemblies/many_to_many_pipe.snbt
@@ -0,0 +1,48 @@
+{
+ DataVersion: 3465,
+ size: [15, 1, 4],
+ data: [
+ {pos: [0, 0, 0], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 0, 1], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 0, 2], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 0, 3], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [1, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsSouth: 8, connections: ["south"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsEast: 8, channelsNorth: 8, channelsSouth: 8, connections: ["north", "south", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsNorth: 8, channelsSouth: 8, connections: ["north", "south"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 0, 3], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsNorth: 8, connections: ["north"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [2, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsEast: 8, channelsWest: 8, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, down: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsSouth: 8, connections: ["south"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 1, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsNorth: 8, channelsSouth: 8, channelsWest: 8, connections: ["north", "south", "west"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsNorth: 8, channelsSouth: 8, connections: ["north", "south"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 3], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:red_smart_cable", visual: {channelsNorth: 8, connections: ["north"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [4, 0, 0], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [4, 0, 1], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [4, 0, 2], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [4, 0, 3], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [6, 0, 0], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [6, 0, 1], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [6, 0, 2], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [6, 0, 3], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [7, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsSouth: 5, connections: ["south"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [7, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsEast: 5, channelsNorth: 5, channelsSouth: 5, connections: ["north", "south", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [7, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsNorth: 5, channelsSouth: 5, connections: ["north", "south"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [7, 0, 3], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsNorth: 5, connections: ["north"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [8, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsWest: 5, connections: ["west"], missingChannel: 0b, powered: 1b}}, down: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [9, 0, 1], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [11, 0, 1], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [12, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsEast: 5, connections: ["east"], missingChannel: 0b, powered: 1b}}, down: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [13, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsSouth: 5, connections: ["south"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [13, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsNorth: 5, channelsSouth: 5, channelsWest: 5, connections: ["north", "south", "west"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [13, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsNorth: 5, channelsSouth: 5, connections: ["north", "south"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 1, id: "ae2:cable_bus", visual: {}}},
+ {pos: [13, 0, 3], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsNorth: 5, connections: ["north"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [14, 0, 0], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [14, 0, 1], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [14, 0, 2], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [14, 0, 3], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}}
+ ],
+ entities: [],
+ palette: [
+ "minecraft:barrel{facing:up,open:false}",
+ "ae2:cable_bus{light_level:0,waterlogged:false}"
+ ]
+}
\ No newline at end of file
diff --git a/guidebook/assets/assemblies/provider_interface_storage.snbt b/guidebook/assets/assemblies/provider_interface_storage.snbt
new file mode 100644
index 00000000000..c27a31ccc78
--- /dev/null
+++ b/guidebook/assets/assemblies/provider_interface_storage.snbt
@@ -0,0 +1,25 @@
+{
+ DataVersion: 3465,
+ size: [6, 2, 4],
+ data: [
+ {pos: [0, 0, 0], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 0, 1], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 0, 2], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [0, 0, 3], state: "minecraft:barrel{facing:up,open:false}", nbt: {Items: [], id: "minecraft:barrel"}},
+ {pos: [1, 0, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsSouth: 5, connections: ["south"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsEast: 5, channelsNorth: 5, channelsSouth: 5, connections: ["north", "south", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 0, 2], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsNorth: 5, channelsSouth: 5, connections: ["north", "south"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [1, 0, 3], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsNorth: 5, connections: ["north"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}, west: {access: "READ_WRITE", filter_on_extract: "YES", fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:storage_bus", priority: 0, storage_filter: "EXTRACTABLE_ONLY", visual: {missingChannel: 0b, powered: 1b}}}},
+ {pos: [2, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsUp: 5, channelsWest: 5, connections: ["up", "west"], missingChannel: 0b, powered: 1b}}, east: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:cable_interface", priority: 0, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 0, 1], state: "ae2:pattern_provider{push_direction:west}", nbt: {blocking_mode: "NO", id: "ae2:pattern_provider", lock_crafting_mode: "NONE", pattern_access_terminal: "YES", priority: 0, proxy: {p: 0}, returnInv: [], sendList: [], visual: {}}},
+ {pos: [4, 0, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsEast: 1, channelsWest: 1, connections: ["west", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [2, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsDown: 5, connections: ["down"], missingChannel: 0b, powered: 1b}}, east: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
+ {pos: [3, 1, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:blue_smart_cable", visual: {channelsDown: 1, channelsWest: 1, connections: ["down", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}}
+ ],
+ entities: [],
+ palette: [
+ "minecraft:barrel{facing:up,open:false}",
+ "ae2:cable_bus{light_level:0,waterlogged:false}",
+ "ae2:pattern_provider{push_direction:west}"
+ ]
+}
\ No newline at end of file
diff --git a/guidebook/example-setups/pipe-subnet.md b/guidebook/example-setups/pipe-subnet.md
index 2dc41b410a7..039daeebe3f 100644
--- a/guidebook/example-setups/pipe-subnet.md
+++ b/guidebook/example-setups/pipe-subnet.md
@@ -103,30 +103,110 @@ and store the items or fluid in network storage. The export bus will attempt to
items or fluid in the destination inventory. However since this network **has no storage**, the import bus can't import
and the export bus can't export, so nothing happens.
-## A Pipe-Like Subnet
+## Inputting And Outputting Through 1 Face
+
+Say you have some machine that can receive input and have its output pulled through 1 face. (Like a )
+You can both push in the ingredients and pull out the result, by combining the 2 pipe subnet methods:
-
+
+
+
+ (1) Import Bus: Can be filtered.
+
-
- Interface: Since it is not configured to keep anything in stock, it tries to dump everything in its inventory slots
- into network storage.
+
+ (2) Storage Bus: Can be filtered. This (and other storage busses you want to push and pull items)
+ must be the only storage on the network.
-
- Storage Bus: "Network Storage" for the interface to dump into. Can be filtered.
+
+ (3) Thing You Want To Push To And Pull From: In this case a Charger.
-
- Storage Bus: "Network Storage" for the interface to dump into. Can be filtered.
+
+ (4) Export Bus: Must be filtered.
-
+
+ Source
+
+
+
+ Destination
+
+
+
-It turns out there are [devices](../ae2-mechanics/devices.md) besides import busses that push items into [network storage](../ae2-mechanics/import-export-storage.md)!
+## Interfaces
+
+It turns out there are [devices](../ae2-mechanics/devices.md) besides import busses and export busses that push items into
+and pull items out of [network storage](../ae2-mechanics/import-export-storage.md)!
Of relevance here is the . If an item is inserted that the interface is not set to stock, the interface will
-push it to network storage, which we can exploit similarly to the import bus -> storage bus pipe. This setup is of particular
-utility with a since an import bus can't extract recipe ingredients from it. Just make sure
-the provider is in directional or flat subpart mode and/or the interface is in flat subpart mode, so the two don't form a network
+push it to network storage, which we can exploit similarly to the import bus -> storage bus pipe. Setting an interface to
+stock some item will pull it from network storage, similar to the storage bus -> export bus pipe. Interfaces can be set to
+stock some things and not stock others, allowing you to remotely push and pull through storage busses, if you for some reason want to do that.
+
+
+
+
+
+ Interface
+
+
+
+ Storage Bus
+
+
+
+ Storage Bus
+
+
+
+ Storage Bus
+
+
+
+
+
+## One-To-Many and Many-To One (and many-to-many)
+
+Of course, you don't have to use just one or or
+
+
+
+
+
+
+
+## Providing To Multiple Places
+
+From all this, we can derive a method to send ingredients from one face to many different
+locations, like an array of machines, or several different faces of one machine.
+
+We don't want an import -> storage pipe or a storage -> export pipe because the never
+actually contains the ingredients. Instead, providers *push* the ingredients to adjacent inventories, so we need some
+adjacent inventory that can also import items.
+
+This sounds like... an !
+Make sure the provider is in directional or flat subpart mode and/or the interface is in flat subpart mode, so the two don't form a network
connection.
+
+
+
+
+
+ Interface (must be flat, not fullblock)
+
+
+
+ Storage Busses
+
+
+
+ Places you want to pattern-provide to (multiple machines, or multiple faces of 1 machine)
+
+
+
+
\ No newline at end of file
diff --git a/guidebook/items-blocks-machines/cell_workbench.md b/guidebook/items-blocks-machines/cell_workbench.md
index 17f26210953..629332ae174 100644
--- a/guidebook/items-blocks-machines/cell_workbench.md
+++ b/guidebook/items-blocks-machines/cell_workbench.md
@@ -16,9 +16,11 @@ item_ids:
The Cell Workbench allows you to configure [storage cells](storage_cells.md) and s.
-You can add upgrade cards and configure "partitions" to filter what the cell will store.
+You can add [upgrade cards](upgrade_cards.md) and configure "partitions" to filter what the cell will store.
-Items can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+Items and fluids can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+
+Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as a filter instead of the bucket or tank item.
## Settings
diff --git a/guidebook/items-blocks-machines/export_bus.md b/guidebook/items-blocks-machines/export_bus.md
index 4b09ac8cd3a..461c0f03c85 100644
--- a/guidebook/items-blocks-machines/export_bus.md
+++ b/guidebook/items-blocks-machines/export_bus.md
@@ -29,7 +29,9 @@ They are [cable subparts](../ae2-mechanics/cable-subparts.md).
By default the bus will not export anything. Items inserted into its filter slots will act as a whitelist,
allowing those specific items to be exported.
-Items can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+Items and fluids can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+
+Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as a filter instead of the bucket or tank item.
## Upgrades
diff --git a/guidebook/items-blocks-machines/formation_plane.md b/guidebook/items-blocks-machines/formation_plane.md
index 5948560180b..067a187ba3d 100644
--- a/guidebook/items-blocks-machines/formation_plane.md
+++ b/guidebook/items-blocks-machines/formation_plane.md
@@ -37,7 +37,9 @@ They are [cable subparts](../ae2-mechanics/cable-subparts.md).
By default the plane will place/drop anything. Items inserted into its filter slots will act as a whitelist, only
allowing those specific items to be placed.
-Items can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+Items and fluids can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+
+Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as a filter instead of the bucket or tank item.
## Priority
diff --git a/guidebook/items-blocks-machines/import_bus.md b/guidebook/items-blocks-machines/import_bus.md
index 90adda2921a..d355945d5d3 100644
--- a/guidebook/items-blocks-machines/import_bus.md
+++ b/guidebook/items-blocks-machines/import_bus.md
@@ -29,7 +29,9 @@ They are [cable subparts](../ae2-mechanics/cable-subparts.md).
By default the bus will import anything it has access to. Items inserted into its filter slots will act as a whitelist, only
allowing those specific items to be imported.
-Items can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+Items and fluids can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+
+Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as a filter instead of the bucket or tank item.
## Upgrades
diff --git a/guidebook/items-blocks-machines/interface.md b/guidebook/items-blocks-machines/interface.md
index 0ddc1c1798a..55a3e2cc494 100644
--- a/guidebook/items-blocks-machines/interface.md
+++ b/guidebook/items-blocks-machines/interface.md
@@ -29,6 +29,49 @@ They're essentially just chests/multi-fluid tanks with some extra functionality,
them disconnected from any networks.
Thus, they are useful in some niche cases where you want to store a small amount of a bunch of different stuff.
+## How An Interface Works Internally
+
+As previously stated, an interface is essentially a chest/tank with some super duper ses and
+ses attached, with a bunch of s.
+
+
+
+
+
+ A bunch of level emitters to control the requested stocking quantity
+
+
+
+
+
+
+ A bunch of level emitters to control the requested stocking quantity
+
+
+
+
+
+
+ A bunch of super duper import busses that can transfer 1 stack per gametick
+
+
+
+
+
+
+ A bunch of super duper export busses that can transfer 1 stack per gametick
+
+
+
+
+
+
+ 9 separate internal slots
+
+
+
+
+
## Special Interactions
Interfaces also have a few special functionalities with other AE2 [devices](../ae2-mechanics/devices.md):
@@ -47,8 +90,21 @@ the provider will skip the interface entirely and push directly to that subnet's
skipping the interface and not filling it with recipe batches, and more importantly, not inserting the next batch until there's space in storage.
-
-
+
+
+
+ Interface (must be flat, not fullblock)
+
+
+
+ Storage Busses
+
+
+
+ Places you want to pattern-provide to (multiple machines, or multiple faces of 1 machine)
+
+
+
## Variants
@@ -69,6 +125,8 @@ Interfaces can be swapped between normal and flat in a crafting grid.
The upper slots in the interface determine what the interface is set to stock inside itself. When something is placed in
them or dragged from JEI/REI, a wrench appears that lets you set the quantity.
+Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as a filter instead of the bucket or tank item.
+
## Upgrades
The interface supports the following [upgrades](upgrade_cards.md):
diff --git a/guidebook/items-blocks-machines/level_emitter.md b/guidebook/items-blocks-machines/level_emitter.md
index eb59a78962f..7bd1a98d20e 100644
--- a/guidebook/items-blocks-machines/level_emitter.md
+++ b/guidebook/items-blocks-machines/level_emitter.md
@@ -23,6 +23,10 @@ The Level Emitter emits a redstone signal depending on the quantity of an item i
There is also a version that emits a redstone signal depending on the [energy](../ae2-mechanics/energy.md) stored
in your network.
+Items and fluids can be dragged into the slot from JEI/REI even if you don't actually have any of that item.
+
+Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as a filter instead of the bucket or tank item.
+
They are [cable subparts](../ae2-mechanics/cable-subparts.md).
Unlike other [devices](../ae2-mechanics/devices.md), level emitters *do not* require a [channel](../ae2-mechanics/channels.md).
diff --git a/guidebook/items-blocks-machines/pattern_provider.md b/guidebook/items-blocks-machines/pattern_provider.md
index 64ad9605058..d8ea3d439f0 100644
--- a/guidebook/items-blocks-machines/pattern_provider.md
+++ b/guidebook/items-blocks-machines/pattern_provider.md
@@ -44,9 +44,53 @@ You can use this to pattern provide into multiple sides of a machine, or multipl
+
+ (1) Pattern Provider: The directional variant, via use of a certus quartz wrench, with the relevant processing patterns.
+
+ 
+
+
+
+ (2) Interface: In its default configuration.
+
+
+
+ (3) Storage Bus #1: Filtered to coal.
+
+
+
+
+ (4) Storage Bus #2: IFiltered to blacklist coal, using an inverter card.
+
+
+
+
+ To Main Network
+
+
+This is a general illustration of providing to multiple machines
+
+
+
+
+
+ Interface (must be flat, not fullblock)
+
+
+
+ Storage Busses
+
+
+
+ Places you want to pattern-provide to
+
+
+
+
+
Multiple pattern providers with identical patterns are supported and work in parallel.
Pattern providers will attempt to round-robin their batches to all of their faces, thus using all attached machines in parallel.
diff --git a/guidebook/items-blocks-machines/storage_bus.md b/guidebook/items-blocks-machines/storage_bus.md
index fcded4b14b1..ce8f47330a6 100644
--- a/guidebook/items-blocks-machines/storage_bus.md
+++ b/guidebook/items-blocks-machines/storage_bus.md
@@ -32,10 +32,11 @@ They are [cable subparts](../ae2-mechanics/cable-subparts.md).
## Filtering
By default the bus will store everything. Items inserted into its filter slots will act as a whitelist, only
-allowing those specific items to be stored. It has a LOT of slots, so it can be used as a large filter if you're using it for
-item transfer.
+allowing those specific items to be stored.
-Items can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+Items and fluids can be dragged into the slots from JEI/REI even if you don't actually have any of that item.
+
+Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as a filter instead of the bucket or tank item.
## Priority
diff --git a/guidebook/items-blocks-machines/terminals.md b/guidebook/items-blocks-machines/terminals.md
index 33f52eb851d..c8f4c0703d5 100644
--- a/guidebook/items-blocks-machines/terminals.md
+++ b/guidebook/items-blocks-machines/terminals.md
@@ -153,20 +153,21 @@ A slot for encoded patterns. Place a pattern that has already been encoded in th
The central UI changes depending on the type of pattern to be encoded:
* In crafting mode:
- * left-click in or drag from JEI/REI the ingredients to form the recipe. Right-click to remove the ingredient.
+ * Left-click in or drag from JEI/REI the ingredients to form the recipe. Right-click to remove the ingredient.
* Enabling substitiutions allows things like crafting sticks from any plank type. This should only be used
when absolutely necessary.
* Fluid substitutions allows using stored fluids in place of buckets of fluids.
* You can also directly encode a pattern from the JEI/REI recipe screen.
* In processing mode:
- * left-click or right-click in or drag from JEI/REI the ingredients to specify the inputs and outputs of the recipe.
- * When holding a stack, left-click places the whole stack, right-click places one item. Left-click on an existing ingredient stack to
+ * Left-click or right-click in or drag from JEI/REI the ingredients to specify the inputs and outputs of the recipe.
+ * Right-click with a fluid container (like a bucket or fluid tank) to set that fluid as an ingredient instead of the bucket or tank item.
+ * When holding a stack, left-click places the whole stack, right-click places one item. Left-click on an existing ingredient stack to
remove the whole stack and right-click to decrement the stack by 1. Whatever you have bound to "pick block" (usually middle-click)
lets you specify a precise amount of the item or fluid.
- * The output slots have a primary output and space for any secondary outputs you might want the autocrafting algorithm to know about.
- * Both input and output slots scroll, so you can have 81 different ingredients and 26 secondary outputs
- * You can also directly encode a pattern from the JEI/REI recipe screen.
+ * The output slots have a primary output and space for any secondary outputs you might want the autocrafting algorithm to know about.
+ * Both input and output slots scroll, so you can have 81 different ingredients and 26 secondary outputs
+ * You can also directly encode a pattern from the JEI/REI recipe screen.
* The smithing and stonecutting mode UIs work similarly to a smithing table and stonecutter respectively.