Repository navigation
Energy Grid
Note
Design stage. This page describes planned mechanics from the design document. Not implemented yet — see Roadmap (milestones M2, M3, M5, M8–M9; hydro and CHP are backlog).
Prompt Critical has its own AC power grid. It is not a Forge Energy (FE) pipe with a different name: buses have voltage, the grid has frequency and inertia, generators must be synchronized, faults are cleared by protection relays, and a frequency collapse can black out your whole site. FE from other mods connects at the edge through a converter block, but it cannot run or hold up the grid.
The same section of the design owns the combustion model (used by coal, oil, and chemistry), boilers, the I0 steam engine, gas turbines, emergency diesels, station batteries, cooling towers and other heat sinks.
Milestones: M2 — coal boiler and steam engine (I0); M3 — generator, grid, protection relays (I1); M5 — cooling towers, emergency diesels; M6 — CC: Tweaked peripherals pc_*; M8 — gas turbine; M9 — combined cycle; M15 — hydro, pumped storage, CHP (backlog).

| Level | What | How | Time domain |
|---|---|---|---|
| Electromechanics | rotor swings, frequency of each electrical island | per-machine swing equation, 3rd-order machine model (δ, ω, E'q) | FAST, 2 substeps of 25 ms |
| Network | bus voltages, branch currents, P and Q | quasi-steady positive-sequence phasor (RMS) model, complex admittance matrix Y
|
FAST, solved every substep |
| Unbalanced faults | single- and two-phase faults | negative/zero-sequence shunt at the fault bus | FAST |
| Protection and automation | overcurrent, differential, distance, Buchholz, frequency, reverse power, loss of excitation, pole slip, breaker failure, auto-reclose, UFLS | hardware functions, settings in multiples of the 50 ms tick | FAST, every tick, never degraded |
| Equipment heating | transformer oil and windings, line conductors, insulation aging | simplified IEC 60076-7 / IEEE 738 | SLOW (transformers), FAST (conductors) |
| Combustion | stoichiometry, excess air, efficiency, CO, NOx, SO₂, CO₂ |
Combustor: fuel elemental composition to products and heat |
FAST, emissions accumulate in SLOW |
| Cooling | cooling towers, spray ponds, intakes | Merkel / ε-NTU, weather from biome | FAST (1 Hz), fouling SLOW |
| Demand and market | daily load curve, NPC consumers, contracts | load profile by Minecraft time of day | FAST power, SLOW metering |
Electricity is always real-time: a watt on the grid is a watt "now". The grid is never sped up. Machines that run in the SLOW domain draw P_real = E_spec × ṁ_real from it.
The chosen network model (machines behind transient reactance + linear YV = I, LU factorization only when a breaker changes state) costs about 15–25 µs per tick for the reference 60-bus, 12-machine grid. Full Newton–Raphson AC was rejected as too expensive; DC load flow was rejected because it has no voltages, reactive power or fault currents.
| Quantity | Value | Config key |
|---|---|---|
| Base power | 100 MVA | grid.base_mva |
| Nominal frequency | 50 Hz (60 allowed) | grid.nominal_frequency_hz |
| Voltage classes | 0.4; 6.3; 10.5; 35; 110; 220 kV | grid.voltage_classes |
| Create coupling | 1000 W/SU, 2.5 J/FE |
energy.w_per_su, energy.j_per_fe
|
Inside sim.grid everything is in per-unit; snapshots, tags and Lua only see SI units. Every loss (I²R, transformer no-load, station auxiliaries) is explicit, and the island balance ΣP_gen = ΣP_load + ΣP_loss must close to 10⁻⁶ pu per tick.
| Element | Model | Built from |
|---|---|---|
| Bus | node with complex voltage | connected busbar blocks of one class, switchgear cells, 0.4 kV switchboards, generator terminals |
| Line | π-equivalent, r + jx, b/2 at each end |
conductor per-km data × span lengths |
| Cable | as a line, 30–50× more capacitance | power_cable |
| Transformer | ideal transformer with tap + short-circuit impedance + magnetizing shunt | rating, uk, losses, on-load tap changer |
| Breaker | ideal switch, open = branch removed from Y
|
state, open/close time |
| Synchronous machine | EMF behind jx'd
|
see below |
| Load | ZIP model with frequency dependence | consumers |
| Induction motor | equivalent circuit with Kloss torque | electric_motor |
| Capacitor bank / reactor | fixed admittance | capacitor_bank |
| FE interface, rectifier | constant-power source/sink, grid-following |
grid_fe_interface, rectifier_unit
|
Voltage class is the main tier of the electrical side (the idea comes from GregTech: New Horizons, but with physics instead of arbitrary limits). Each block has a rated voltage; a bus takes the class of the blocks it is built from. Recipes require insulation materials from other industries, so classes unlock through the production chain, not research points.
| Class | Rated / max, kV | Era | Equipment | Insulation and recipe gates |
|---|---|---|---|---|
| LV 0.4 | 0.38–0.40 / 0.42 | I0–I1 |
shaft_generator ≤ 0.5 MVA, lv_switchboard, electric_motor ≤ 250 kW, electric process_heater, process machines, small grid_fe_interface
|
rubber, impregnated paper + bitumen, varnish; bakelite in apparatus; glazed ceramic pin insulators |
| MV 6–10 | 6.3–10.5 / 7.2–12 | I1 |
electric_generator, large shaft_generator, motors > 250 kW, switchgear_cell, distribution_transformer (dry, ≤ 1 MVA), wooden_pole, concrete_pole
|
porcelain insulator_pin; mica and glass cloth; paper + bitumen + lead cable |
| 35 | 35 / 40.5 | I1–I2 |
power_transformer_35, oil circuit breakers, inter-shop lines |
transformer_oil (from the refinery); insulator_disc ×3 |
| 110 | 110 / 126 | I2 |
power_transformer, hv_circuit_breaker, transmission_tower, inter-site power lines, NPP generator step-up transformers |
transformer_oil, bushing_hv, insulator_disc ×7–8, insulator_post; cables only with xlpe
|
| 220+ | 220 / 252 | I3+ |
power_transformer_220, SF₆ breakers, interconnectors |
sulfur_hexafluoride, insulator_disc ×13–14, xlpe; 330–500 kV is backlog |
Connecting a block to the wrong class is allowed, and the consequences follow from k = U / U_rated:
| k | Result |
|---|---|
| 0.9–1.1 | normal |
| 1.1–1.3 | accelerated insulation aging (rate ∝ k¹²), core over-excitation, heaters ∝ k² |
| above test voltage ratio (≈ 6 for 0.4 kV, ≈ 4 for 10 kV) | insulation breakdown: internal fault, protection trips the feeder, block goes FAULTED and needs a winding replacement; an arc not cleared in 0.5 s starts a fire |
| 0.7–0.9 | motors draw more current and overheat; electronics below 0.85 reboot; lamps dim |
| < 0.7 | motors stall, contactors drop out, Create shafts stop |
Example: a 0.4 kV motor cabled to a 6 kV bus sees k = 15 and fails on the first tick. Engineer's goggles show the voltage class of cables and blocks and warn about a mismatch, but nothing prevents the mistake.
| ID | What | Range |
|---|---|---|
electric_generator |
turbine generator on the turbine shaft, multiblock 3×3×N | 6–100 MVA, 6.3/10.5 kV, 3000 rpm |
shaft_generator |
generator on a Create shaft (I0 steam engine, water wheel, windmill) | 0.1–5 MVA, 0.4/6.3 kV, input 16–256 RPM via built-in gearbox |
generator_exciter |
exciter: rotating (I1), static thyristor (A2+), brushless (A3+) | — |
diesel_generator |
emergency diesel generator | 0.5–6 MVA |
An electric_generator that is not cabled to a bus runs in "direct FE" mode (no protection, no synchronization, no reactive power). Connected to a bus, it becomes a synchronous machine of the grid.
| Parameter (pu) | Turbo-generator | Hydro (backlog) | Diesel set | shaft_generator |
|---|---|---|---|---|
| x_d | 1.8 | 1.0 | 2.2 | 2.0 |
| x'_d | 0.25 | 0.30 | 0.25 | 0.30 |
| x''_d | 0.18 | 0.22 | 0.15 | 0.20 |
| T'_d0, s | 7.0 | 6.0 | 3.0 | 2.5 |
| H, s | 4.0 (with turbine) | 3.0 | 1.0 | 0.6 + Create flywheel |
| Efficiency | 0.98 | 0.97 | 0.95 | 0.94 |
Synchronization is an operator mini-game. The generator is spun up to about 3000 rpm and excited, with its breaker open. The panel shows an instrument_synchroscope whose needle rotates at the slip frequency, plus two voltmeters and two frequency meters. You trim turbine speed (pc_turbine.setSpeedTarget or the governor lever) and voltage, get the needle turning slowly clockwise (one turn per 10–20 s), and close the breaker ahead of 12 o'clock to account for breaker closing time.
Advance angle: φ_adv = 360° × Δf × t_cb. With Δf = 0.1 Hz and t_cb = 0.08 s that is 2.9°; at Δf = 1 Hz it is 29°, which is why manual sync at large slip is nearly always off.
| Synchronizing limit | Tolerance | Key |
|---|---|---|
| Phase difference at closing | ±10° | grid.sync_max_angle_deg |
| Voltage difference | 0 to +5 % (generator not below grid) | grid.sync_max_dv |
| Slip | ≤ 0.067 Hz | grid.sync_max_slip_hz |
Closing out of phase produces a shaft torque spike (with X''Σ = 0.35: 10° → 0.5 pu, 30° → 1.48, 60° → 2.86, 120° → 4.95, 180° → 5.71):
| Peak torque, pu | Result |
|---|---|
| < 1.0 | normal, audible thump |
| 1.0–1.5 | heavy jolt, 3× vibration for 10 s |
| 1.5–3.0 | cumulative shaft fatigue damage, loosened coupling |
| 3.0–5.0 | generator differential may trip, stator end-winding damage |
| ≥ 5.0 | coupling shears; turbine overspeeds, generator motors |
On a shaft_generator the torque spike goes into the Create kinetic network as a one-tick stress jump and almost always overstresses it. A cheap fix is generator_coupling with a shear pin (consumable, breaks above 2 pu and saves the Create shaft).
The relay_sync_check module (ANSI 25) blocks closing outside the window; without it you can close at any moment. An auto-synchronizer is not a mod device — build it as a PLC function block or a Lua program.
- Primary control (droop). Turbine governors have 4 % droop. Example: a 200 MVA island losing 20 MW settles at −0.19 Hz if machines have headroom. If every machine is at its limit (no spinning reserve), only load damping remains and frequency drops 4.4 Hz — straight into load shedding. Governor deadband is ±0.075 Hz; drum boilers limit steam turbines to 2–4 %/min.
-
Secondary control (AGC) is your job. The mod gives you
pc_grid.getIsland(id)(frequency, imbalance, tie-line flows),pc_turbine.setLoadTarget/pc_gas_turbine.setLoadTargetand a PI function block, and you build the classic area control error loop:ACE = ΔP_tie + B·Δf. - Isochronous mode for a single machine feeding an isolated bus (diesel during station blackout, black start). Only one isochronous machine per island: two of them fight, and one ends up motoring.
Protection is hardware. relay_* modules go into a relay_cabinet or a switchgear cell. Settings are changed only physically (GUI with an engineer's key); Lua gets E_HARDWARE_ONLY.
| ANSI | Function | Default setting |
|---|---|---|
| 50 | Instantaneous overcurrent | 1.3 × max fault current at end of zone, 1 tick |
| 51 | Inverse-time overcurrent (IEC SI/VI/EI or definite) | 1.2–1.5 × max load, TMS 0.05–1 |
| 87T/87G/87B | Differential (transformer, generator, bus) | Id,min 0.3 pu, slope 0.3 / 0.6, 2nd-harmonic blocking |
| 21 | Distance (mho) | Z1 0.85 ZL 0 s, Z2 1.25 ZL 0.4 s, Z3 2 ZL 1.2 s |
| 63 | Buchholz (gas) | alarm / trip |
| 49 | Thermal overload | hot spot > 140 °C |
| 27 / 59 | Under/overvoltage | 0.7 pu 3 s / 1.15 pu 2 s |
| 81U / 81O | Under/overfrequency | generators: 47.5 Hz 10 s, 47.0 Hz 0.5 s; 51.5 Hz 1 s |
| 32R | Reverse power | −2 % P_rated, 3 s |
| 40 | Loss of excitation | Mason characteristic |
| 78 | Pole slip | 2 slips → trip |
| 25 | Synchronism check | sync window |
| 50BF | Breaker failure | 0.25 s, trips all adjacent breakers |
| 79 | Auto-reclose | 1 shot, 1.0 s |
Relay generations follow the instrumentation tree: A1 electromechanical (50, 51, 87 without harmonic blocking, 27/59, 81 ±0.1 Hz, needs DC to trip), A2 static (+21, +40, +78, harmonic blocking, ±0.02 Hz), A3 microprocessor (all functions, sequence-of-events log, 2 s disturbance record via pc_breaker.getDisturbanceRecord()). An A1 differential relay without harmonic blocking trips on transformer inrush with probability 0.3.
electric_generator cannot join the grid without 87G, 51/27, 40, 32R, 81U/O, 59 and 78. A shaft_generator ≤ 1 MVA only needs 51 + 27 + 81U.
You build the time-grading map yourself (0.3–0.5 s steps). Fast protection clears faults in 0.1–0.15 s; critical clearing time for a typical generator is 0.27 s, so 0.5 s backup overcurrent loses synchronism. On 6–35 kV (isolated neutral) a single-phase earth fault is not a short circuit: the grid keeps running with a pc_ground_fault alarm until it escalates.
UFLS disconnects consumers in stages as frequency falls. It is a hardware module, relay_ufls, installed in lv_switchboard, switchgear_cell or grid_consumer. You assign each load to a stage.
| Stage | Setting, Hz | Delay, s | Recommended share of island load |
|---|---|---|---|
| UFLS-1/1 | 48.8 | 0.2 | 8 % |
| UFLS-1/2 | 48.6 | 0.2 | 8 % |
| UFLS-1/3 | 48.4 | 0.2 | 8 % |
| UFLS-1/4 | 48.2 | 0.2 | 8 % |
| UFLS-1/5 | 48.0 | 0.2 | 8 % |
| UFLS-2/1 | 49.0 | 10 | 5 % |
| UFLS-2/2 | 49.0 | 20 | 5 % |
| Frequency auto-reclose | ≥ 49.7 | 10–60 | reconnection |
Generators trip on 81U at 47.5 Hz, so shedding must act first. Worked example: three 100 MVA machines carry 210 MW; one trips; frequency falls at −2.19 Hz/s and reaches 48.8 Hz in 0.55 s, before steam governors can respond. Stages 1–4 shed ≈ 67 MW, the minimum stays at 47.8–48.3 Hz, and frequency recovers to 49.5 Hz within 30 s. Shed NPC consumers penalize the supplier.
Blackout is not scripted. It emerges when protection cascades: overloaded line sags into a tree → line trips → neighbours overload or zone 3 trips → grid splits into deficit islands → not enough UFLS → 81U trips generators → island below 47 Hz goes dark. Motors coast down, Create shafts stop, FE interfaces stop exporting, and power station auxiliaries lose supply. For a reactor this is loss of offsite power (LOOP); if the diesels also fail, it is a station blackout (see Accidents). The event pc_grid_blackout{island, cause, t} is logged.
Black start is a tutorial scenario:
| Step | Player action | What gets in the way |
|---|---|---|
| 1 | Start a self-starting source: diesel (air start), gas turbine with diesel/battery starter, hydro (backlog), I0 steam engine on stored steam | needs starting air or battery charge |
| 2 | Energize the dead auxiliary bus | dead-bus closing needs no sync |
| 3 | Start auxiliaries one at a time: feed pump, fans, mills | motor inrush 5–7× rated sags a small diesel |
| 4 | Light the boiler, raise pressure, roll the turbine | boiler takes 1–3 h of physical time; furnace purge is mandatory |
| 5 | Synchronize the turbo-generator with the diesel island | small inertia, frequency wanders |
| 6 | Pick up lines and loads in blocks | ≤ 5–10 % of island capacity per step; cold load pickup ×2.0 decaying over 30 min |
| 7 | Join islands | synchronize via a tie breaker |
Success: all load restored, 50 ± 0.2 Hz, no out-of-phase closing above 1.5 pu.
grid_consumer is an external consumer substation (town, village, NPC factory) placed at the end of your line. Its contracted power is confirmed by a contract (see Environment and Economy). Demand follows a daily curve with ±2 % noise and a heating correction in cold biomes:
| Hour | 0 | 3.5 | 6 | 9 | 12 | 14 | 17 | 19.5 | 22 |
|---|---|---|---|---|---|---|---|---|---|
| Relative load | 0.78 | 0.60 | 0.74 | 0.92 | 0.82 | 0.81 | 0.86 | 1.00 | 0.86 |
One Minecraft day is 20 real minutes, so the morning ramp from 0.60 to 0.92 takes about 275 real seconds. That gives each plant type a role:
| Source | Ramp rate | Role |
|---|---|---|
| Nuclear | fast mechanically, but power reduction triggers xenon poisoning | base load |
| Coal plant, drum boiler | 2–4 %/min | base and mid-merit |
| Gas turbine | 10–25 %/min, start 5–15 min | peak |
| Pumped storage (backlog) | seconds | peak, frequency control |
| FE import | instant | only with an existing grid |
Consumers pay by energy_meter with time-of-day pricing. Unserved energy (UFLS, blackout) costs 10–50 × tariff (market.voll_multiplier); frequency outside ±0.2 Hz for over a minute is a quality penalty. Arc furnaces and rolling mills cause flicker on shared buses.
grid_dispatch_center is the dispatcher console (peripheral pc_grid). It sees all islands, buses, branches, generators and meters of your station and contracted stations. The mod does not plan the schedule for you: you build the daily generation plan, AGC, reserve allocation, maintenance outage schedule and power trading.
grid_fe_interface connects a 0.4–10 kV bus with an FE network of another mod.
| Parameter | Value |
|---|---|
| Ratings | 100 kW, 1 MW, 10 MW |
| Efficiency | 0.97 |
| Buffer | 1 s of rated power |
| Operating window | 49–51 Hz, 0.9–1.1 pu voltage |
Modes: IMPORT (grid → FE; 1 MW = 19,400 FE/t), EXPORT (FE → grid, grid-following like an inverter: no inertia, cannot form a grid, disconnects in 0.2 s on loss of voltage), AUTO (keep buffer charged). FE generators therefore cannot black-start the grid or hold frequency. Above 50 % FE share of an island, the dispatcher gets a stability warning.
rectifier_unit (thyristor, I3; mercury-arc I1–I2 backlog) feeds DC busbars (busbar_dc) for electrolysis: aluminium and copper (Coal and Metallurgy), chlor-alkali (Petrochemistry), hydrogen, fluorine and magnesium cells (Nuclear Fuel Cycle). Losing the rectifier stops the entire potline; aluminium pots freeze within minutes.
sim.combustion.Combustor is a shared library used by boilers, furnaces, heaters, flares and engines across coal, oil and chemistry. It takes fuel elemental composition and computes stoichiometric air, excess air, efficiency, CO from incomplete combustion, adiabatic flame temperature, NOx, SO₂ and CO₂. Emissions go to the emissions ledger (see Environment and Economy).
| Boiler | Era | Design | Steam | Gross efficiency | Fuel |
|---|---|---|---|---|---|
fire_tube_boiler |
I0 | horizontal shell 3×3×6, furnace tube, smoke tubes, large water volume | saturated, 0.8–1.6 MPa, 1–10 t/h | 0.65–0.75 | coal on a grate, wood |
water_tube_boiler |
I1 | multiblock: water-wall furnace, steam_drum, superheater, economizer, air heater |
4–14 MPa, 440–560 °C, 20–500 t/h | 0.88–0.93 | pulverized coal, gas, fuel oil, coke oven / blast furnace gas, mine methane |
hrsg |
I3 | heat recovery steam generator | 4–10 MPa | per gas | gas turbine exhaust, dry coke quenching gas |
Water and steam are nodes in the common thermal-hydraulic network (Reactor Physics); the boiler block only handles the gas side.
I0 fire-tube boiler. 5 MW(th), 1.2 MPa saturated, 10 m³ water. Fed by hand or by a grate_stoker chain grate on a Create shaft; natural draft from a chimney (20 m stack at 250 °C ≈ 110 Pa). Coal at 0.3 kg/s gives ≈ 6.7 t/h of steam — one 100 kg coal item every 333 s. Safety fittings are all hardware:
| Device | Function | Without it |
|---|---|---|
valve_relief |
relieves at 1.1 × working pressure | pressure rises until the shell ruptures |
Gauge glass (instrument_level, I0 type) |
visible water level | operator is blind |
fusible_plug |
melts at 232 °C if the furnace crown is exposed; steam jet quenches the fire with a whistle | crown overheats and fails |
| Feed injector / pump | makeup | low water |
A boiler explosion (10 t of water at 1.2 MPa) releases ≈ 0.64 GJ, about 46 kg TNT equivalent with a 0.3 blast fraction. It is the main accident of era I0, and the cheap plug prevents it.
I1 water-tube drum boiler. Multiblock: furnace walls boiler_wall (min 5×8×5), 1–8 boiler_burner, steam_drum, boiler_superheater, boiler_economizer, air_preheater, forced_draft_fan and induced_draft_fan (Create shaft or electric_motor), coal_mill for pulverized coal, chimney. Example: 100 MW of gas → 133 t/h at 9.8 MPa / 540 °C → ≈ 35 MW(e). Control loops (three-element drum level, pressure → fuel, cross-limited fuel/air ratio, O₂ trim, furnace draft −20…−50 Pa, attemperation) are built by you on a PLC. Auxiliaries take 6–9 % of a coal plant's output.
Burner management system (BMS) is hardware, following NFPA 85: OFF → PURGE (≥ 25 % air, ≥ 5 volume changes, ≥ 300 s) → PURGE_COMPLETE → IGNITER_TRIAL (flame within 10 s) → IGNITER_ON → MAIN_TRIAL (5 s gas / 10 s oil or coal) → RUNNING → MFT (fuel valves closed ≤ 1 s) → POST_PURGE (300 s). Fuel admitted without a flame accumulates; inside the flammable range (methane 5–15 %) with an ignition source it explodes. A failed flame detector or a key bypass makes this possible.
steam_engine_cylinder is a double-acting reciprocating engine multiblock (cylinder with slide valve, crosshead, connecting rod, crankshaft with flywheel, Watt governor) that drives a Create shaft at 16/32/64 RPM. Example: 0.4 m bore, 0.6 m stroke, 1.1 MPa, 25 % cut-off, 120 rpm → 119 kW shaft power, 16 kg/(kW·h) steam. One I0 boiler feeds about three cylinders (≈ 360 kW = 360 SU at 1000 W/SU). Without a flywheel speed pulsates ±10 %. The Watt governor without a dashpot hunts (ζ = 0.1); the governor_dashpot module brings ζ to 0.7 — the first control theory lesson in the game. Create's own Blaze Burner steam engines stay as they are.
gas_turbine is a multiblock (compressor, combustor, turbine), either single-shaft with a generator or with a free power turbine for mechanical drive of pipeline and gas plant compressors (Oil and Gas). Example: pressure ratio 12, turbine inlet 1373 K → exhaust 538 °C, ≈ 33 % efficiency; a 25 MW unit moves ≈ 80 kg/s of air. Hot biomes reduce output (−0.69 %/K; −14 % in a summer desert).
- Fuel control is min-select of speed/load, exhaust temperature ≤ 560 °C, and acceleration. Fueling too fast causes compressor surge.
- Start: starter (2–3 % of rating — ≈ 600 kW for 25 MW, from a Create shaft,
electric_motoror diesel) to 20–25 % speed, purge, ignition, idle, synchronize, load at 10–25 %/min. 5–10 min (aeroderivative) to 15–30 min (heavy-duty). - Fuel:
sales_gas(main),diesel_fuel(backup). Untreatednatural_gasis forbidden. Na+K above ≈ 0.5–1 ppm causes hot corrosion of blades. NOx 150–250 ppm diffusion, 40–60 with water injection (demineralized_water), 25 ppm DLN.
Combined cycle. hrsg with superheater, evaporator and economizer sections, pinch ≥ 10 K. Example: 80 kg/s exhaust at 538 °C → 36.8 MW heat → 11 MW steam turbine → 36 MW plant at ≈ 47 %. Supplementary firing is backlog.
Diesels are the independent AC source for reactor safety systems and for black start. Without them, loss of offsite power at a reactor becomes a station blackout immediately.
| Parameter | Value |
|---|---|
| Rating | 0.5–6.3 MW (NPP default 5.6 MW) |
| Speed | 750 or 1000 rpm |
| Ready to load | ≤ 15 s (typically 10–12 s) |
| Start | compressed air, 3 MPa bottles, ≥ 5 starts |
| Specific fuel consumption | 0.205 kg/(kW·h) minimum, higher at part load |
| Fuel storage |
fuel_day_tank for 8 h + storage |
| Inertia H | 1.0 s |
A 5.6 MW unit burns 1.15 t/h of diesel_fuel — one of the biggest diesel consumers in the complex, so the refinery feeds the plant's safety.
Start sequence: air starter to 120 rpm (2–3 s) → firing, turbocharger lag → 90 % speed → field flash from battery → ready → close onto dead bus → stepped loading. Fail-to-start probability is 0.005 base, rising with overdue maintenance (30-day interval), cetane number below 45, and cold below 5 °C without a jacket_heater (×4). Failure while running is 10⁻³ per hour. Monthly test runs are an operations task (Operations and Safety).
The load_sequencer hardware module adds load steps every 5 s; acceptance per IEEE 387: frequency ≥ 47.5 Hz, voltage ≥ 75 %, recovery within 2 s.
station_battery (lead-acid, 220 V, 104–108 cells) and battery_charger supply DC for breaker trip coils, relays, emergency lighting, BMS and safety controllers, and diesel starting. Without DC, breakers cannot trip and fail-safe logic shuts boilers down. Charging releases hydrogen and requires room ventilation. Grid events for the reactor: LOOP, EMERGENCY_AC_RESTORED, SBO (no diesel ready within 60 s), DC_DEPLETED, OFFSITE_RESTORED.
| Block | Type | Power | Fuel | Efficiency |
|---|---|---|---|---|
gasoline_engine |
spark, 4-stroke | 10–300 kW |
gasoline (octane, sulfur) |
0.25–0.30 |
diesel_engine |
compression ignition, turbo | 20 kW – 6 MW |
diesel_fuel (cetane, sulfur, density) |
0.35–0.42 |
gas_engine |
gas spark | 100 kW – 4 MW |
sales_gas, mine_methane, coke_oven_gas, associated_gas (methane number) |
0.35–0.42 |
Fuel quality matters: low octane causes knock (with an A3 knock sensor, −1.5 % power per octane point short; without it, piston wear and eventually a holed piston), low cetane means rough running, black smoke and hard cold starts, low methane number (coke oven gas) cuts output 30–50 %, and sulfur becomes SO₂ emissions.
process_heater comes in two kinds: electric (50 kW – 5 MW, 0.98 efficiency; burns out in seconds if run dry) and fired (multiblock with fired_heater_casing and chimney, 5–100 MW, 0.80–0.90; used by refinery and chemical furnaces). Low coil flow leads to film overheating, coking, tube burn-through and a furnace fire.
Every thermal plant rejects more heat than it produces electricity. Weather comes from the biome.
| Block | Draft | Size | Capacity |
|---|---|---|---|
cooling_tower_cell |
fan on a Create shaft or electric_motor
|
3×3×3 module, placed in rows | ≈ 25 kg/s water, ≈ 10 MW at 10 K range |
Natural-draft tower (cooling_tower_shell + cooling_tower_fill + cooling_tower_basin) |
natural | diameter 15–60, height 40–150 blocks | 30 m fill ≈ 80 MW |
spray_pond_nozzle |
none | over a pond of water blocks | 40–65 % approach per pass, wind-dependent |
Towers are modelled with the Merkel equation. For 100 MW rejected, evaporation is ≈ 33 kg/s and makeup ≈ 45 kg/s at 4 cycles of concentration (limited by scaling — makeup comes from water treatment). Fans take ≈ 0.4 % of rejected heat. On a hot humid jungle day outlet water reaches ≈ 31 °C, condenser pressure rises and turbine output drops. The spray pond is the safety-grade heat sink for a reactor: no fans, works during station blackout if pumps run from diesels. River and pond intakes and condenser biofouling (controlled with chlorine) are also modelled. The steam plume above a tower is a visible sign that the plant is running.
-
Hydro / pumped storage:
hydro_turbine,penstock,dam_gate.P = η·ρ·g·Q·Hwith η 0.88–0.93; head from water levels, reservoir volume snapshotted at build time. Pumped storage cycle efficiency 0.70–0.80. Fastest regulating power (zero to full in 1–2 min) and black-start capable. Create water wheels stay as they are. -
CHP and district heating: back-pressure or extraction turbine,
district_heat_exchanger, hot water network (supply 70–150 °C, return 40–70 °C). Heating demand is estimated from settlement building volume; heating failure in winter is penalized. Fuel utilization up to 0.80–0.85.
During a thunderstorm each loaded line span receives a Poisson stream of strikes (attractive width W = b + 28·h^0.6 m). Vanilla lightning hitting a tower also counts. A strike on a phase conductor without shield wire flashes over almost always; a strike on a tower causes back-flashover depending on tower ground resistance. Example: 110 kV line with 7 discs flashes over with P = 0.15 at 10 Ω grounding and P = 0.92 at 50 Ω. Grounding uses ground_electrode rods (3 m rod in 100 Ω·m soil = 33.5 Ω). Substations need a surge_arrester to protect transformers. A vanilla minecraft:lightning_rod on a tower works as the tower's air terminal but does not replace the shield wire. Icing of conductors is backlog.
| Input | From | Used for |
|---|---|---|
raw_coal, washed_coal
|
coal mine | I0–I1 boiler fuel |
coke_oven_gas, blast_furnace_gas, mine_methane
|
coke plant, blast furnace, mine | boiler and engine fuel instead of flaring |
sales_gas, fuel_oil, diesel_fuel, gasoline
|
oil and gas | boilers, gas turbines, diesels, engines |
transformer_oil, lube_oil
|
refinery | transformers 35 kV+, bearings |
copper_wire, aluminium_ingot, steel products |
metallurgy | conductors, windings, towers, tanks |
seamless_pipe |
pipe mill | boiler water walls and superheaters |
boiler_feedwater, demineralized_water, cooling_water
|
water treatment | boilers, gas turbine injection, tower makeup |
polyethylene, epoxy_resin, bakelite, sulfur_hexafluoride, chlorine
|
chemistry | cable insulation, relays, SF₆ breakers, condenser chlorination |
xlpe |
irradiated polyethylene (Isotopes and RTG) | 110 kV+ cables |
vacuum_tube, transistor, integrated_circuit
|
instrumentation tree | A1–A3 relays, exciters |
Outputs: electricity for all industries, DC for electrolysis, Create rotation through electric_motor, process steam, process_heater heat, mechanical drive of compressors, flue gas and emissions, fly_ash and boiler_slag for cement and concrete, and LOOP/SBO events for the reactor. The chain "coal → steam → power → graphite → reactor": coal fires the boiler, the generator powers the Acheson furnace, and coke-oven pitch becomes reactor graphite.
pc_generator, pc_breaker, pc_transformer, pc_grid, pc_boiler, pc_gas_turbine. Events include pc_sync_closed, pc_breaker_trip, pc_ground_fault and pc_grid_blackout. Protection settings and BMS logic are never writable from Lua. See CC: Tweaked API.
- Reactor Physics — steam and water network shared with boilers
- Accidents — LOOP and station blackout
-
Create Integration — turbines, shafts,
electric_motor - Automation Platform — PLC function blocks for AGC and boiler control
- SCADA and HMI
- Coal and Metallurgy, Oil and Gas, Petrochemistry
- Environment and Economy — contracts, penalties, emissions
Prompt Critical · © 2026 denfry · Repository · Report an issue
Start here
Design
Nuclear
Industries
Control and automation
World and server
Development