On this page
  1. How it plays
  2. In Factorio’s lineage
  3. Related
  4. Mechanics
  5. References
  6. Sources

BuildCraft is a mod for Minecraft that automates mining, moving and making things. SpaceToad posted it on the Minecraft Forum in April 2011 as “a new game mod aiming at allowing users to build advanced structures and mechanisms”, with code by himself and pixels by plashal1. It came out under Minecraft Beta 1.4, when, as a later BuildCraft developer recalled, almost none of the mods that followed existed and IndustrialCraft 1 had come out a month before2. By October its website summed it up as “Extending Minecraft with pipes, auto-crafting, quarry, engines, and much more!“3

The first release had five pipes and a mining well4; a later developer’s history names a cobblestone pipe where the code has a stone one5. Quarries and automatic crafting tables came in the next versions5. Version 2.0, at the end of July 2011, brought a power system measured in Minecraft Joules and made BuildCraft depend on Minecraft Forge, which SpaceToad had helped to found; the versions after it added oil, liquid pipes and pumps, and then fuel and the refinery6,7. In November 2011 SpaceToad opened its distribution rights, under conditions8 and released an alpha of gates, logic that reads pipes and machines and sends signals along wires9. Blueprints followed at the turn of the year10.

In March 2012 SpaceToad handed the mod to Krapht and SirSengir, the makers of Logistics Pipes and Forestry, after nine months of 15 or more hours a week; he wrote that it had been meant from the start to be community-driven, which was a main reason it was open source11. He came back to lead it in 201412. His forum thread ran to 991 pages by January 201213, and BuildCraft’s CurseForge page alone counted 43,997,544 downloads14 by 2026. Other mods were built on it: Thermal Expansion began as a BuildCraft addon that ran on its Minecraft Joules15, and Krapht’s Logistics Pipes added item routing16. A later maintainer credited BuildCraft with “the first pipes, quarries and builders”17.

#How it plays

A wooden pipe does the pulling: an engine’s stroke makes it lift items out of the chest or machine it faces, and the redstone engine’s tiny strokes move one item at a time18,19. At every pipe an item picks an open way on, at random where there are several, and falls out into the world where there are none20. Pipe materials do the sorting. An iron pipe lets items out by one side, which a redstone pulse turns; a diamond pipe sends each type of item to the side whose filter lists it; a golden pipe with a signal flings items onward at twenty times their usual pace21,22. Stone and cobblestone pipes refuse to join each other, so a line of each can run side by side without merging23. Waterproof pipes carry liquids, and conductive pipes carry energy, losing a share at every pipe24,25.

Engines push energy into whatever they face, and only while they have a redstone signal. The redstone engine makes a trickle; the steam engine burns coal or wood, finishing a piece it has lit even without the signal; and the combustion engine burns liquids19. The two bigger engines can blow up: a steam engine whose store overflows, and a combustion engine run hot without water to cool it26. By late 2012 the engine’s screen showed its output in MJ, Minecraft Joules27.

The quarry builds a frame and then empties a shaft, 9 × 9 unless landmarks mark out another size, down to bedrock, layer by layer, its arm swinging faster the more energy it holds; what it digs goes into a chest beside it, or a pipe, or is thrown into the air28,29. The automatic crafting table holds a recipe’s pattern and crafts one result each time a pipe pulls from it, reaching into a chest beside it for ingredients30.

Oil lies in desert pools and, rarely, in buried lakes that send a column of oil up above the ground31. A pump draws it up block by block until the deposit is gone32. Oil burns in the combustion engine, but the refinery turns it into fuel, worth more than ten times as much33,34. Later versions changed the figures35.

Gates came with 3.0. Fixed onto a pipe, a gate watches the pipe, a neighboring chest, tank, machine or engine, or a signal, and answers with a redstone signal, a signal on one of four colored pipe wires, or a command to the machine beside it; bigger gates join more conditions with AND or OR36,37. A wire signal fades by one at every pipe and keeps to its own color38. SpaceToad built gates in place of the detector pipes players had asked for, which he found “boring”9.

#In Factorio’s lineage

Wube’s Friday Facts says “Factorio was inspired by Buildcraft”, and its founder, kovarex, wrote that modded Minecraft, mainly BuildCraft and IndustrialCraft, was a huge inspiration39,40. In 2013 he proposed oil for Factorio’s energy, saying he liked BuildCraft’s oil concept a lot without wanting to copy it completely41. The two chains part early. BuildCraft’s deposits run dry and its refinery has one recipe, oil into fuel; Factorio’s crude oil never runs out, and its refinery’s advanced recipe splits it into three products, which chemical plants crack further42. Thermal Expansion, whose fluid algorithm a Wube developer proposed to follow closely for Factorio 2.0, began as a BuildCraft addon15,43.

Mechanics

MechanicKindHow
OverheatExplodethe combustion engine heats as it runs and explodes past its limit unless water cools it
Fluid networkPipe to pipewaterproof pipes keep liquid in buffers at each side and the center, passing at most 20 units a tick (80 in a golden pipe) from buffer to buffer and pipe to pipe
Power networkPipe to pipeengines push energy into the machine or conductive pipe they face, and each pipe passes it on by what its neighbours ask, losing 1% a pipe
Production chainAutomatedin 2.2.4 engine-powered wooden pipes pull items out of inventories such as furnaces into the pipes, which route them on to machines and inventories; the Automatic Crafting Table crafts its pattern each time a pipe pulls from it, and the quarry puts what it digs into an adjacent chest or pipe
Every claim about this game, by concept (42)
generalSpaceToad posted BuildCraft on the Minecraft Forum on 25 April 2011, describing it as "a new game mod aiming at allowing users to build advanced structures and mechanisms". The thread's opening post credits the code to SpaceToad and the pixels to plashal.Dev blog
Adrian Siekierka (asie), who joined BuildCraft's developers in October 2014, wrote in 2015 that when BuildCraft came out, under Minecraft Beta 1.4, almost none of the later mods existed, and IndustrialCraft 1 had come out a month before.Dev blog
In October 2011 BuildCraft's own website summed the mod up as "Extending Minecraft with pipes, auto-crafting, quarry, engines, and much more!"Publisher
By asie's account, the first release had five pipes and no building or crafting; 1.5_01.3 added quarries and automatic crafting tables, which then ran on fast-clocked redstone; 1.6.5.1 added vacuum pipes (later obsidian pipes), land marks and the filler. He also dates mining wells to 1.5_01.1, which the first release's code contradicts.Dev blog
By asie's account, BuildCraft 2.0.0, at the end of July 2011, was the first version to depend on Minecraft Forge and added the power system, Minecraft Joules; 2.0.1 brought oil and wrenches, 2.1.0 liquid pipes and pumps, and 2.2.0 conductive pipes, fuel and the refinery.Dev blog
asie writes that Eloraam, FlowerChild and SpaceToad created Minecraft Forge, an API on top of Risugami's ModLoader for patches several mods needed, and that SpaceToad made its first commits on 12 July 2011.Dev blog
SpaceToad released BuildCraft 2.2.1 "with SMP capabilities" (multiplayer servers) on 8 October 2011. asie dates earlier multiplayer support, through ModLoaderMP, to 1.7.2.1.Dev blog
On 1 November 2011 SpaceToad announced 2.2.5 as the first 2.x version flagged stable, ended the 1.x line, and opened BuildCraft's distribution rights "under certain restrictions": the sources had been available but not open source by the OSI definition. He added that no mod pack had yet been allowed to include BuildCraft except Arrgh's.Dev blog
SpaceToad's 3.0.0 preview of 8 November 2011 explains the gates: asked for detector pipes, he found them "boring" and built "a flexible generalized detection platform" with a multiplexed signal system instead. He released the alpha on 13 November 2011, with four signals carried on pipes, and advised staying with 2.2.x for regular play.Dev blog
SpaceToad previewed 3.1.0 on 28 December 2011. By asie's account it was billed as "completing the initial mission of BuildCraft" and brought blueprints and blueprint libraries.Dev blog
On 2 March 2012 SpaceToad handed BuildCraft to Krapht and SirSengir, makers of the Logistic Pipes and Forestry mods, saying he could no longer give the 15 or more hours a week he had put in over the project's first nine months. He wrote that the project had been designed from the start to be community-driven, which was a main reason it had been open source.Dev blog
SpaceToad's Patreon page of December 2014 says he had made Minecraft mods since April 2011 and, after a long time off, came back in 2014 to lead BuildCraft's development again.Dev blog
SpaceToad's Minecraft Forum thread for BuildCraft ran to 991 pages by January 2012.Dev blog
BuildCraft's CurseForge page showed 43,997,544 downloads in July 2026, counting only that page's files.Web
Team CoFH says Thermal Expansion began as a BuildCraft addon: it needed BuildCraft, or addons such as Forestry, to power its machines with Minecraft Joules, and became independent only in its third iteration.Publisher
asie names Krapht’s Logistics Pipes among the most notable BuildCraft addons, adding a routing system that supplies and provides items.Dev blog
In 2015 asie, then a BuildCraft developer, credited the mod with "the first pipes, quarries and builders", and named gates and the filler among its features, quite a few of which he said other mods hadn't replicated.Dev blog
BuildCraft 1.4.1, the first release (April 2011), adds five pipes (Wooden, Stone, Iron, Golden and Diamond), an Iron Mining Well and the Mining Pipe it lowers. The tag has no engines, oil or automatic crafting.Code
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.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.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.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.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.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.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.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.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.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.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.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.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.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.Code
By 3.2.2 (December 2012) the values have changed: the combustion engine makes 6 energy a tick on fuel (burn time 100,000), 3 on oil and 1 on lava (20,000 each), and the refinery takes 12 energy a unit.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.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.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.Code
BuildCraft 3.1.2 (January 2012) has seven gates, made on the assembly table from a redstone chipset (and pipe wire, above the plain Gate) and fixed onto a pipe: the Gate (one trigger and action), Iron AND and OR Gates (two), Gold AND and OR Gates (four, with a parameter each) and Diamond AND and OR Gates (eight, with parameters). The assembly costs 20,000 energy for the Gate, 40,000 for iron, 80,000 for gold and 160,000 for diamond.Code
In 3.1.2 a gate pairs each trigger with an action. Pairs that name the same action are combined, with AND on an AND gate and OR on the others, and each action whose result is true fires: a redstone signal out of the pipe, a signal on one of the four pipe wires, or a command such as on, off or loop to the machine next to the pipe. Triggers read the pipe (empty, items, liquids, energy, a wire signal on or off), an adjacent inventory or tank (empty, contains, has space, full), a machine (active or not), redstone in, and an engine's heat stage.Code
In 3.1.2 a pipe can carry any of four wires, red, blue, green and yellow, each a separate signal. A gate sending on a wire sets it to 255 in its pipe; each pipe takes the strongest of its wired neighbors less 1, so a signal fades out about 255 pipes from its source, and spreads only through pipes that carry the same color.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.Code
Fluid networkIn 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.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.Code

References

  1. ^SpaceToad posted BuildCraft on the Minecraft Forum on 25 April 2011, describing it as "a new game mod aiming at allowing users to build advanced structures and mechanisms". The thread's opening post credits the code to SpaceToad and the pixels to plashal.Dev blogSpaceToad, "BuildCraft", Minecraft Forum, 25 April 2011 · asie, "BuildCraft History and Design", 30 January 2015
    How we know
    Posted 25 April 2011 - 04:47 PM … BuildCraft is a new game mod aiming at allowing users to build advanced structures and mechanisms. … Code by: SpaceToad Pixels by: plashal
    opening post, SpaceToad · archived copy ↗
    BuildCraft 1.4.1 (the first release) came out on the 25th of April, 2011.
    opening section · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  2. ^Adrian Siekierka (asie), who joined BuildCraft's developers in October 2014, wrote in 2015 that when BuildCraft came out, under Minecraft Beta 1.4, almost none of the later mods existed, and IndustrialCraft 1 had come out a month before.Dev blogasie, "BuildCraft History and Design", 30 January 2015
    How we know
    Our story begins in Minecraft Beta 1.4. Yes, that was April 2011 … almost none of the mods that exist today were out back then. IndustrialCraft 1 had only come out a month before … as it were when I joined the development team in October 2014
    opening section · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  3. ^In October 2011 BuildCraft's own website summed the mod up as "Extending Minecraft with pipes, auto-crafting, quarry, engines, and much more!"PublisherBuildCraft site, October 2011
    How we know
    Extending Minecraft with pipes, auto-crafting, quarry, engines, and much more!
    site header · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  4. ^BuildCraft 1.4.1, the first release (April 2011), adds five pipes (Wooden, Stone, Iron, Golden and Diamond), an Iron Mining Well and the Mining Pipe it lowers. The tag has no engines, oil or automatic crafting.CodeBuildCraft 1.4.1
    How we know
    94		ModLoader.AddName(woodenPipeBlock.setBlockName("woodenPipe"), "Wooden Pipe");
    ⋮
    101		ModLoader.AddName(stonePipeBlock.setBlockName("stonePipe"), "Stone Pipe");
    ⋮
    108		ModLoader.AddName(ironPipeBlock.setBlockName("ironPipe"), "Iron Pipe");
    ⋮
    115		ModLoader.AddName(goldenPipeBlock.setBlockName("goldenPipe"), "Golden Pipe");
    ⋮
    122		ModLoader.AddName(diamondPipeBlock.setBlockName("diamondPipe"), "Diamond Pipe");
    ⋮
    131		ModLoader.AddName(miningWellBlock.setBlockName("miningWellBlock"), "Iron Mining Well");
    ⋮
    140		ModLoader.AddName(plainPipeBlock.setBlockName("plainPipeBlock"), "Mining Pipe");
    
    minecraft/net/minecraft/src/mod_BuildCraft.java lines 94–140 at 1a31ccd · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  5. ^ abBy asie's account, the first release had five pipes and no building or crafting; 1.5_01.3 added quarries and automatic crafting tables, which then ran on fast-clocked redstone; 1.6.5.1 added vacuum pipes (later obsidian pipes), land marks and the filler. He also dates mining wells to 1.5_01.1, which the first release's code contradicts.Dev blogasie, "BuildCraft History and Design", 30 January 2015revised
    How we know
    Back then, it actually didn’t have building or crafting - much like the first releases of Minecraft. Instead, it had five pipe types … BuildCraft 1.5_01.1 brought Mining Wells and a port to beta 1.5_01, and 1.5_01.3 added Quarries and Automatic Crafting Tables (now Auto Workbenches). Back then, they still were powered by fast-clocked redstone … BuildCraft 1.6.5.1 added Vacuum Pipes (now Obsidian Transport Pipes), the Land Marks and the Filler
    opening section · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  6. ^By asie's account, BuildCraft 2.0.0, at the end of July 2011, was the first version to depend on Minecraft Forge and added the power system, Minecraft Joules; 2.0.1 brought oil and wrenches, 2.1.0 liquid pipes and pumps, and 2.2.0 conductive pipes, fuel and the refinery.Dev blogasie, "BuildCraft History and Design", 30 January 2015
    How we know
    version 2.0.0 came out at the very end of July 2011. It was the first version to depend on Minecraft Forge. The major revolution here was the addition of a power system - Minecraft Joules. … In 2.0.1, we got oil and wrenches, and 2.1.0 gave us fluid pipes and pumps. … BuildCraft 2.2.0 added power pipes, fuel and the refinery.
    on 2.0.0 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  7. ^asie writes that Eloraam, FlowerChild and SpaceToad created Minecraft Forge, an API on top of Risugami's ModLoader for patches several mods needed, and that SpaceToad made its first commits on 12 July 2011.Dev blogasie, "BuildCraft History and Design", 30 January 2015
    How we know
    Eloraam, FlowerChild and SpaceToad had created an API that was supposed to sit on top of Risugami’s ModLoader and bring inter-mod compatibility for patches required by multiple mods. … the initial commits were put in place by SpaceToad on July 12, 2011
    on 1.7.2.1 and Forge · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  8. ^On 1 November 2011 SpaceToad announced 2.2.5 as the first 2.x version flagged stable, ended the 1.x line, and opened BuildCraft's distribution rights "under certain restrictions": the sources had been available but not open source by the OSI definition. He added that no mod pack had yet been allowed to include BuildCraft except Arrgh's.Dev blogSpaceToad, "Going Wide Open", 1 November 2011
    How we know
    This version will be the first of the 2.x branch flagged as stable – and 1.x is now officially discontinued. … though the sources are available, BuildCraft was not completely Open-Source according to the OSI definition. … the BuildCraft distributions rights which were closed are now opened, under certain restrictions. … there is no mod pack that is allowed to contain BuildCraft (except Arrgh’s one who asked permission very early on)
    "Going Wide Open", 1 November 2011 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  9. ^ abSpaceToad's 3.0.0 preview of 8 November 2011 explains the gates: asked for detector pipes, he found them "boring" and built "a flexible generalized detection platform" with a multiplexed signal system instead. He released the alpha on 13 November 2011, with four signals carried on pipes, and advised staying with 2.2.x for regular play.Dev blogSpaceToad, "A preview of BuildCraft 3.0.0", 8 November 2011 · SpaceToad, "BuildCraft 3.0.0 Alpha released", 13 November 2011
    How we know
    But detector pipes are boring. So what I did instead is a flexible generalized detection platform, able to detect all kind of events (including items passing through pipes of course, but also chests state, tanks, machines) supported by a comprehensive multiplexed signal system.
    "A preview of BuildCraft 3.0.0", 8 November 2011 · archived copy ↗
    I’m happy to release an alpha version of the work I made on the gates.
    "BuildCraft 3.0.0 Alpha released", 13 November 2011 · archived copy ↗
    There is now 4 signals that can be carried on pipes, and converted back and forth to redstone.
    changelog, "#2 implement signal on pipes" · archived copy ↗
    I strongly advise to stay with BuildCraft 2.2.x for any regular game.
    "BuildCraft 3.0.0 Alpha released", 13 November 2011 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  10. ^SpaceToad previewed 3.1.0 on 28 December 2011. By asie's account it was billed as "completing the initial mission of BuildCraft" and brought blueprints and blueprint libraries.Dev blogSpaceToad, "BuildCraft 3.1.0 Preview", 28 December 2011 · asie, "BuildCraft History and Design", 30 January 2015
    How we know
    Here comes a preview of the next feature set, to be released in a few weeks with a version tagged 3.1.0:
    "BuildCraft 3.1.0 Preview", 28 December 2011 · archived copy ↗
    SpaceToad released BuildCraft 3.1.0, “completing the initial mission of BuildCraft!” - specifically, he introduced blueprints and Blueprint Libraries.
    on 3.1.0 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  11. ^On 2 March 2012 SpaceToad handed BuildCraft to Krapht and SirSengir, makers of the Logistic Pipes and Forestry mods, saying he could no longer give the 15 or more hours a week he had put in over the project's first nine months. He wrote that the project had been designed from the start to be community-driven, which was a main reason it had been open source.Dev blogSpaceToad, "Handing over BuildCraft development", 2 March 2012 · SirSengir, "BuildCraft", Minecraft Forum, 22 April 2012
    How we know
    I’m no more able to commit to the 15+ hours of work per week on BuildCraft that I have been putting together over the first 9 months of the project. … From the very beginning, this project has been designed to be community driven. This was one of the main reason why it has been Open-Source to start with … Krapht and SirSengir have volunteer to take over and co-lead the project. You probably know them from the amazing work they’ve done on the Logistic Pipes and Forestry mods.
    "Handing over BuildCraft development", 2 March 2012 · archived copy ↗
    It was created by Spacetoad and is currently maintained by Krapht and SirSengir
    opening post, SirSengir, 22 April 2012 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  12. ^SpaceToad's Patreon page of December 2014 says he had made Minecraft mods since April 2011 and, after a long time off, came back in 2014 to lead BuildCraft's development again.Dev blogSpaceToad, Patreon page, 2014
    How we know
    My name is SpaceToad, and I've been a Minecraft mod developer since April 2011. After a long time off, I came back in 2014, working again in the community. I'm currently leading the development of the mod I initially created: BuildCraft.
    profile text · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  13. ^SpaceToad's Minecraft Forum thread for BuildCraft ran to 991 pages by January 2012.Dev blogSpaceToad, "BuildCraft", Minecraft Forum, 25 April 2011revised
    How we know
    991 Pages
    thread header · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  14. ^BuildCraft's CurseForge page showed 43,997,544 downloads in July 2026, counting only that page's files.WebBuildcraft on CurseForge
    How we know
    43,997,544
    Details, Downloads · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  15. ^ abTeam CoFH says Thermal Expansion began as a BuildCraft addon: it needed BuildCraft, or addons such as Forestry, to power its machines with Minecraft Joules, and became independent only in its third iteration.PublisherTeam CoFH, "About"
    How we know
    TE was a BuildCraft addon: it required BuildCraft itself or addons like Forestry in order to power the machines with Minecraft Joules, BuildCraft’s old power system. It wasn’t until the third iteration that the mod became fully independent.
    History · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  16. ^asie names Krapht’s Logistics Pipes among the most notable BuildCraft addons, adding a routing system that supplies and provides items.Dev blogasie, "BuildCraft History and Design", 30 January 2015
    How we know
    Krapht’s Logistics Pipes came out - one of the most notable BuildCraft addons, adding a routing system for supplying and providing items intelligently.
    on the 2.2 branch · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  17. ^In 2015 asie, then a BuildCraft developer, credited the mod with "the first pipes, quarries and builders", and named gates and the filler among its features, quite a few of which he said other mods hadn't replicated.Dev blogasie, "BuildCraft History and Design", 30 January 2015revised
    How we know
    BuildCraft who brought the first pipes, quarries and builders; BuildCraft gave us programmable Robots, which, unlike turtles, were somewhat accessible to the common man, Gates, the Filler and many other features, of which quite a few were not replicated in other mods to the present day.
    design views · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  18. ^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.CodeBuildCraft 2.2.4revised
    How we know
    42		powerProvider.configure(50, 1, 64, 1, 64);
    43		powerProvider.configurePowerPerdition(64, 1);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java lines 41–43 at 0a20887 · upstream ↗
    79		if (powerProvider.energyStored <= 0) {
    80			return;
    ⋮
    88			return;
    ⋮
    102			return;
    ⋮
    108			ItemStack stack = checkExtract(inventory, true,
    109					pos.orientation.reverse());
    ⋮
    113				return;
    ⋮
    118					pos.orientation.reverse());
    ⋮
    125			((PipeTransportItems) transport).entityEntering(entity,
    126					entityPos.orientation);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java lines 78–127 at 0a20887 · upstream ↗
    91				.getOrCreateProperty("woodenPipe.exclusion",
    92						Configuration.BLOCK_PROPERTY, "");
    ⋮
    94		PipeLogicWood.excludedBlocks = exclusionList.value.split(",");
    
    buildcraft/common/net/minecraft/src/BuildCraftTransport.java lines 90–94 at 0a20887 · upstream ↗
    69		for (String excluded : excludedBlocks) {			
    70			if (excluded.equals (block.getBlockName())
    71					|| excluded.equals (Integer.toString(block.blockID))) {
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicWood.java lines 64–76 at 0a20887 · upstream ↗
    156		} else if (inventory.getSizeInventory() == 2) {
    157			// This is an input-output inventory
    ⋮
    161			if (from == Orientations.YNeg || from == Orientations.YPos) {
    162				slotIndex = 0;
    163			} else {
    164				slotIndex = 1;
    ⋮
    173				} else {
    ⋮
    177		} else if (inventory.getSizeInventory() == 3) {
    178			// This is a furnace-like inventory
    ⋮
    183				slotIndex = 0;
    ⋮
    185				slotIndex = 1;
    186			} else {
    ⋮
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java lines 156–199 at 0a20887 · upstream ↗
    225						return inventory.decrStackSize(k, powerProvider
    226								.useEnergy(1, slot.stackSize, true));
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java lines 215–235 at 0a20887 · upstream ↗
    68			energyStored -= powerLoss;
    ⋮
    81	public int useEnergy (int min, int max, boolean doUse) {
    
    buildcraft/common/net/minecraft/src/buildcraft/api/PowerProvider.java lines 64–99 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  19. ^ abBuildCraft 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.CodeBuildCraft 2.2.4revised
    How we know
    109		CoreProxy.addName(new ItemStack (engineBlock, 1, 0), "Redstone Engine");
    110		CoreProxy.addName(new ItemStack (engineBlock, 1, 1), "Steam Engine");
    111		CoreProxy.addName(new ItemStack (engineBlock, 1, 2), "Combustion Engine");
    
    buildcraft/common/net/minecraft/src/BuildCraftEnergy.java lines 109–111 at 0a20887 · upstream ↗
    16		maxEnergy = 1000;
    ⋮
    49		if (tile.worldObj.isBlockIndirectlyGettingPowered(tile.xCoord, tile.yCoord, tile.zCoord)) {
    50			if ((tile.worldObj.getWorldTime() % 20) == 0) {
    51				energy++;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineWood.java lines 16–54 at 0a20887 · upstream ↗
    28		maxEnergy = 10000;
    29		maxEnergyExtracted = 100;
    ⋮
    64		if(burnTime > 0) {
    65			burnTime--;
    66			addEnergy(1);
    ⋮
    69		if (burnTime == 0 && tile.worldObj.isBlockIndirectlyGettingPowered(tile.xCoord,
    ⋮
    92			return 300;
    ⋮
    97		if (i == Item.coal.shiftedIndex) {
    98			return 1600;
    ⋮
    100		if (i == Item.bucketLava.shiftedIndex) {
    101			return 20000;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineStone.java lines 28–106 at 0a20887 · upstream ↗
    38		maxEnergy = 100000;
    39		maxEnergyExtracted = 500;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java lines 38–39 at 0a20887 · upstream ↗
    26	public int maxEnergyExtracted = 1;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/Engine.java line 26 at 0a20887 · upstream ↗
    90			if (engine.progress > 0.5 && progressPart == 1) {
    ⋮
    102					int extracted = engine.extractEnergy(
    103							receptor.getPowerProvider().minEnergyReceived,
    104							receptor.getPowerProvider().maxEnergyReceived, true);
    ⋮
    114		} else if (isPowered) {
    ⋮
    125						receptor.getPowerProvider().minEnergyReceived,
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/TileEngine.java lines 84–131 at 0a20887 · upstream ↗
    46		case Blue:
    47			return 0.02F;
    ⋮
    52		case Red:
    53			return 0.16F;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineStone.java lines 44–57 at 0a20887 · upstream ↗
    82		if (tile.worldObj.isBlockIndirectlyGettingPowered(tile.xCoord,
    83				tile.yCoord, tile.zCoord)) {
    ⋮
    85			if(burnTime > 0 || liquidQty > 0) {
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java lines 80–85 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  20. ^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.CodeBuildCraft 2.2.4
    How we know
    119			if (Orientations.values()[o] != pos.orientation.reverse()
    120					&& container.pipe.outputOpen(Orientations.values()[o])) {
    ⋮
    159		if (entity instanceof IPipeEntry) {
    160			return true;
    161		} else if (entity instanceof TileGenericPipe) {
    ⋮
    164			return pipe.pipe.transport instanceof PipeTransportItems;
    165		} else if (entity instanceof IInventory) {					
    166			if (new StackUtil(item.item).checkAvailableSlot((IInventory) entity,
    ⋮
    168				return true;
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java lines 114–173 at 0a20887 · upstream ↗
    225				Orientations nextOrientation = resolveDestination (data);
    ⋮
    227				if (nextOrientation == Orientations.Unknown) {
    228					scheduleRemoval(data.item);
    ⋮
    230					EntityItem dropped = data.item.toEntityItem(data.orientation);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java lines 225–237 at 0a20887 · upstream ↗
    263				} else if (tile instanceof IInventory) {
    ⋮
    271							data.item.remove();						
    272						} else {
    273							data.item.item = utils.items;
    274							EntityItem dropped = data.item.toEntityItem(data.orientation);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java lines 263–282 at 0a20887 · upstream ↗
    377		if (listOfPossibleMovements.size() == 0) {					
    378			return Orientations.Unknown;													
    379		} else {
    ⋮
    382			if (APIProxy.isClient(worldObj) || APIProxy.isServerSide()) {
    383				i = Math.abs(data.item.entityId + xCoord + yCoord + zCoord
    384						+ data.item.deterministicRandomization)
    385						% listOfPossibleMovements.size();
    386			} else {
    387				i = worldObj.rand.nextInt(listOfPossibleMovements.size());
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java lines 373–393 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  21. ^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.CodeBuildCraft 2.2.4
    How we know
    28		if (currentPower != lastPower) {
    29			switchPosition();
    ⋮
    55				if (((TileGenericPipe) tile).pipe.logic instanceof PipeLogicWood) {
    56					continue;
    ⋮
    60			if (tile instanceof IPipeEntry 
    61					|| tile instanceof IInventory
    62					|| tile instanceof ILiquidContainer
    63					|| tile instanceof TileGenericPipe) {
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicIron.java lines 24–69 at 0a20887 · upstream ↗
    112	public boolean outputOpen(Orientations to) {
    113		return to.ordinal() == worldObj
    114				.getBlockMetadata(xCoord, yCoord, zCoord);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicIron.java lines 112–115 at 0a20887 · upstream ↗
    58			for (int slot = 0; slot < 9; ++slot) {
    59				ItemStack stack = logic.getStackInSlot(dir.ordinal() * 9 + slot);
    ⋮
    67					if ((Item.itemsList[item.item.itemID].isDamageable())) {
    68						filteredOrientations.add(dir);
    ⋮
    71						filteredOrientations.add(dir);
    ⋮
    75			if (!foundFilter) {				
    76				defaultOrientations.add(dir);
    ⋮
    79		if(filteredOrientations.size() != 0) {
    80			return filteredOrientations;
    81		} else {
    82			return defaultOrientations;
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsDiamond.java lines 46–84 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  22. ^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.CodeBuildCraft 2.2.4
    How we know
    37	public static float pipeNormalSpeed = 0.01F;
    
    buildcraft/common/net/minecraft/src/buildcraft/core/Utils.java line 37 at 0a20887 · upstream ↗
    65		if (item.speed > Utils.pipeNormalSpeed) {
    66			item.speed = item.speed - Utils.pipeNormalSpeed;
    ⋮
    69		if (item.speed < Utils.pipeNormalSpeed) {
    70			item.speed = Utils.pipeNormalSpeed;
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportItems.java lines 63–72 at 0a20887 · upstream ↗
    37			item.speed = item.speed - Utils.pipeNormalSpeed / 2.0F;
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsStone.java lines 35–43 at 0a20887 · upstream ↗
    70		if (worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) {
    71			item.speed = Utils.pipeNormalSpeed * 20F;
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsGold.java lines 69–73 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  23. ^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.CodeBuildCraft 2.2.4 · BuildCraft 3.2.2
    How we know
    75	public static boolean PIPES_ALWAYS_CONNECT = false;
    
    buildcraft/common/net/minecraft/src/buildcraft/core/DefaultProps.java line 75 at 0a20887 · upstream ↗
    27			return (pipe2 == null || !(pipe2.logic instanceof PipeLogicCobblestone))
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicStone.java lines 24–29 at 0a20887 · upstream ↗
    27			return (pipe2 == null || !(pipe2.logic instanceof PipeLogicStone))
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeLogicCobblestone.java lines 24–29 at 0a20887 · upstream ↗
    56			return (pipe2 == null || !(pipe2.logic instanceof PipeLogicGold))
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsGold.java lines 53–58 at 0a20887 · upstream ↗
    51//			return (pipe2 == null || !(pipe2.logic instanceof PipeLogicGold)) && super.isPipeConnected(tile);
    
    common/buildcraft/transport/pipes/PipeItemsGold.java lines 48–51 at 40eb640 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  24. ^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.CodeBuildCraft 2.2.4
    How we know
    115		CoreProxy.addName(pipeWaterproof, "Pipe Waterproof");
    ⋮
    118			Character.valueOf('W'), new ItemStack(Item.dyePowder, 1, 2)});
    
    buildcraft/common/net/minecraft/src/BuildCraftTransport.java lines 113–118 at 0a20887 · upstream ↗
    124		pipeItemsWood = createPipe (DefaultProps.PIPE_ITEMS_WOOD_ID, PipeItemsWood.class, "Wooden Transport Pipe", Block.planks, Block.glass, Block.planks);
    ⋮
    130		pipeItemsObsidian = createPipe (DefaultProps.PIPE_ITEMS_OBSIDIAN_ID, PipeItemsObsidian.class, "Obsidian Transport Pipe", Block.obsidian, Block.glass, Block.obsidian);
    ⋮
    132		pipeLiquidsWood = createPipe (DefaultProps.PIPE_LIQUIDS_WOOD_ID, PipeLiquidsWood.class, "Wooden Waterproof Pipe", pipeWaterproof, pipeItemsWood, null);
    ⋮
    136		pipeLiquidsGold = createPipe (DefaultProps.PIPE_LIQUIDS_GOLD_ID, PipeLiquidsGold.class, "Golden Waterproof Pipe", pipeWaterproof, pipeItemsGold, null);			
    ⋮
    140		pipePowerWood = createPipe (DefaultProps.PIPE_POWER_WOOD_ID, PipePowerWood.class, "Wooden Conductive Pipe", Item.redstone,  pipeItemsWood, null);		
    ⋮
    144		pipePowerGold = createPipe(DefaultProps.PIPE_POWER_GOLD_ID, PipePowerGold.class, "Golden Conductive Pipe", Item.redstone, pipeItemsGold, null);
    
    buildcraft/common/net/minecraft/src/BuildCraftTransport.java lines 124–144 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  25. ^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.CodeBuildCraft 2.2.4
    How we know
    36	public double powerResitance = 0.01;
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java line 36 at 0a20887 · upstream ↗
    96				double totalWatt = internalPower [i];
    ⋮
    100						double watts = (totalWatt / div * powerQuery [j]);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java lines 83–127 at 0a20887 · upstream ↗
    206			internalNextPower[from.ordinal()] += val * (1 - powerResitance);
    ⋮
    208			if (internalNextPower [from.ordinal()] >= 1000) {
    209				worldObj.createExplosion(null, xCoord, yCoord, zCoord, 2);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/PipeTransportPower.java lines 200–212 at 0a20887 · upstream ↗
    20		((PipeTransportPower) transport).powerResitance = 0.001;
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipePowerGold.java line 20 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  26. ^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.CodeBuildCraft 2.2.4revised
    How we know
    49		} else if (energy / (double) maxEnergy * 100.0 <= 100.0) {
    50			energyStage = EnergyStage.Red;
    51		} else {
    52			energyStage = EnergyStage.Explosion;
    ⋮
    85	public void addEnergy (int addition) {
    86		energy += addition;
    ⋮
    88		if (getEnergyStage() == EnergyStage.Explosion) {
    89			tile.worldObj.createExplosion(null, tile.xCoord, tile.yCoord,
    90					tile.zCoord, explosionRange());
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/Engine.java lines 42–96 at 0a20887 · upstream ↗
    37		return 4;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineStone.java lines 36–38 at 0a20887 · upstream ↗
    23	public static int MAX_HEAT          = 100000;
    24	public static int COOLANT_THRESHOLD = 49000;
    ⋮
    47		return 8;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java lines 22–48 at 0a20887 · upstream ↗
    93				addEnergy(currentFuel.powerPerCycle);			
    94				heat += currentFuel.powerPerCycle;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java lines 93–94 at 0a20887 · upstream ↗
    120		if (heat > COOLANT_THRESHOLD) {			
    121			int extraHeat = heat - COOLANT_THRESHOLD;
    ⋮
    123			if (coolantQty > extraHeat) {
    124				coolantQty -= extraHeat;
    125				heat = COOLANT_THRESHOLD;
    126			} else {
    ⋮
    132		if (heat > 0 && !tile.worldObj.isBlockIndirectlyGettingPowered(tile.xCoord,
    133						tile.yCoord, tile.zCoord)) {
    134			if (heat >= 10) {
    135				heat -= 10;
    136			} else {
    ⋮
    149		} else if (heat <= MAX_HEAT) {
    ⋮
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java lines 120–154 at 0a20887 · upstream ↗
    163		if (id == Block.waterStill.blockID) {
    164			return fillCoolant (from, quantity, id, doFill);
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java lines 162–165 at 0a20887 · upstream ↗
    51				energy++;
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineWood.java lines 49–52 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  27. ^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.CodeBuildCraft 3.2.2 · BuildCraft 2.2.4 · asie, "BuildCraft History and Design", 30 January 2015
    How we know
    40			fontRenderer.drawString(engine.getCurrentOutput() + " MJ/t", x + 22, y + 32, textColour);
    ⋮
    42			fontRenderer.drawString(engine.getEnergyStored() + " MJ", x + 22, y + 56, textColour);
    
    common/buildcraft/energy/gui/GuiEngine.java lines 40–42 at 40eb640 · upstream ↗
    23	public int energy;	
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/Engine.java line 23 at 0a20887 · upstream ↗
    The major revolution here was the addition of a power system - Minecraft Joules.
    opening section, on 2.0.0 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  28. ^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.CodeBuildCraft 2.2.4
    How we know
    435			a = Utils.getNearbyAreaProvider(worldObj, xCoord, yCoord,
    ⋮
    440			a = new DefaultAreaProvider(xCoord, yCoord, zCoord, xCoord + 10,
    441					yCoord + 4, zCoord + 10);
    ⋮
    450		if (xSize < 3 || zSize < 3) {
    451			a = new DefaultAreaProvider(xCoord, yCoord, zCoord, xCoord + 10,
    452					yCoord + 4, zCoord + 10);
    ⋮
    463		if (ySize < 5) {
    464			ySize = 5;
    ⋮
    471			Orientations o = Orientations.values()[worldObj.getBlockMetadata(
    472					xCoord, yCoord, zCoord)].reverse();
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java lines 431–495 at 0a20887 · upstream ↗
    164			// configuration for building phase
    165			powerProvider.configure(20, 25, 25, 25, MAX_ENERGY);
    ⋮
    167			if (powerProvider.useEnergy(25, 25, true) != 25) {
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java lines 163–169 at 0a20887 · upstream ↗
    513				bluePrint.setBlockId(i, it * (box.sizeY() - 1), 0,
    514						BuildCraftFactory.frameBlock.blockID);
    ⋮
    516						BuildCraftFactory.frameBlock.blockID);
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java lines 511–520 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  29. ^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.CodeBuildCraft 2.2.4
    How we know
    215		for (int searchY = yCoord + 3; searchY >= 0; --searchY) {
    ⋮
    218			if (searchY % 2 == 0) {
    ⋮
    248						if (blockDig (blockId)) {		
    249							blockedColumns [searchX][searchZ] = true;						
    250						} else if (canDig(blockId)) {
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java lines 206–267 at 0a20887 · upstream ↗
    400		return blockID == Block.bedrock.blockID
    401				|| blockID == Block.lavaStill.blockID
    402				|| blockID == Block.lavaMoving.blockID;
    ⋮
    406		return !blockDig(blockID) 
    407				&& !API.softBlock(blockID)
    408				&& blockID != Block.snow.blockID;
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java lines 399–409 at 0a20887 · upstream ↗
    50		return blockId == 0 
    51				|| blockId == Block.waterStill.blockID
    52				|| blockId == Block.waterMoving.blockID
    
    buildcraft/common/net/minecraft/src/buildcraft/api/API.java lines 49–54 at 0a20887 · upstream ↗
    361				// First, try to add to a nearby chest
    ⋮
    369					added = Utils.addToRandomPipeEntry(this,
    ⋮
    373				// Last, throw the object away
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java lines 361–392 at 0a20887 · upstream ↗
    56	public static int MAX_ENERGY = 7000;
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java line 56 at 0a20887 · upstream ↗
    118			int energyToUse = 2 + powerProvider.energyStored / 1000;
    ⋮
    124				arm.doMove(0.015 + (float) energy / 200F);
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileQuarry.java lines 116–126 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  30. ^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.CodeBuildCraft 2.2.4
    How we know
    102		autoWorkbenchBlock = new BlockAutoWorkbench(
    103				Integer.parseInt(autoWorkbenchId.value));
    ⋮
    111				"Automatic Crafting Table");
    
    buildcraft/common/net/minecraft/src/BuildCraftFactory.java lines 102–111 at 0a20887 · upstream ↗
    185				if (stack.stackSize <= 1) {
    186					StackPointer pointer = getNearbyItem(stack.itemID,
    187							stack.getItemDamage());
    ⋮
    189					if (pointer == null) {
    190						resetPointers(pointerList);
    ⋮
    192						return null;
    ⋮
    199					pointer.item = this.decrStackSize(i, 1);
    ⋮
    209		ItemStack resultStack = CraftingManager.getInstance().findMatchingRecipe(
    210				craftMatrix);
    ⋮
    213			resetPointers(pointerList);
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileAutoWorkbench.java lines 165–228 at 0a20887 · upstream ↗
    277		if (tile instanceof ISpecialInventory) {
    278			// Don't get stuff out of ISpecialInventory for now / we wouldn't
    ⋮
    281		} else if (tile instanceof IInventory) {
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileAutoWorkbench.java lines 270–281 at 0a20887 · upstream ↗
    136					&& stackInInventory.itemID == stack.itemID
    137					&& stackInInventory.getItemDamage() == stack.getItemDamage()
    138					&& stackInInventory.stackSize < minSimilar) {
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileAutoWorkbench.java lines 125–157 at 0a20887 · upstream ↗
    137		if (inventory instanceof ISpecialInventory) {
    138			// TAKE INTO ACCOUNT SPECIAL INVENTORIES!!!
    139			return ((ISpecialInventory) inventory).extractItem(doRemove, from);
    
    buildcraft/common/net/minecraft/src/buildcraft/transport/pipes/PipeItemsWood.java lines 137–140 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  31. ^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.CodeBuildCraft 2.2.4revised
    How we know
    36		if (biomegenbase == BiomeGenBase.desert && rand.nextFloat() > 0.97) {
    37			// Generate a small desert deposit
    ⋮
    48						generateSurfaceDeposit(world, i, j, k, 3);						
    ⋮
    56		boolean mediumDeposit = rand.nextDouble() <= (0.2 / 100.0);
    57		boolean largeDeposit = rand.nextDouble() <= (0.005 / 100.0);
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/OilPopulate.java lines 36–57 at 0a20887 · upstream ↗
    66			int cx = x, cy = 20 + rand.nextInt(10), cz = z;
    ⋮
    71				r = 8 + rand.nextInt(9);
    72			} else if (mediumDeposit) {
    73				r = 4 + rand.nextInt(4);
    ⋮
    103						generateSurfaceDeposit(world, cx, y, cz,
    104								20 + rand.nextInt(20));
    105					} else if (mediumDeposit) {
    106						generateSurfaceDeposit(world, cx, y, cz,
    107								5 + rand.nextInt(5));
    ⋮
    113						ymax = (y + 30 < 128 ? y + 30 : 128);						
    114					} else if (mediumDeposit) {
    115						ymax = (y + 4 < 128 ? y + 4 : 128);
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/OilPopulate.java lines 63–127 at 0a20887 · upstream ↗
    157	public static void generateSurface(World world, Random random, int i, int j) {
    158		OilPopulate.doPopulate(world, i, j);
    
    buildcraft/common/net/minecraft/src/BuildCraftEnergy.java lines 157–159 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  32. ^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.CodeBuildCraft 2.2.4
    How we know
    84						if (powerProvider.useEnergy(10, 10, true) == 10) {
    85							index = getNextIndexToPump(true);
    86							worldObj.setBlockWithNotify(index.i, index.j, index.k, 0);
    87							internalLiquid = internalLiquid += API.BUCKET_VOLUME;
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TilePump.java lines 74–93 at 0a20887 · upstream ↗
    124				if (tile instanceof ILiquidContainer) {
    125					internalLiquid -= ((ILiquidContainer) tile).fill(
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TilePump.java lines 115–132 at 0a20887 · upstream ↗
    22	public static final int BUCKET_VOLUME = 1000;
    
    buildcraft/common/net/minecraft/src/buildcraft/api/API.java line 22 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  33. ^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.CodeBuildCraft 2.2.4
    How we know
    141		TileRefinery.addRecipe(new RefineryRecipe(oilStill.blockID, 1, 0, 0,
    142				10, fuel.shiftedIndex, 1, 1));
    
    buildcraft/common/net/minecraft/src/BuildCraftEnergy.java lines 141–142 at 0a20887 · upstream ↗
    22	public RefineryRecipe(int sourceId1, int sourceQty1, int sourceId2,
    23			int sourceQty2, int energy, int resultId, int resultQty, int delay) {
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/RefineryRecipe.java lines 22–23 at 0a20887 · upstream ↗
    33	public static int LIQUID_PER_SLOT = API.BUCKET_VOLUME * 4;	
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileRefinery.java line 33 at 0a20887 · upstream ↗
    262		if (!time.markTimeIfDelay(worldObj, currentRecipe.delay)) {
    263			return;
    ⋮
    266		int energyUsed = powerProvider.useEnergy(currentRecipe.energy,
    267				currentRecipe.energy, true);
    ⋮
    269		if (energyUsed != 0) {
    270			result.liquidId = currentRecipe.resultId;
    271			result.quantity += currentRecipe.resultQty;
    272			src1.quantity -= currentRecipe.sourceQty1;
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TileRefinery.java lines 256–277 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  34. ^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.CodeBuildCraft 2.2.4
    How we know
    144		API.ironEngineFuel.put(Block.lavaStill.blockID, new IronEngineFuel(
    145				oilStill.blockID, 1, 2000));
    146		API.ironEngineFuel.put(oilStill.blockID, new IronEngineFuel(
    147				oilStill.blockID, 2, 10000));
    148		API.ironEngineFuel.put(fuel.shiftedIndex, new IronEngineFuel(
    149				fuel.shiftedIndex, 5, 50000));
    
    buildcraft/common/net/minecraft/src/BuildCraftEnergy.java lines 144–149 at 0a20887 · upstream ↗
    17	public IronEngineFuel (int fuelId, int powerPerCycle, int totalBurningTime) {
    
    buildcraft/common/net/minecraft/src/buildcraft/api/IronEngineFuel.java line 17 at 0a20887 · upstream ↗
    85			if(burnTime > 0 || liquidQty > 0) {
    86				if (burnTime > 0) {
    87					burnTime--;
    88				} else {
    89					liquidQty--;
    90					burnTime = currentFuel.totalBurningTime / API.BUCKET_VOLUME;
    ⋮
    93				addEnergy(currentFuel.powerPerCycle);			
    
    buildcraft/common/net/minecraft/src/buildcraft/energy/EngineIron.java lines 85–94 at 0a20887 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  35. ^By 3.2.2 (December 2012) the values have changed: the combustion engine makes 6 energy a tick on fuel (burn time 100,000), 3 on oil and 1 on lava (20,000 each), and the refinery takes 12 energy a unit.CodeBuildCraft 3.2.2
    How we know
    148		RefineryRecipe.registerRefineryRecipe(new RefineryRecipe(new LiquidStack(oilStill.blockID, 1, 0), null, new LiquidStack(fuel.shiftedIndex, 1, 0), 12, 1));
    ⋮
    151		IronEngineFuel.fuels.add(new IronEngineFuel(Block.lavaStill.blockID, 1, 20000));
    152		IronEngineFuel.fuels.add(new IronEngineFuel(oilStill.blockID, 3, 20000));
    153		IronEngineFuel.fuels.add(new IronEngineFuel(fuel.shiftedIndex, 6, 100000));
    
    common/buildcraft/BuildCraftEnergy.java lines 148–153 at 40eb640 · upstream ↗
    48	public RefineryRecipe(LiquidStack ingredient1, LiquidStack ingredient2, LiquidStack result, int energy, int delay) {
    
    common/buildcraft/api/recipes/RefineryRecipe.java line 48 at 40eb640 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  36. ^BuildCraft 3.1.2 (January 2012) has seven gates, made on the assembly table from a redstone chipset (and pipe wire, above the plain Gate) and fixed onto a pipe: the Gate (one trigger and action), Iron AND and OR Gates (two), Gold AND and OR Gates (four, with a parameter each) and Diamond AND and OR Gates (eight, with parameters). The assembly costs 20,000 energy for the Gate, 40,000 for iron, 80,000 for gold and 160,000 for diamond.CodeBuildCraft 3.1.2
    How we know
    81				new ItemStack[] { new ItemStack(redstoneChipset, 1, 0) },
    82				20000, new ItemStack(BuildCraftTransport.pipeGate, 1, 0)));
    83		CoreProxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 0),
    84				"Gate");
    ⋮
    88				new ItemStack(BuildCraftTransport.redPipeWire) }, 40000,
    ⋮
    94				new ItemStack(BuildCraftTransport.redPipeWire) }, 40000,
    ⋮
    97				"Iron OR Gate");
    ⋮
    102				new ItemStack(BuildCraftTransport.bluePipeWire) }, 80000,
    ⋮
    109				new ItemStack(BuildCraftTransport.bluePipeWire) }, 80000,
    ⋮
    112				"Gold OR Gate");
    ⋮
    119				new ItemStack(BuildCraftTransport.yellowPipeWire) }, 160000,
    ⋮
    128				new ItemStack(BuildCraftTransport.yellowPipeWire) }, 160000,
    ⋮
    
    common/net/minecraft/src/BuildCraftSilicon.java lines 80–131 at 972c1c9 · upstream ↗
    186		if (pipe.gateKind == GateKind.Single) {
    187			nbEntries = 1;
    ⋮
    192		} else if (pipe.gateKind == GateKind.AND_2 || pipe.gateKind == GateKind.OR_2) {
    193			nbEntries = 2;
    ⋮
    201		} else if (pipe.gateKind == GateKind.AND_3 || pipe.gateKind == GateKind.OR_3) {
    202			nbEntries = 4;
    ⋮
    217				slots [position] = new TriggerParameterSlot (78, 36 + 18 * k, pipe.getTriggerParameter(position - 8));
    ⋮
    221		} else if (pipe.gateKind == GateKind.AND_4 || pipe.gateKind == GateKind.OR_4) {
    222			nbEntries = 8;
    
    buildcraft_client/src/net/minecraft/src/buildcraft/transport/GuiGateInterface.java lines 186–222 at 972c1c9 · upstream ↗
    371			else if (entityplayer.getCurrentEquippedItem().itemID == BuildCraftTransport.pipeGate.shiftedIndex) {		
    372				if (!pipe.hasInterface()) {
    
    common/net/minecraft/src/buildcraft/transport/BlockGenericPipe.java lines 371–395 at 972c1c9 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  37. ^In 3.1.2 a gate pairs each trigger with an action. Pairs that name the same action are combined, with AND on an AND gate and OR on the others, and each action whose result is true fires: a redstone signal out of the pipe, a signal on one of the four pipe wires, or a command such as on, off or loop to the machine next to the pipe. Triggers read the pipe (empty, items, liquids, energy, a wire signal on or off), an adjacent inventory or tank (empty, contains, has space, full), a machine (active or not), redstone in, and an engine's heat stage.CodeBuildCraft 3.1.2
    How we know
    604				if (!actions.containsKey(action.id)) {
    605					actions.put(action.id, isNearbyTriggerActive(trigger, parameter));
    606				} else {
    607					if (gateKind == GateKind.AND_2
    608							|| gateKind == GateKind.AND_3
    609							|| gateKind == GateKind.AND_4) {
    610						actions.put(action.id, actions.get(action.id)
    611								&& isNearbyTriggerActive(trigger, parameter));
    612					} else {
    613						actions.put(action.id, actions.get(action.id)
    614								|| isNearbyTriggerActive(trigger, parameter));
    ⋮
    624				if (BuildCraftAPI.actions [i] instanceof ActionRedstoneOutput) {
    ⋮
    
    common/net/minecraft/src/buildcraft/transport/Pipe.java lines 583–638 at 972c1c9 · upstream ↗
    85	public static Trigger triggerMachineActive = new TriggerMachine(DefaultProps.TRIGGER_MACHINE_ACTIVE, true);
    ⋮
    90	public static Trigger triggerFullInventory = new TriggerInventory(DefaultProps.TRIGGER_FULL_INVENTORY, TriggerInventory.State.Full);
    ⋮
    94	public static Trigger triggerFullLiquid = new TriggerLiquidContainer(DefaultProps.TRIGGER_FULL_LIQUID, TriggerLiquidContainer.State.Full);
    95	public static Trigger triggerRedstoneActive = new TriggerRedstoneInput(DefaultProps.TRIGGER_REDSTONE_ACTIVE, true);
    ⋮
    98	public static Action actionRedstone = new ActionRedstoneOutput(DefaultProps.ACTION_REDSTONE);
    99	public static Action actionOn = new ActionMachineControl(DefaultProps.ACTION_ON, Mode.On);
    100	public static Action actionOff = new ActionMachineControl(DefaultProps.ACTION_OFF, Mode.Off);
    101	public static Action actionLoop = new ActionMachineControl(DefaultProps.ACTION_LOOP, Mode.Loop);
    
    common/net/minecraft/src/BuildCraftCore.java lines 85–101 at 972c1c9 · upstream ↗
    100	public static Trigger triggerPipeEmpty = new TriggerPipeContents(DefaultProps.TRIGGER_PIPE_EMPTY, Kind.Empty);
    ⋮
    103	public static Trigger triggerPipeEnergy = new TriggerPipeContents(DefaultProps.TRIGGER_PIPE_ENERGY, Kind.ContainsEnergy);
    104	public static Trigger triggerRedSignalActive = new TriggerPipeSignal(DefaultProps.TRIGGER_RED_SIGNAL_ACTIVE, true, IPipe.WireColor.Red);
    ⋮
    113	public static Action actionRedSignal = new ActionSignalOutput(DefaultProps.ACTION_RED_SIGNAL, IPipe.WireColor.Red);
    
    common/net/minecraft/src/BuildCraftTransport.java lines 100–116 at 972c1c9 · upstream ↗
    56	public static Trigger triggerBlueEngineHeat = new TriggerEngineHeat(DefaultProps.TRIGGER_BLUE_ENGINE_HEAT, EnergyStage.Blue);
    
    common/net/minecraft/src/BuildCraftEnergy.java lines 56–59 at 972c1c9 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  38. ^In 3.1.2 a pipe can carry any of four wires, red, blue, green and yellow, each a separate signal. A gate sending on a wire sets it to 255 in its pipe; each pipe takes the strongest of its wired neighbors less 1, so a signal fades out about 255 pipes from its source, and spreads only through pipes that carry the same color.CodeBuildCraft 3.1.2
    How we know
    61	public boolean [] wireSet = new boolean [] {false, false, false, false};
    
    common/net/minecraft/src/buildcraft/transport/Pipe.java lines 60–61 at 972c1c9 · upstream ↗
    236		CoreProxy.addName(redPipeWire, "Red Pipe Wire");
    ⋮
    245		CoreProxy.addName(bluePipeWire, "Blue Pipe Wire");
    ⋮
    254		CoreProxy.addName(greenPipeWire, "Green Pipe Wire");
    ⋮
    263		CoreProxy.addName(yellowPipeWire, "Yellow Pipe Wire");
    
    common/net/minecraft/src/BuildCraftTransport.java lines 236–263 at 972c1c9 · upstream ↗
    333					if (isWireConnectedTo(tile, color)) {
    334						foundBiggerSignal |= receiveSignal(
    335								tilePipe.pipe.signalStrength[color.ordinal()] - 1,
    336								color);
    ⋮
    342		if (!foundBiggerSignal && signalStrength [color.ordinal()] != 0) {
    343			signalStrength [color.ordinal()]= 0;
    
    common/net/minecraft/src/buildcraft/transport/Pipe.java lines 323–344 at 972c1c9 · upstream ↗
    367		if (!wireSet [color.ordinal()]) {
    368			return;
    ⋮
    373		if (broadcastSignal [color.ordinal()]) {
    374			receiveSignal(255, color);
    375		} else {
    376			readNearbyPipesSignal(color);
    ⋮
    381		if (signalStrength [color.ordinal()] > 1) {
    ⋮
    389							&& tilePipe.pipe.wireSet [color.ordinal()]) {
    390						if (isWireConnectedTo(tile, color)) {
    391							tilePipe.pipe.receiveSignal(
    392									signalStrength[color.ordinal()] - 1, color);
    
    common/net/minecraft/src/buildcraft/transport/Pipe.java lines 366–398 at 972c1c9 · upstream ↗
    407		if (signal >= signalStrength [color.ordinal()] && signal != 0) {
    408			signalStrength [color.ordinal()] = signal;			
    
    common/net/minecraft/src/buildcraft/transport/Pipe.java lines 400–408 at 972c1c9 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  39. ^Friday Facts #50 (2014) says "Factorio was inspired by Buildcraft". In 2013 kovarex wrote that a topic he had started (linked to mod-buildcraft.com's forums) made him start thinking about making his own game.Dev blogFFF-50 · kovarex, "How it all begun" forum post, 6 October 2013revised
    How we know
    Factorio was inspired by Buildcraft, this game might be inspired by Factorio and it is in fact honour for us.
    Automation genre · archived copy ↗
    This topic I started (1 year, 7 months ago) made me start thinking about making my own game.
    first post, kovarex, 6 October 2013 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  40. ^Michal Kovařík (kovarex), Factorio's founder, wrote in 2014 that modded Minecraft, "mainly buildcraft/industrialcraft", was a huge inspiration to create Factorio, and that he had made private changes to those mods before he had the idea for a game of his own.Dev blogkovarex, Reddit, 1 August 2014
    How we know
    I never ever tried to hide the fact, that Modded minecraft, mainly buildcraft/industrialcraft, was huge inspiration to create Factorio. In fact, before even the idea to create my own game came to my mind, I started to make my own (private) changes to these minecraft mods.
    kovarex's comment, 1 August 2014 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  41. ^In a February 2013 plan for Factorio's energy, kovarex proposed oil, saying he didn't want to copy BuildCraft's oil concept completely but liked it a lot, and that processing oil into fuel or other products "as in build craft" would be nice. It is a proposal; the post doesn't say what shipped.Dev blogkovarex, "Electric energy" forum post, 7 February 2013
    How we know
    I don't want to ripoff the buildcraft oil concept completely … but I like it a lot. … Processing oil to fuel or other products as in build craft would be nice
    first post, kovarex, 7 February 2013, under "Oil" · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

  42. ^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.CodeBuildCraft 2.2.4 · factorio-data 2.1.23revised
    How we know
    84						if (powerProvider.useEnergy(10, 10, true) == 10) {
    85							index = getNextIndexToPump(true);
    86							worldObj.setBlockWithNotify(index.i, index.j, index.k, 0);
    
    buildcraft/common/net/minecraft/src/buildcraft/factory/TilePump.java lines 84–87 at 0a20887 · upstream ↗
    141		TileRefinery.addRecipe(new RefineryRecipe(oilStill.blockID, 1, 0, 0,
    142				10, fuel.shiftedIndex, 1, 1));
    ⋮
    148		API.ironEngineFuel.put(fuel.shiftedIndex, new IronEngineFuel(
    149				fuel.shiftedIndex, 5, 50000));
    
    buildcraft/common/net/minecraft/src/BuildCraftEnergy.java lines 141–149 at 0a20887 · upstream ↗
    220    name = "crude-oil",
    ⋮
    223    category = "basic-fluid",
    ⋮
    226    infinite = true,
    ⋮
    241          name = "crude-oil",
    
    base/prototypes/entity/resources.lua lines 218–242 at 39dbd0f · upstream ↗
    1867    name = "pumpjack",
    ⋮
    1871    resource_categories = {"basic-fluid"},
    
    base/prototypes/entity/mining-drill.lua lines 1867–1871 at 39dbd0f · upstream ↗
    153    name = "basic-oil-processing",
    ⋮
    163      {type = "fluid", name = "petroleum-gas", amount = 45, fluidbox_index = 3}
    ⋮
    178    name = "advanced-oil-processing",
    ⋮
    184      {type = "fluid", name = "water", amount = 50},
    185      {type = "fluid", name = "crude-oil", amount = 100}
    ⋮
    189      {type = "fluid", name = "heavy-oil", amount = 25},
    190      {type = "fluid", name = "light-oil", amount = 45},
    191      {type = "fluid", name = "petroleum-gas", amount = 55}
    
    base/prototypes/recipe.lua lines 153–229 at 39dbd0f · upstream ↗
    234    name = "heavy-oil-cracking",
    235    categories = {"chemistry"},
    ⋮
    264    name = "light-oil-cracking",
    265    categories = {"chemistry"},
    ⋮
    295    categories = {"chemistry"},
    ⋮
    324    categories = {"chemistry"},
    
    base/prototypes/recipe.lua lines 234–344 at 39dbd0f · upstream ↗
    8857    crafting_categories = {"chemistry"},
    
    base/prototypes/entity/entities.lua lines 8849–8857 at 39dbd0f · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  43. ^Friday Facts #416 (2024) says that in the discussions on Factorio 2.0's fluids, Rseding proposed an algorithm "very close to" one from the Minecraft mod Thermal Expansion by Team CoFH, in which pipes, underground pipes, and storage tanks merge into fluid "segments".Dev blogFriday Facts #416
    How we know
    Rseding proposed an algorithm very close to one he had played with several times, an algorithm from the Minecraft mod Thermal Expansion by team CoFH: Pipes, underground pipes, and storage tanks are merged into fluid "segments".
    The new algorithm · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-26.

    Checked by a second AI model, 2026-10-26.

    In the claim ledger

Sources

Code

Primary

Secondary