Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Guidebook #7510

Merged
merged 5 commits into from
Dec 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion guidebook/ae2-mechanics/autocrafting.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,14 @@ Here is what happens:

5. If that craft is a prerequisite for another craft in the request, the items are stored in that crafting CPU and then used in that craft.

## Recursive Recipes

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

One thing the autocrafting algorithm *cannot* handle is recursive recipes. For example, duplication recipes like
"1 redstone dust = 2 redstone dust", from throwing redstone in a Botania manapool. Another example would be smithing templates
in vanilla Minecraft. However, there is [a way to handle these recipes.](../example-setups/recursive-crafting-setup.md)

# Patterns

<ItemImage id="crafting_pattern" scale="4" />
Expand Down Expand Up @@ -109,7 +117,7 @@ Crafting CPUs are made out of:
* (Required) [Crafting storages](../items-blocks-machines/crafting_cpu_multiblock.md), available in all the standard cell sizes (1k, 4k, 16k, 64k, 256k). They store the ingredients and
intermediate ingredients involved in a craft, so larger or more storages are required for the CPU to handle crafting jobs
with more ingredients.
* (Optional) <ItemLink id="crafting_accelerator" />s, they make the system send out more ingredient batches from pattern providers.
* (Optional) <ItemLink id="crafting_accelerator" />s, they make the system send out ingredient batches from pattern providers more often.
This allows, say, a pattern provider surrounded by 6 molecular assemblers to send ingredients to (and thus use) all 6 at once instead of just one.
* (Optional) <ItemLink id="crafting_monitor" />s, they display the job the CPU is handling at the moment. They can be colored via a <ItemLink id="color_applicator" />
* (Optional) <ItemLink id="crafting_unit" />s, they simply fill space in order to make the CPU a rectangular prism.
Expand Down
6 changes: 5 additions & 1 deletion guidebook/ae2-mechanics/subnetworks.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,18 @@ network can access
<IsometricCamera yaw="195" pitch="30" />
</GameScene>

"Subnetwork" is a rather loosely-defined term, but one might say that a subnetwork is any network that supports your
"Subnetwork" is a rather loosely-defined term, but one might say that a subnetwork is any [network](../ae2-mechanics/me-network-connections.md) that supports your
main network or does some small task. They are typically small enough to not require controllers. Their main 2 uses tend to be:

* To restrict what [devices](../ae2-mechanics/devices.md) have access to what storage (you don't want the import bus on a "pipe" subnet to have access to your main net
storage, or it will put the items in your storage cells instead of in the destination inventory).
* To save channels on your main network, like having a pattern provider output to an interface connected to several storage
busses on several machines, using 1 channel, instead of putting a pattern provider on each machine, using several channels.

Very important in making a subnet is keeping track of the [network connections](../ae2-mechanics/me-network-connections.md).
Often, people put together some jumble of interfaces and busses and stuff and expect it to be a subnet when
all the devices are still connected to the main network through various fullblock devices.

Cables with different colors have nothing to do with making a subnetwork other than that they won't connect to each other.

They can be
Expand Down
43 changes: 43 additions & 0 deletions guidebook/assets/assemblies/bucket_emptier.snbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
DataVersion: 3465,
size: [6, 3, 4],
data: [
{pos: [2, 0, 2], state: "minecraft:smooth_stone"},
{pos: [2, 0, 3], state: "minecraft:smooth_stone"},
{pos: [3, 0, 2], state: "minecraft:smooth_stone"},
{pos: [4, 0, 1], state: "ae2:quartz_glass"},
{pos: [4, 0, 2], state: "minecraft:orange_concrete"},
{pos: [5, 0, 1], state: "minecraft:orange_concrete"},
{pos: [5, 0, 2], state: "minecraft:orange_concrete"},
{pos: [0, 1, 0], 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: [1, 1, 0], 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", up: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
{pos: [2, 1, 0], state: "ae2:pattern_provider{push_direction:all}", nbt: {blocking_mode: "YES", id: "ae2:pattern_provider", lock_crafting_mode: "LOCK_WHILE_HIGH", pattern_access_terminal: "YES", patterns: [{Count: 1b, Slot: 0, id: "ae2:processing_pattern", tag: {in: [{"#": 1L, "#c": "ae2:i", id: "minecraft:water_bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}], out: [{"#": 81000L, "#c": "ae2:f", id: "minecraft:water"}, {"#": 1L, "#c": "ae2:i", id: "minecraft:bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]}}, {Count: 1b, Slot: 1, id: "ae2:processing_pattern", tag: {in: [{"#": 1L, "#c": "ae2:i", id: "minecraft:lava_bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}], out: [{"#": 81000L, "#c": "ae2:f", id: "minecraft:lava"}, {"#": 1L, "#c": "ae2:i", id: "minecraft:bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]}}], priority: 0, proxy: {p: 0}, returnInv: [], sendList: [], visual: {}}},
{pos: [2, 1, 1], state: "minecraft:smooth_stone"},
{pos: [2, 1, 2], state: "minecraft:repeater{delay:1,facing:south,locked:false,powered:false}"},
{pos: [2, 1, 3], state: "minecraft:redstone_wire{east:none,north:side,power:0,south:side,west:none}"},
{pos: [3, 1, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsEast: 3, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", south: {config: [{"#": 0L, "#c": "ae2:i", id: "minecraft:bucket"}], fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", visual: {missingChannel: 0b, powered: 1b}}, up: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, 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: [3, 1, 1], state: "minecraft:dispenser{facing:east,triggered:false}", nbt: {Items: [], id: "minecraft:dispenser"}},
{pos: [3, 1, 2], state: "minecraft:comparator{facing:north,mode:compare,powered:false}", nbt: {OutputSignal: 0, id: "minecraft:comparator"}},
{pos: [3, 1, 3], state: "minecraft:smooth_stone"},
{pos: [4, 1, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsWest: 3, connections: ["west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", south: {gn: {p: 0}, id: "ae2:annihilation_plane", visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
{pos: [4, 1, 2], state: "ae2:quartz_glass"},
{pos: [5, 1, 1], state: "ae2:quartz_glass"},
{pos: [5, 1, 2], state: "ae2:quartz_glass"},
{pos: [1, 2, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsDown: 2, channelsEast: 2, connections: ["down", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
{pos: [2, 2, 0], 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: {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, 2, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsDown: 2, channelsSouth: 2, channelsWest: 2, connections: ["down", "south", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
{pos: [3, 2, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsNorth: 2, connections: ["north"], 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: {}}}
],
entities: [],
palette: [
"minecraft:smooth_stone",
"ae2:quartz_glass",
"minecraft:orange_concrete",
"minecraft:repeater{delay:1,facing:south,locked:false,powered:false}",
"minecraft:redstone_wire{east:none,north:side,power:0,south:side,west:none}",
"ae2:cable_bus{light_level:0,waterlogged:false}",
"ae2:pattern_provider{push_direction:all}",
"minecraft:dispenser{facing:east,triggered:false}",
"minecraft:comparator{facing:north,mode:compare,powered:false}"
]
}
43 changes: 43 additions & 0 deletions guidebook/assets/assemblies/bucket_filler.snbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
DataVersion: 3465,
size: [6, 3, 4],
data: [
{pos: [2, 0, 2], state: "minecraft:smooth_stone"},
{pos: [2, 0, 3], state: "minecraft:smooth_stone"},
{pos: [3, 0, 2], state: "minecraft:smooth_stone"},
{pos: [4, 0, 1], state: "ae2:quartz_glass"},
{pos: [4, 0, 2], state: "minecraft:blue_concrete"},
{pos: [5, 0, 1], state: "minecraft:blue_concrete"},
{pos: [5, 0, 2], state: "minecraft:blue_concrete"},
{pos: [0, 1, 0], 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: [1, 1, 0], 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", up: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
{pos: [2, 1, 0], state: "ae2:pattern_provider{push_direction:all}", nbt: {blocking_mode: "NO", id: "ae2:pattern_provider", lock_crafting_mode: "LOCK_WHILE_HIGH", pattern_access_terminal: "YES", patterns: [{Count: 1b, Slot: 0, id: "ae2:processing_pattern", tag: {in: [{"#": 81000L, "#c": "ae2:f", id: "minecraft:water"}, {"#": 1L, "#c": "ae2:i", id: "minecraft:bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}], out: [{"#": 1L, "#c": "ae2:i", id: "minecraft:water_bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]}}, {Count: 1b, Slot: 1, id: "ae2:processing_pattern", tag: {in: [{"#": 81000L, "#c": "ae2:f", id: "minecraft:lava"}, {"#": 1L, "#c": "ae2:i", id: "minecraft:bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}], out: [{"#": 1L, "#c": "ae2:i", id: "minecraft:lava_bucket"}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]}}], priority: 0, proxy: {p: 0}, returnInv: [], sendList: [], visual: {}}},
{pos: [2, 1, 1], state: "minecraft:smooth_stone"},
{pos: [2, 1, 2], state: "minecraft:repeater{delay:1,facing:south,locked:false,powered:false}"},
{pos: [2, 1, 3], state: "minecraft:redstone_wire{east:none,north:side,power:0,south:side,west:none}"},
{pos: [3, 1, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsEast: 3, connections: ["east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", south: {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}}, up: {gn: {p: 0}, id: "ae2:quartz_fiber", outer: {p: 0}, visual: {missingChannel: 0b, powered: 1b}}, visual: {}, west: {fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:cable_interface", priority: 0, visual: {missingChannel: 0b, powered: 1b}}}},
{pos: [3, 1, 1], state: "minecraft:dispenser{facing:east,triggered:false}", nbt: {Items: [], id: "minecraft:dispenser"}},
{pos: [3, 1, 2], state: "minecraft:comparator{facing:north,mode:compare,powered:false}", nbt: {OutputSignal: 0, id: "minecraft:comparator"}},
{pos: [3, 1, 3], state: "minecraft:smooth_stone"},
{pos: [4, 1, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:green_smart_cable", visual: {channelsWest: 3, connections: ["west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", south: {config: [{"#": 0L, "#c": "ae2:i", id: "minecraft:bucket"}], fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:formation_plane", place_block: "YES", priority: 0, upgrades: [{Count: 1b, Slot: 0, id: "ae2:inverter_card"}], visual: {missingChannel: 0b, powered: 1b}}, visual: {}}},
{pos: [4, 1, 2], state: "ae2:quartz_glass"},
{pos: [5, 1, 1], state: "ae2:quartz_glass"},
{pos: [5, 1, 2], state: "ae2:quartz_glass"},
{pos: [1, 2, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsDown: 2, channelsEast: 2, connections: ["down", "east"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
{pos: [2, 2, 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: {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, 2, 0], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsDown: 2, channelsSouth: 2, channelsWest: 2, connections: ["down", "south", "west"], missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}},
{pos: [3, 2, 1], state: "ae2:cable_bus{light_level:0,waterlogged:false}", nbt: {cable: {gn: {p: 0}, id: "ae2:orange_smart_cable", visual: {channelsNorth: 2, connections: ["north"], missingChannel: 0b, powered: 1b}}, down: {config: [{"#": 0L, "#c": "ae2:i", id: "minecraft:bucket"}], fuzzy_mode: "IGNORE_ALL", gn: {p: 0}, id: "ae2:import_bus", redstone_controlled: "IGNORE", upgrades: [{Count: 1b, Slot: 0, id: "ae2:inverter_card"}], visual: {missingChannel: 0b, powered: 1b}}, hasRedstone: 2, id: "ae2:cable_bus", visual: {}}}
],
entities: [],
palette: [
"minecraft:smooth_stone",
"ae2:quartz_glass",
"minecraft:blue_concrete",
"minecraft:repeater{delay:1,facing:south,locked:false,powered:false}",
"minecraft:redstone_wire{east:none,north:side,power:0,south:side,west:none}",
"ae2:cable_bus{light_level:0,waterlogged:false}",
"ae2:pattern_provider{push_direction:all}",
"minecraft:dispenser{facing:east,triggered:false}",
"minecraft:comparator{facing:north,mode:compare,powered:false}"
]
}
Loading