| BuildCraft 2.2.4 (October 2011) has three families of pipe. Seven transport pipes carry items (wooden, cobblestone, stone, iron, golden, diamond, obsidian); five waterproof pipes carry liquids and are made from a transport pipe of the same material and a pipe sealant made of green dye; three conductive pipes carry energy and are made from a transport pipe and redstone. | buildcraft/common/net/minecraft/src/BuildCraftTransport.java L113–118buildcraft/common/net/minecraft/src/BuildCraftTransport.java L124–144 | Code |
| In 2.2.4 an item in a transport pipe travels to the pipe's center and there picks an exit: any side but the one it came in by that leads to a pipe carrying items, a machine that accepts them, or an inventory with room for it. With several, it takes one at random (single-player) or by a fixed hash of the item's id and the pipe's position (multiplayer). With none, the item drops out of the pipe into the world, and an item that reaches a full inventory drops what doesn't fit. | buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java L114–173buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java L225–237buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java L263–282buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java L373–393 | Code |
| Items in 2.2.4 pipes move at a base speed of 0.01 block a tick. Entering most pipes takes 0.01 off any speed above that; a stone pipe takes off only 0.005. A golden pipe with a redstone signal sets an entering item's speed to 20 times the base, 0.2 block a tick, which the pipes after it then wear down. | buildcraft/common/net/minecraft/src/buildcraft/core/Utils.java L37buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java L63–72buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsStone.java L35–43buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsGold.java L69–73 | Code |
With 2.2.4's default connection rules (pipes.alwaysConnect false), stone and cobblestone pipes don't join each other, and a golden transport pipe doesn't join another golden one. By 3.2.2 (December 2012) the golden pipe's rule is commented out. | buildcraft/common/net/minecraft/src/buildcraft/core/DefaultProps.java L75buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicStone.java L24–29buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicCobblestone.java L24–29buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsGold.java L53–58 | Code |
In 2.2.4 the wooden transport pipe is the one that takes items out: powered by an engine, it pulls from one slot of the inventory it faces as many items as it holds energy, one item per unit and at most a stack, and puts them into the pipe. Blocks named in the config's woodenPipe.exclusion list, empty by default, aren't pulled from. It stores at most 64, and energy it hasn't spent drains, 64 a tick. A two-slot inventory gives from its first slot to a pipe above or below and its second to the sides; a furnace's top, bottom and sides give its three slots. | buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java L41–43buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java L78–127buildcraft/common/net/minecraft/src/BuildCraftTransport.java L90–94buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicWood.java L64–76buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java L156–199buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java L215–235buildcraft/common/net/minecraft/src/buildcraft/api/PowerProvider.java L64–99 | Code |
| In 2.2.4 an iron pipe lets items out by one side only; each change in the redstone signal it gets turns that side to the next one that faces a pipe, machine or inventory, skipping wooden pipes. A diamond pipe has nine filter slots for each of its six sides: an item goes to a side whose filter holds its kind (ignoring wear on tools), and only when none does to a side with an empty filter. | buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicIron.java L24–69buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicIron.java L112–115buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsDiamond.java L46–84 | Code |
| In 2.2.4 a conductive pipe passes energy on in proportion to what each neighbor asks for, and loses 1% at every pipe it enters (0.1% in a golden one). A pipe that takes 1,000 or more from one side in a tick explodes. | buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java L36buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java L83–127buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java L200–212buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipePowerGold.java L20 | Code |
| BuildCraft 2.2.4 has three engines, and each pushes energy out only while it gets a redstone signal. The redstone engine makes 1 energy a second (every 20 ticks), only while powered, and stores 1,000. The steam engine burns solid fuel for 1 energy a tick (a piece of coal lasts 1,600 ticks, a lava bucket 20,000, wood 300) and stores 10,000; it finishes a piece it has started without the signal, but needs the signal to start the next. The combustion engine burns liquids, only while powered, and stores 100,000. An engine pushes its energy into the machine or pipe it faces in strokes, at most 1, 100 or 500 a stroke for the three, and its piston moves faster as its store fills. | buildcraft/common/net/minecraft/src/BuildCraftEnergy.java L109–111buildcraft/common/net/minecraft/src/buildcraft/energy/EngineWood.java L16–54buildcraft/common/net/minecraft/src/buildcraft/energy/EngineStone.java L28–106buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java L38–39buildcraft/common/net/minecraft/src/buildcraft/energy/Engine.java L26buildcraft/common/net/minecraft/src/buildcraft/energy/TileEngine.java L84–131buildcraft/common/net/minecraft/src/buildcraft/energy/EngineStone.java L44–57buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java L80–85 | Code |
| In 2.2.4 a steam engine whose store passes 10,000 explodes (range 4), and a combustion engine explodes (range 8) once its heat has passed 100,000, at the next energy it adds. The combustion engine heats by the energy it makes; while it runs it cools only on water, which holds its heat at 49,000 while the water lasts, at one unit of water per unit of heat above, and unpowered it sheds 10 heat a tick. The redstone engine adds its energy without the overflow check. | buildcraft/common/net/minecraft/src/buildcraft/energy/Engine.java L42–96buildcraft/common/net/minecraft/src/buildcraft/energy/EngineStone.java L36–38buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java L22–48buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java L93–94buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java L120–154buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java L162–165buildcraft/common/net/minecraft/src/buildcraft/energy/EngineWood.java L49–52 | Code |
| By BuildCraft 3.2.2 (December 2012) the engine's screen names the unit: output in "MJ/t" and the store in "MJ". The 2.2.4 code counts the same energy as a bare integer. | buildcraft/common/net/minecraft/src/buildcraft/energy/Engine.java L23 | Code |
| In 2.2.4 oil is placed as the world is generated, chunk by chunk. A desert chunk has a 3% chance of a small surface pool (radius 3) on sand. Any chunk has a 0.2% chance of a medium deposit, a ball of oil of radius 4 to 7 centered at height 20 to 29, with a surface pool of radius 5 to 9 and oil filling the shaft between, and a 0.005% chance of a large one, radius 8 to 16, with a surface pool of radius 20 to 39 and a column of oil standing up to 30 blocks above the ground. | buildcraft/common/net/minecraft/src/buildcraft/energy/OilPopulate.java L36–57buildcraft/common/net/minecraft/src/buildcraft/energy/OilPopulate.java L63–127buildcraft/common/net/minecraft/src/BuildCraftEnergy.java L157–159 | Code |
| The 2.2.4 pump lowers a tube to the liquid below it and, for 10 energy, takes up one block of it as a bucket's worth (1,000 units), removing the block from the world, then pushes the liquid into an adjacent tank, pipe or machine that holds liquids. A pumped deposit is used up. | buildcraft/common/net/minecraft/src/buildcraft/factory/TilePump.java L74–93buildcraft/common/net/minecraft/src/buildcraft/factory/TilePump.java L115–132buildcraft/common/net/minecraft/src/buildcraft/api/API.java L22 | Code |
| The 2.2.4 refinery has one recipe: one unit of oil into one unit of fuel for 10 energy, at most one unit a tick, so a bucket of fuel costs 10,000 energy and at least 1,000 ticks. Its two input tanks and its output tank hold four buckets each. | buildcraft/common/net/minecraft/src/BuildCraftEnergy.java L141–142buildcraft/common/net/minecraft/src/buildcraft/factory/RefineryRecipe.java L22–23buildcraft/common/net/minecraft/src/buildcraft/factory/TileRefinery.java L33buildcraft/common/net/minecraft/src/buildcraft/factory/TileRefinery.java L256–277 | Code |
| In 2.2.4 the combustion engine makes 5 energy a tick on fuel, 2 on oil and 1 on lava. Each unit burns for 1 tick plus the fuel's burn time over 1,000, which comes to 255,000 energy a bucket of fuel, 22,000 a bucket of oil and 3,000 a bucket of lava. Refining a bucket of oil costs 10,000, so the refinery multiplies the oil's worth in the engine more than tenfold. | buildcraft/common/net/minecraft/src/BuildCraftEnergy.java L144–149buildcraft/common/net/minecraft/src/buildcraft/api/IronEngineFuel.java L17buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java L85–94 | Code |
| In 2.2.4 a quarry with no landmarks marking an area digs a default box 11 blocks square and 5 high, set beside the quarry on the side opposite its face. It first builds a frame around the box (25 energy per block placed or cleared), then digs out the 9 × 9 inside. Landmarks give a box of their own, at least 3 × 3, raised to 5 high if lower. | buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L431–495buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L163–169buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L511–520 | Code |
| In 2.2.4 the quarry digs from the top of its box down, a layer at a time in a back-and-forth sweep, always taking the highest block left. It passes over air, water and snow, and a column that reaches bedrock or lava is closed below. Each block goes into an adjacent chest if there is room, else into an adjacent pipe, else it is thrown up into the air from the quarry. The arm's travel is what costs energy: each tick 2 plus a thousandth of the store, moving faster the more it spends, out of a 7,000-energy store. | buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L206–267buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L399–409buildcraft/common/net/minecraft/src/buildcraft/api/API.java L49–54buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L361–392buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L56buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java L116–126 | Code |
| The 2.2.4 Automatic Crafting Table holds a 3 × 3 pattern and crafts one result each time a pipe pulls from it. A slot with more than one item gives one; a slot down to its last item keeps it and takes one from an adjacent chest or other plain inventory instead, and if none has it the table crafts nothing. Items piped in go only to slots already holding that item, the emptiest first. It needs no power of its own; the wooden pipe pulling from it does. | buildcraft/common/net/minecraft/src/BuildCraftFactory.java L102–111buildcraft/common/net/minecraft/src/buildcraft/factory/TileAutoWorkbench.java L165–228buildcraft/common/net/minecraft/src/buildcraft/factory/TileAutoWorkbench.java L270–281buildcraft/common/net/minecraft/src/buildcraft/factory/TileAutoWorkbench.java L125–157buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java L137–140 | Code |
| BuildCraft 2.2.4's oil chain is short: a pump lifts oil block by block out of a deposit it empties, the refinery's one recipe turns oil into the same amount of fuel, and the combustion engine burns the fuel for energy. Factorio 2.1.23's crude oil is an infinite resource a pumpjack draws from a well; the refinery's basic recipe makes petroleum gas alone, its advanced recipe splits crude oil and water into heavy oil, light oil and petroleum gas, and cracking recipes in the chemistry category, which the chemical plant runs, turn heavy oil into light oil and light oil into gas. | buildcraft/common/net/minecraft/src/buildcraft/factory/TilePump.java L84–87buildcraft/common/net/minecraft/src/BuildCraftEnergy.java L141–149 | Code |
| In BuildCraft 2.2.4 a waterproof pipe stores its own liquid, in seven buffers: one at each of its six sides and one at its center. A buffer accepts liquid only up to a quarter bucket (250 units) plus its flow rate, 270 units in most pipes, and refuses a different liquid while it holds some. Each tick a buffer releases at most its flow rate, 20 units (80 in a golden pipe). Liquid waits in a delay line once after it arrives and again after it is released: written to the slot before the current tick's, it is read five ticks later (one tick later in a golden pipe). Liquid that came in by a side goes on to the center; the center hands it to the sides that lead out; and a side that leads out passes it into the next pipe or, when that pipe takes none, back to its own center, a side refused more than 20 times in a row being treated as an input. What nothing takes stays in the buffer for a later tick. So liquid crosses a line one pipe at a time, never faster than its pipes' flow rate. | buildcraft/common/net/minecraft/src/buildcraft/api/API.java L22buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L31–34buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L87–107buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L113–122buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L130–162buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L192–194buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L388–396buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L411–412buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeLiquidsGold.java L20–21 | Code |
| In BuildCraft 2.2.4 a liquid pipe's center buffer divides what it releases among its outputs: the sides that the pipe leaves open (an iron pipe only the one it points to), that face a pipe or liquid container it connects to, and that liquid didn't come in by. Each output is offered an equal share, rounded up, until the amount runs out, in an order reshuffled every tick by 20 random swaps. If the outputs took less than all of it, the rest is offered once more, split among the outputs not marked full; the test that marks one full compares the total taken so far in the pass, not that output's own amount, with a share, so it can mark full an output that took its whole share and leave unmarked one that took none. A side counts as an input from when liquid enters by it until it has been empty for more than 20 ticks, and every side stops counting as one when the pipe has had no output for more than 20 ticks. | buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L164–189buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L209–232buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L355–356buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L371–385buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L413–419buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L431–432buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L523–530buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicIron.java L112–114 | Code |
| BuildCraft 2.2.4 and Factorio before 2.0 both move liquid from pipe to pipe, and split it differently where pipes branch. A BuildCraft pipe offers its outputs equal shares, in an order it reshuffles every tick. In Factorio's old system, by Wube's FFF #416 (2024), the amount going to each side of a junction depended on the order the entities were built, as could a pipe's throughput. In the segment system the same post describes for 2.0, junctions don't matter: a segment answers only to the machines connected to it, each limited by how full the segment is, which the post says splits fluid much more evenly, though not perfectly. | buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportLiquids.java L212–215 | Dev blog |