"An early way to get Steam Power"

*1.6.2 Machine*

This little Boiler is your first step in the machinery of the Bronze Age, and is required to progress to the steel/electrical age.
If you've ever used a Railcraft Solid-Fuel Boiler, this works basically like that but on a much smaller scale. The Small Coal Boiler produces 6 Litres (6mB) of Steam per tick. 6 per tick is only enough to run 1 steam machine at full speed, and even then, only certain ones. Nevertheless, it gets the job done while resources are scarce.

Left to Right: Fluid container in/out, Steam tank, Water tank, Heat bar, Ashtray, Combustion Indicator, and Fuel Slot
Left to Right: Fluid container in/out, Steam tank, Water tank, Heat bar, Ashtray, Combustion Indicator, and Fuel Slot

Interface:

The interface of the Small Coal Boiler has the following elements:
- Two Cell IN/OUT slots (for water)
- Steam Tank
- Water Tank
- Heat Bar (Temperature)
- Fuel slot
- Ashtray
- Combustion Time Gauge (Flame Symbol) (processingEnergy)




To operate the Small Coal Boiler, place Coal, Charcoal, or Coal Coke in the fuel slot. These will burn and produce Dark Ashes [C2] from Coal and Charcoal, or Ashes [C] from Coal Coke in the Ashtray.
Inserting an acceptable item into the fuel slot will make it disappear, and refill the Combustion Time Gauge. Once the Combustion is finished, the Small Coal Boiler will remove another item from the Fuel slot.

The Small Coal Boiler takes its name seriously; it can only be run off of Coal, Charcoal, Coal Coke, and Lignite. It will not accept any other burnable items, including Coal/Coke Blocks.
One piece of Coal or Charcoal will last 32 seconds. One piece of Coal Coke will last 128 seconds. One piece of Lignite will last 8 seconds.

While there is fuel burning in the Boiler, the Heat Bar will increase. When the Heat bar reaches full, the Boiler starts to consume fuel much more slowly. This means that, except for long periods of inactivity, it is more fuel efficient to keep it fully heated even when not using it.
In a fully heated Boiler, one piece of Coal or Charcoal will last 2 minutes. One piece of Coal Coke will last 8 minutes. One piece of Lignite will last 30 seconds.

As long as the Water Tank is not empty, heat and water will be converted into Steam and fill the internal Steam Tank.

Water can be fed either by Pipes, or added manually through the GUI or by right-clicking with a Water Bucket. The Small Coal Boiler can produce 150 buckets of Steam from one bucket of Water. One bucket of Water will last just over 20 minutes.

The Small Coal Boiler will automatically output Steam from any of its sides except the front, into any block which accepts a Fluid input. Using Bronze Fluid Pipes is recommended, however if you are using a very small setup, Steam-powered machines can be placed adjacent to the Boiler (akin to Electric machines being powered by being placed adjacent to a Generator).

Steam can also be put into containers by placing universal fluid cells or glass bottles (with railcraft installed) into the top left slot of the GUI.

Heating Times
Cold to producing Steam
~ 65 seconds
Cold to fully heated
~ 6.5 minutes
Fully heated to no longer producing Steam
15 minutes
Fully heated to fully cold
18 minutes


The High-Pressure Coal Boiler is functionally the same as the Small Coal Boiler, but produces 15 Litres (mB) of Steam per tick, and does so more fuel and water-efficiently than a Small Coal Boiler.

Safety Warning: If the Small Coal Boiler has been heated but does not contain water, you MUST wait for it to cool down before inputting water. Attempting to input water to a dry, already heated Boiler will cause it to explode violently. (If you are standing right next to it, you will probably die.)




Recipe:


external image ISFboQs.png

5 x Bronze Plate
2 x Bricks
1 x Furnace
1 x Wrench


Details, under the hood:


The Small Coal Boiler has a capacity of 16000 mB of steam.
Every tick, the boiler goes through the following process:
If the temperature is less than or equal to twenty, set the temperature to twenty and the timer to 0.
If the timer + 1 is greater than 45, the temperature increments down and the timer is set to 0.
The boiler attempts to output steam to all sides, except the front facing side (draining 1000 mB of steam/tick to each side max).[unsure?][what order?]
If getBaseMetaTileEntity().getTimer() modulus 25Long is equal to zero, the boiler enters the following procedure:
If the temperature is over 100,
If the fluid tank is null, not water, or less than/equal to zero mB (of water): a flag is set indicating the boiler is dry.
Otherwise,
if the flag is already set, the machine explodes.
The water tank is incremented down by 1 mB.
If the steam tank is empty, it is set to 150. If it is not empty, it is increased by 150 mB. Otherwise, it is set to 150 (probably in case something weird happens).
In case the temperature wasn't over 100, the dry flag is set to false (so you can put in water again).
If the steam tank (isn't null and) is greater than 16000 mB, a sound will be played and the steam tank is set to 16000 mB.
If the processingEnergy is less than/equal to zero and the machine is allowed to work (usually is),
the machine checks for its fuel inputs:
If coal is in the input slot, processingEnergy is incremented by plus 160, one coal is destroyed[?], and 25% chance for 1 darkAsh.
If charcoal is in the input slot, the same thing happens as coal.
If "fuelCoke" is in the input slot, the processingEnergy is instead incremented by 640. (33% chance for 1 darkAsh)
if Lignite is in the input slot, processingEnergy is incremented by plus 40. (11.11% chance for 1 darkAsh.)
If the processingEnergy is greater than zero and the temperature is less than 500 and
getBaseMetaTileEntity().getTimer() modulus 12Long is equal to zero, processingEnergy is incremented down 1 and temperature is incremented up 1.
For scanning purposes, the machine's active state is set to whether processingEnergy is nonzero.

[Editor's note: getBaseMetaTileEntity().getTimer() is a function for general timers usable by all GT MTEs. modulus ##Long refers to how long the timer is, in Ticks. So modulus 25Long means that this action triggers every 25th Tick, and modulus 12Long means that this action triggers every 12th Tick.
The difference between this function and a regular timer, is that the timer is specific to that block, while the .getTimer() function applies to all GT MTEs simultaneously.]
[GT MTE = GregTech MetaTileEntity]

Details, in other words:


The Small Coal Boiler holds up to 16 buckets of Steam.
Every tick, the Boiler checks its temperature. Every 45 ticks, its temperature decreases by 1. The Boiler's Temperature cannot fall below 20.
The Boiler then attempts to output steam to all sides except the front.
The Boiler then attempts to produce Steam. It will attempt to produce steam once every 25 Ticks.
If its Temperature is greater than 100, it checks for Water in its fluid tank. If it does not detect water, it flags itself as "Dry." If it detects water, it consumes 1mB Water and produces 150mB Steam. (150/25 = 6mB Steam/tick) If, however, it detects Water but it is "Dry," it explodes.
If the Boiler's Steam tank is full, the 'Steam escaping' sound effect plays.
If its Temperature is less than 100, Steam is not produced however the "Dry" flag is removed.
(A "Dry" Boiler cannot accept Water without exploding.)
If the Boiler is not currently burning fuel, (and has not been disabled by a Redstone Machine Controller cover), the Boiler checks if it has Coal in its input slot.
If it detect Coal, it consumes 1 item of it, increases its Fuel burn time, and may produce a unit of Ashes or Dark Ashes, as shown by the following table:
Fuel
Burn Time (fuel ticks)
Ashes Chance
Coal
160
25%
Charcoal
160
25%
Coal Coke
640
33%
Lignite
40
11.11%
If the Boiler is currently burning fuel, and its Temperature is less than 500, one tick of fuel is used and the temperature is increased by 1. This occurs every 12 Ticks.
An Active Machine Detector will show that a Small Coal Boiler is active if it is currently burning fuel.