Repository navigation
Radiation Safety
Note
Design stage. This page describes planned mechanics from the design document. Not implemented yet — see Roadmap (milestone M7: radiation field, shielding, dosimeters, dose tracking, contamination and decontamination).
Radiation in Prompt Critical is not a damage aura around a glowing block. It is a computed field: every source has a photon spectrum in six energy groups and a neutron term; every block between the source and you attenuates it according to its material and thickness; dose builds up in a personal dose record with real biological effects; and spilled activity becomes contamination that spreads with rain, wind, rivers, boots and items.
What you get as a player:
- Shielding is engineering. Concrete, lead, water and polyethylene behave as they do in real shielding calculations. A 1 m block of concrete is already enormous shielding for gamma rays; slabs, sheets and panels are the fine-tuning tools.
- Instruments tell the truth, within their limits. A cheap Geiger counter saturates and reads almost zero in a lethal field.
- No magic armor. No wearable armor reduces hard gamma (Cs-137, Co-60) by more than a few percent. A lead apron is for X-rays.
- Contamination is persistent. Removed activity does not vanish — it becomes secondary waste you must collect and condition.

| Quantity | Symbol | Unit | Use |
|---|---|---|---|
| Air kerma | K_a | Gy | intermediate value for photon dose |
| Ambient dose equivalent | H*(10) | Sv | the in-game external dose (what instruments show) |
| Effective dose | E | Sv | internal exposure, dose limits |
| Organ equivalent dose | H_T | Sv | thyroid (I-131), skin (beta) |
| Absorbed dose in silicon | D_Si | Gy | electronics |
For external exposure the game uses E ≈ H*(10). H*(10) overestimates E by 10–40 %, so the in-game dose matches the dosimeter reading (pillar P2: you trust the instrument) and is slightly stricter than reality.
Dose accumulates in real time, updated at 1 Hz. Decay of sources and contamination, the stages of radiation sickness and biological elimination run in SLOW time (×72). If dose accumulated in accelerated time, any work in a controlled area would be impossible.
Point-kernel model: for each group, photon flux at the receiver is
where tᵢ is the ray path length through material i and B is the buildup factor (scattered photons). Air kerma and H*(10) follow from flux with NIST energy absorption coefficients and ICRP 74 conversion factors.
Check: Cs-137, 1 TBq, 1 m, no shielding → 75.7 mGy/h air kerma (reference constant agrees within 3 %), 90.9 mSv/h H*(10).
Implementation:
- Source clustering per chunk section; clusters are expanded into individual sources only when you are close.
- Dose cut-off. Clusters whose unshielded upper bound is below 10⁻³ of background, or farther than 64 m, are skipped (strong sources extend to 256 m).
-
Ray tracing. A 3D DDA (Amanatides–Woo) ray from your eyes to the source sums the attenuation for 6 photon groups and the neutron removal cross section, using a precomputed table
BlockState → (material, fill fraction). - Dose with buildup.
Block-to-material mapping is datapack-driven (data/<ns>/promptcritical/shielding/*.json). Unlisted blocks fall back to stone (full cube, hardness ≥ 1.5), dirt, or air with the collision-shape fill fraction. Partial blocks are homogenized: slab 0.5, stairs 0.75, glass pane 0.125, carpet 0.0625, lead_sheet (2 cm lead) 0.02; waterlogged blocks add water.
Ray results are cached per player (4096 entries, ≈ 320 KB) and invalidated by section version counters. The field updates once per second per player, with players phased across ticks. Worst case ≈ 85 µs per update, ≈ 4.3 µs/tick on average, well below the 50 µs budget.
| Material | Blocks | Density, g/cm³ | HVL at 0.662 MeV | HVL at 1.25 MeV |
|---|---|---|---|---|
water |
water, ice | 1.00 | 8.09 cm | 10.96 cm |
concrete |
vanilla concrete | 2.30 | 3.83 cm | 5.19 cm |
heavy_concrete |
heavy_concrete (magnetite) |
3.60 | 2.44 cm | 3.32 cm |
steel |
iron_block, steel_plate, vessel blocks |
7.87 | 1.20 cm | 1.65 cm |
lead |
lead_block, lead_sheet
|
11.35 | 0.55 cm | 1.04 cm |
tungsten |
tungsten_block |
19.3 | 0.365 cm | 0.644 cm |
depleted_uranium |
depleted_uranium_block |
19.05 | 0.278 cm | 0.571 cm |
polyethylene |
polyethylene_block |
0.95 | 8.29 cm | 11.23 cm |
borated_polyethylene |
borated_polyethylene (5 % B) |
1.00 | 7.88 cm | 10.67 cm |
stone |
stone, granite, andesite, cobblestone | 2.65 | 3.32 cm | 4.50 cm |
deepslate |
deepslate, tuff, basalt | 2.90 | 3.03 cm | 4.12 cm |
dirt |
dirt, grass, mud | 1.50 | 5.87 cm | 7.96 cm |
sand |
sand, gravel | 1.60 | 5.50 cm | 7.46 cm |
glass |
glass, obsidian | 2.50 | 3.52 cm | 4.77 cm |
lead_glass |
lead_glass (hot cell windows) |
4.8 | 1.44 cm | 2.45 cm |
wood |
planks | 0.60 | 14.0 cm | 19.0 cm |
wool |
wool, carpets | 0.15 | 56.2 cm | 76.1 cm |
air |
air | 0.0012 | 74.6 m | 101 m |
The key design consequence. A Minecraft block is 1 m. One block of concrete at 0.662 MeV is 18 mean free paths (attenuation ≈ 10⁻⁶ with buildup); a block of lead is 126 — absolute shielding. So half-blocks and thin elements are the main fine-tuning tools: lead_sheet (2 cm lead ≈ 3.6 HVL at 0.662 MeV), slabs, panels. Water is a "weak" shield per block (≈ 2·10⁻³ through 1 m), which is why spent fuel pool depth is measured in blocks.
Per unit mass, lead beats concrete only below ≈ 0.5 MeV and above 3 MeV. In the Co-60 range, concrete and lead are almost equal per gram — lead wins by volume, not mass.
Fast neutrons are attenuated with removal cross sections Σ_R, valid when the shield contains hydrogen:
| Material | Σ_R, cm⁻¹ | Contains hydrogen | Secondary capture gammas |
|---|---|---|---|
| water | 0.103 | yes | H(n,γ) 2.223 MeV |
| polyethylene | 0.123 | yes | same |
| borated polyethylene (5 % B) | 0.120 | yes | mostly B-10(n,α) 0.478 MeV — softer |
| concrete | 0.089 | yes (bound water) | 2.2 MeV + some high-energy |
| heavy concrete | 0.11 | yes | Fe capture 7.6 MeV |
| steel | 0.157 | no | Fe(n,γ) 7.6 MeV |
| lead | 0.118 | no | weak |
| wet soil | 0.07 | yes | 2.2 MeV |
| stone / deepslate | 0.085 | no | some high-energy |
| wood | 0.06 | yes | 2.2 MeV |
If a ray crosses less than 20 cm of hydrogenous material, heavy materials count at half their Σ_R — the classic lesson that lead is a poor neutron shield. Neutrons removed along the ray create secondary gamma sources: a thick water layer behind a reactor glows at 2.2 MeV itself, which is why borated polyethylene and iron-loaded concrete go on the outside.
| Case | Result |
|---|---|
| Hot cell wall: 1 PBq Cs-137, operator 1.5 m away, target ≤ 10 µSv/h |
≈ 1.1 m of concrete (a block plus a slab), or 0.72 m of heavy concrete, or ≈ 0.45 m of lead_glass
|
| Lead apron, 0.5 mm Pb | transmits 4 % at 0.1 MeV but 94 % of Cs-137 and 97 % of Co-60 gammas; weighs 6 kg (Slowness I) |
| Co-60, 1 TBq, 0.5 m in front of a concrete block, receiver 0.5 m behind | 4.1 µSv/h |
| Spent fuel cask, 10⁸ n/s, 1 m | 0.92 mSv/h unshielded; 23 µSv/h behind 30 cm of polyethylene, plus 2.2 MeV secondary gammas |
| Category | Limit | In game |
|---|---|---|
| Radiation workers | 20 mSv/year averaged over 5 years, ≤ 50 mSv in one year |
radiation.limits.worker_annual_sv = 0.02; a game year (365 game days) is 121.7 real hours |
| Public | 1 mSv/year | tracked for villagers |
| Eye lens (workers) | 20 mSv/year | recorded |
| Skin (workers) | 500 mSv/year | beta burn threshold is higher |
| Emergency response | up to 100 mSv; up to 500 mSv to save lives | dosimeter presets EMERGENCY_100, LIFESAVING_500
|
Limits are not enforced by physics. With zoning enforcement on, a player who exceeded the annual limit cannot pass a zone_access_door.
Every player has a dose record (attachment promptcritical:dose_record): lifetime dose, rolling annual dose, acute dose with repair, skin and thyroid doses, committed internal dose not yet delivered, body content by nuclide group, potassium iodide protection, radiation sickness stage, skin contamination.
Acute dose decays with a repair time of 2 physical days (40 real minutes). Chronic exposure at 1 mSv/h settles at 0.67 mSv acute — no radiation sickness, as in reality.
The stage is chosen by the peak acute dose of an episode. Times are physical (divide by 72 for real time).
| Acute dose, Sv | Severity | Prodrome | Latent period | In-game effects | Mortality without / with treatment |
|---|---|---|---|---|---|
| < 0.25 | — | none | — | none | 0 |
| 0.25–1 | subclinical | none; blood changes visible at medical_station
|
— | record only | 0 |
| 1–2 | I (mild) | nausea in 10–50 % after 2–6 h | 21–35 days | Weakness I, −2 max hearts for 7 days | 0 |
| 2–4 | II (moderate) | vomiting after 1–2 h | 18–28 days | −6 hearts, no natural regeneration, Weakness II, Hunger | ≈ 5 % / 0 |
| 4–6 | III (severe) | 20–60 min | 8–18 days | −10 hearts, no regeneration, Fatigue | ≈ 50 % / ≈ 15 % |
| 6–10 | IV (very severe) | < 20 min, diarrhea | ≤ 7 days | + periodic damage | 90–100 % / ≈ 50 % (with bone marrow transplant) |
| 10–20 | gastrointestinal | < 10 min | 0–3 days | damage every 30 s | ≈ 100 % within 1–2 physical weeks |
| > 20 | cerebrovascular | immediate, disorientation | — | Blindness, Nausea, damage | 100 % within 1–2 physical days |
Death probability follows a probit model with D₅₀ = 4.0 Sv without treatment, 6.5 Sv with supportive therapy and 8.5 Sv with a bone marrow transplant (σ = 0.25). Without treatment: 12.5 % at 3 Sv, 94.7 % at 6 Sv. Death uses damage type promptcritical:radiation_sickness.
Treatment items (used at a medical_station or by hand): antiemetic (removes prodrome), cytokine_injection (G-CSF, course of 5, moves you to supportive therapy), blood_bag (in multiplayer, blood from another player, −4 hearts to the donor), bone_marrow_transplant (needs a donor player and a medical_station; for doses above 6 Sv).
Skin: beta contamination by Cs-137 or Sr-90/Y-90 gives about 1.5 mSv/h per kBq/cm² to the skin. Above 3 Sv — erythema overlay; above 10 Sv — beta burn (promptcritical:beta_burn, periodic damage, slow healing). Thyroid: above 5 Sv from I-131 — hypothyroidism (−10 % food efficiency). Stochastic risk (5.5 %/Sv) is shown in the medical record as lifetime risk, with no gameplay effect: the mod shows statistics but does not punish for them.

| ID | Prototype | Detector | Range | Behavior |
|---|---|---|---|---|
geiger_counter (T0) |
consumer / civil defense counter | GM tube | 0.1 µSv/h – ~0.5 mSv/h linear | no dead-time correction: folds back to zero in a strong field |
dosimeter_radiometer |
professional survey meter | GM (low) + ion chamber (high) | 0.1 µSv/h – 10 Sv/h | auto-ranging; "OVERLOAD" above range |
contamination_meter |
pancake probe | alpha/beta scintillator | counts/(cm²·min) | separates alpha (actinides) from beta |
personal_dosimeter_epd |
electronic personal dosimeter | silicon diode | Hp(10) | dose and dose-rate alarms; read by pc_rad_monitor at the portal |
tld_badge |
TLD | thermoluminescent | dose | accumulation only; read in a tld_reader ("official" dose) |
instrument_dose_rate (block) |
area monitor | ion chamber | 0.1 µSv/h – 100 mSv/h (wide-range variant to 10 Sv/h) | tag rad.area.<id>.dose_rate; ±20 %, 5 s lag |
stack_monitor (block) |
stack release monitor | gas chamber + aerosol filter + iodine sampler | Bq/s by group | iodine with 30 physical min analysis delay |
whole_body_counter (block) |
whole body counter | NaI(Tl) | Bq in body (Cs, Co, I) | 60 real seconds |
criticality_alarm |
CAAS | 3 neutron/gamma detectors, 2-of-3 | — | see Nuclear-Fuel-Cycle |
The Geiger counter trap. The GM tube has a 190 µs paralyzable dead time. The observed count rate peaks at 1936 s⁻¹ and then falls. A geiger_counter reads 576 µSv/h in a true 1 mSv/h field, 41 µSv/h in 10 mSv/h, and practically 0 at 1 Sv/h. A cheap instrument in a strong field lies low — part of why readings in 1986 were underestimated. The dosimeter_radiometer corrects dead time and switches to its ion chamber. Without a filter the GM counter also over-responds 3× to low-energy photons (Am-241, X-rays).
Each registered pulse is a click; above 30 pulses/s it becomes continuous crackling, above 300 — noise. At background (0.1 µSv/h) a 2 s average wanders ±50 %, like a real meter.
| ID | Checks | Alarm threshold |
|---|---|---|
portal_monitor (pair of blocks) |
gamma from items and contamination of the person passing | 2 s count > background + 5σ (≈ 37 kBq Cs-137 at 0.5 m) |
hand_foot_monitor |
beta contamination of hands and soles | 3.3 Bq/cm² |
smear_kit |
removable contamination: a 100 cm² smear takes 10 % | analyzed in contamination_meter / assay_station
|
Events for CC: portal_alarm, contamination_alarm.
| ID | Respiratory protection factor | Skin | External gamma | Notes |
|---|---|---|---|---|
respirator (half mask, P3 filter) |
10 (aerosols), 1 for iodine | — | none | — |
full_face_respirator + iodine_cartridge
|
50 (aerosols, iodine, HF) | face | none | iodine cartridge life |
papr (powered air purifying) |
1000 | head | none | battery (FE) |
pneumosuit (4 pieces, air from air_supply_port via ≤ 16 m hose) |
2000 | 0.99 | none | hose limits movement; a torn hose drops protection to 10 |
protective_overalls + boot_covers
|
— | 0.9 | none | removed at the checkpoint, contamination leaves with them |
lead_apron (0.5 mm Pb) |
— | — | G0 0.043; G2 0.939; G5 0.975 transmission | Slowness I (6 kg) |
Armor gamma transmission uses component promptcritical:shield_equivalent (mm of lead equivalent). No wearable armor protects against G2–G5 by more than a few percent — a deliberate rule against "uranium armor" from other mods.
| Pathway | Intake |
|---|---|
| Inhalation | air concentration × 1.2 m³/h breathing rate × time ÷ respirator protection factor (real time) |
| Ingestion | activity of the food or drink item |
| Hand to mouth | 1 % of removable hand contamination with each meal |
| Skin (tritiated water) | absorption through skin = 0.5 × inhalation |
Committed effective dose is booked to lifetime and annual dose immediately (as in real dose accounting), but delivered biologically over time with the effective half-life.
| Group | Reference nuclide | Inhalation, Sv/Bq | Ingestion, Sv/Bq | Effective half-life in body | Antidote |
|---|---|---|---|---|---|
| CS | Cs-137 | 4.6·10⁻⁹ | 1.3·10⁻⁸ | 110 days |
prussian_blue: → 35 days |
| IOD | I-131 | 7.4·10⁻⁹ (aerosol); 2.0·10⁻⁸ (I₂ vapor) | 2.2·10⁻⁸ | 7.6 days (thyroid) | potassium_iodide |
| SR | Sr-90 | 3.6·10⁻⁸ | 2.8·10⁻⁸ | 10⁴ days (bone) | — |
| ACT | Pu-239 | 5.0·10⁻⁵ | 2.5·10⁻⁷ | 10⁵ days |
ca_dtpa: ×5 elimination if given in the first 24 physical hours |
| ACTP | Co-60 | 1.0·10⁻⁸ | 3.4·10⁻⁹ | 10 days | — |
| NAT | U-238 + chain, Ra-226 | 2.9·10⁻⁶ | 4.5·10⁻⁸ | 100 days | — (chemical toxicity) |
| TRIT | H-3 (HTO) | 1.8·10⁻¹¹ | 1.8·10⁻¹¹ | 10 days | drinking a lot: → 5 days |
| LONG_MOBILE | I-129 | 3.6·10⁻⁸ | 1.1·10⁻⁷ | 100 days | potassium_iodide |
Example (Goiânia, 1987): ingesting 1 GBq Cs-137 commits 13 Sv; delivered with a 110-day half-life, the first 10 physical days bring 0.79 Sv — slowly developing ARS II. Prussian blue cuts the committed dose to 4.1 Sv.
Potassium iodide (130 mg KI) blocks thyroid uptake: 95 % if taken up to 24 h before intake, 80 % within 2 h after, falling to 40 % at 8 h and 7 % at 24 h. It lasts 24 physical hours (20 real minutes), so during a long release you take it repeatedly.
Uranium and UF₆: for natural and low-enriched uranium, the chemical kidney toxicity of soluble compounds is more dangerous than radiation. Intake over 7 physical days: < 10 mg — no effect; 10–40 mg — Hunger, Weakness I; > 40 mg — periodic damage, Nausea. HF in air damages above 30 ppm (IDLH).
Food chains: crops take up activity from contaminated soil (transfer factors Cs 0.05, Sr 0.3), cows on contaminated pasture give contaminated milk, fish concentrate Cs 1000×. Example: 10 kBq/m² of I-131 fallout → 2.1 kBq/L in milk → 46 µSv per liter.
The ContaminationMap tracks 9 nuclide groups, each with a reference nuclide:
| Group | Reference nuclide | Half-life | Deposits | Soluble | Notes |
|---|---|---|---|---|---|
NG |
Xe-133 (Kr-85) | 5.25 d | no | no | cloud only |
IOD |
I-131 | 8.02 d | yes | yes | milk, thyroid |
CS |
Cs-137 | 30.08 y | yes | yes; binds strongly to clay | main long-term contaminant |
SR |
Sr-90 + Y-90 | 28.8 y | yes | yes | bone |
ACT |
Pu-239 (+ Am-241) | 24,110 y | yes | weakly | alpha, inhalation |
ACTP |
Co-60 | 5.27 y | yes | weakly | maintenance doses |
NAT |
U-238 chain / Ra-226 | — / 1600 y | yes | U yes | tailings, ore |
TRIT |
H-3 (HTO) | 12.32 y | with water | yes | CANDU, water |
LONG_MOBILE |
I-129 / Tc-99 | ≫ 10⁴ y | no | yes | HLW repository |
Storage: chunk → section → 4×4×4 block cells, with removable and fixed activity per group, plus waterborne and airborne activity per section. Data lives in a chunk data attachment (promptcritical:contamination), allocated lazily; a typical accident over 200 sections × 3 groups takes about 300 KB. On chunk load, decay catches up for the time the chunk was unloaded.
| Mechanism | Model |
|---|---|
| Fixation | removable activity slowly becomes fixed (weeks on porous surfaces like concrete, soil, wood; slower on steel, painted surfaces, glass) |
| Rain | washes removable activity from cells open to the sky into the ground and 20 % into nearby water |
| Resuspension | wind lifts a small fraction of dry removable activity into the air |
| Ventilation | airborne activity moves between ventilation zones with air flows; filters remove it by group; an open door without negative pressure leaks it outside |
| Items | picking up an item from a cell takes 10⁻³ of the cell's removable activity; dropping an item leaves 1 % |
| Mobs | pick up and drop activity as they walk |
| Player's boots | like mobs; carried on boot_covers or boots, without footwear — on the skin |
| Player's hands | breaking or using a block in a contaminated cell; protective gloves stop 90 % |
| Liquid spills | spilled radioactive fluid contaminates cells under the puddle and the water |
Water and rivers. Water sections exchange activity by diffusion. In river biomes the model adds a flow towards the nearest ocean (0.5 m/s) for contamination only, since Minecraft rivers do not flow. Activity also settles into bottom sediment. Rivers carry contamination downstream.
Atmospheric release. Releases from a vent_stack or an accident disperse with a Gaussian plume model with Briggs open-country dispersion:
| Stability class | Minecraft condition |
|---|---|
| B (unstable) | day, clear |
| D (neutral) | rain or thunderstorm; dawn or dusk |
| F (stable) | night, clear |
Wind direction drifts with game time (period ≈ one game day); wind speed is 3 m/s clear, 5 m/s rain, 8 m/s thunder. Fallout is computed per 4×4 column up to 512 m downwind, with dry deposition and washout by rain. Example: 10¹² Bq/s of Cs-137 for 100 physical seconds from a 30 m stack, class D, 5 m/s wind: 500 m downwind on the axis the inhalation dose is 4.6 mSv without protection, fallout 3 MBq/m², and the ground keeps giving ≈ 7 µSv/h afterwards. In real time the cloud passes in 1.4 s, but the trace remains.
Ground shine: an infinite plane of Cs-137 gives 2.35·10⁻¹² Sv/h per Bq/m² at 1 m (×0.7 roughness factor on soil and grass). Roofs and walls shield it.
Contaminated items carry promptcritical:surface_contamination. Items with different contamination do not stack; to keep Create logistics working, contamination below 1 Bq is zeroed. One release event affects at most 4096 sections; land claims are respected through a ContaminationPolicy interface (see Multiplayer).
The decontamination factor DF = activity before / activity after, applied separately to removable and fixed activity. Removed activity does not disappear; it becomes secondary waste to collect and condition (see Nuclear-Fuel-Cycle).
| Method | Target | DF removable | DF fixed | Secondary waste | Tool |
|---|---|---|---|---|---|
| Water wash | blocks, items | 2.5 | 1 | 10 L/m² contaminated_decon_solution
|
decon_sprayer with water |
| Chemical (citric/oxalic acid, EDTA; HNO₃–KMnO₄ for steel) | blocks, equipment | 10 | 2 | 5 L/m² |
decon_sprayer with decon_solution
|
| Steam jet | blocks, equipment | 10 | 3 | 2 L/m² condensate | steam_decon_lance |
| Strippable coating | surfaces | 20 | 1 | 0.5 kg/m² solid | strippable_coating |
| Scabbling (remove 5 mm of concrete) | concrete | 100 | 100 | 12 kg/m² dust through HEPA |
scabbler (Create shaft) |
| Electropolishing | metal items | 300 | 300 | electrolyte | electropolish_bath |
| Ultrasonic bath | items | 20 | 2 | solution | ultrasonic_bath |
| Create fan wash | items on a belt or ground | 5 | 1 | solution |
create:encased_fan + decon_solution block (processing type promptcritical:decon_wash) |
| Shower | player skin | 10 | — | drain water → decon_drain
|
decon_shower |
| Soil removal | dirt/grass | all activity is in the block | the block itself is waste | shovel / Create drill |
Paint: decon_paint (epoxy over concrete) slows fixation ×10 and makes removable contamination 5× easier to remove — which is why real controlled areas have painted floors and walls. Damaged paint loses the effect.
Player decontamination: take off protective gear (contamination stays on it) → shower → hand_foot_monitor, repeat if it alarms. Fixed skin contamination clears with epidermis renewal (14 physical days). Dirty gear goes to a dirty_locker, the decon_laundry (Create mixer + solution, DF 5), or the waste stream.
Neutron flux activates materials around the reactor (cells within 6 blocks of the vessel):
| Material | Target | Product, half-life | Meaning in game |
|---|---|---|---|
| steel | Co-59 impurity (0.1 %) | Co-60, 5.27 y | main source of maintenance doses |
| steel | Fe-58 | Fe-59, 44.5 d | |
| steel | Mn-55 | Mn-56, 2.58 h | short-lived, "after shutdown" |
| concrete | Na-23 | Na-24, 15 h | |
| concrete | Eu-151 (1 ppm) | Eu-152, 13.5 y | long-lived in the biological shield (decommissioning problem) |
| water | O-16 (n,p) | N-16, 7.13 s | 6.13 MeV gamma in the primary loop; in BWR steam |
| D₂O | H-2 | H-3, 12.32 y | CANDU tritium |
| air | Ar-40 | Ar-41, 110 min | released through reactor hall ventilation |
| graphite | C-13, N-14 | C-14, 5700 y | graphite waste from T0/T1 decommissioning |
Example: 1 kg of steel with 0.1 % Co in a 10¹³ cm⁻²s⁻¹ thermal flux for one physical year → 0.47 TBq of Co-60 → 0.166 Sv/h at 1 m. A block of reactor internals (7.87 t of steel) gives ~1.3 kSv/h at 1 m: such parts are moved only remotely and under water.
N-16 in the coolant makes primary piping glow at power along its length; in a BWR half of it is carried into the steam, so the turbine "shines" at power and goes dark within about a minute after shutdown.
Breaking a block in an activated cell yields a "hot" item with promptcritical:activation_inventory. It is a radiation source in your inventory (0.3 m from the body) or in a chest. Repairing main coolant pumps or replacing reactor internals turns ALARA dose planning into gameplay: wait for Mn-56 and Na-24 to decay, shield, work fast.
zone_controller registers a volume with a class:
| Class | Design dose rate | Access |
|---|---|---|
FREE |
≤ 0.5 µSv/h | free |
CONTROLLED_SERVICED |
≤ 6 µSv/h | EPD + work clothes |
CONTROLLED_PERIODIC |
≤ 12 µSv/h | same |
CONTROLLED_UNSERVICED |
> 12 µSv/h | work permit: dose plan, radiation protection technician |
The controller averages the instrument_dose_rate blocks inside and raises zone_dose_exceeded; tags rad.zone.<id>.dose_rate, rad.zone.<id>.class.
The sanitary_checkpoint multiblock (clean_locker, dirty_locker, decon_shower, decon_drain, hand_foot_monitor, portal_monitor, zone_access_door) enforces the flow:
CLEAN AREA ──► clean_locker (take off own clothes; take work clothes, EPD, boot covers)
──► zone_access_door (EPD worn, annual dose below limit) ──► CONTROLLED AREA
CONTROLLED AREA ──► dirty_locker (take off work clothes and boot covers)
──► decon_shower ──► hand_foot_monitor (> 3.3 Bq/cm²? → back to the shower)
──► portal_monitor ──► zone_access_door (exit) ──► CLEAN AREA
radiation.enforce_zones is false by default; when true, doors physically refuse to open if conditions are not met. In singleplayer you get hints and a violations log. The access log is available through pc_rad_monitor.
Terrestrial gamma background depends on the blocks around you: stone and granite ≈ 107 nGy/h, dirt ≈ 60, deepslate ≈ 23, sand ≈ 22, water and wood 0; ore blocks up to 48,400 nGy/h at 1 % U₃O₈. In a cave you are surrounded on all sides, so background is higher, as in real mines. Cosmic radiation is 0.035 µSv/h at sea level, doubling every ~1.5 km of altitude and shielded by blocks overhead. The Nether gives 0.5 µSv/h and the End ×10 cosmic (game fiction). On grass at the surface the total is ≈ 0.11 µSv/h ≈ 0.9 mSv/year — the real order of magnitude.
Radon builds up in enclosed volumes (a ventilation zone or an underground air pocket up to 4096 blocks), from exhalation by soil, granite, ore and tailings, and is removed by decay and air exchange. A house of 100 m³ on soil reaches 45 Bq/m³ (0.16 µSv/h). A drift in 1 % ore with 1 m³/s ventilation: 1.8 µSv/h; without ventilation: ≈ 13 mSv/h — lethal over weeks of game time.
RadiationField.absorbedDoseRateSiAt(x, y, z) gives the absorbed dose rate in silicon for CC: Tweaked computers and sensors. The recommended model: reboot probability per second 10⁻³ per Gy/h; above 1 kGy accumulated dose, failures ×10. instrument_* sensors are radiation-hardened (10⁵ Gy), but detectors above their range show overload. See CC-Tweaked-API.
- Accidents — releases, source terms and their consequences
- Nuclear-Fuel-Cycle — tailings, hot cells, waste classes
- Reactor-Physics — the nuclide inventory that feeds source terms
- Isotopes-and-RTG — sealed sources and their handling
- Operations-and-Safety — work permits, LOTO, confined spaces
- Acoustics — dosimeter clicks
- Multiplayer — contamination limits and land claims
Prompt Critical · © 2026 denfry · Repository · Report an issue
Start here
Design
Nuclear
Industries
Control and automation
World and server
Development