
Real structural engineering inside Minecraft.
The blocks you place are extracted into 6-DOF beam members and MITC4 shell plates and solved by a real finite element engine. You get stress contours painted on the blocks, a demand/capacity ratio for every member and plate with the governing fibre named, and a linear buckling factor — so a slender column that "looks fine" on stress still tells you it is about to fold.
Install: drop the jar in mods/. That is all — the analysis engine is inside it.
What it does
- Nine structural blocks: three steel sections, plain concrete, timber, a brick pier, two slab thicknesses, a 20 mm steel plate. They mix — a timber beam on brick piers is one structure, joined where the blocks touch.
- Stress glasses with three lenses (utilisation, stress, material), a section readout showing tension and compression through the section depth and the neutral axis, and a HUD that names which fibre governs.
/br load <fx> <fy> <fz>puts a test load in kN, in any direction, on the block you are looking at — push a shear wall sideways and watch the load path change.- Unsupported structures are reported as mechanisms rather than given plausible looking stresses. Solves run off the tick thread, so the game does not stutter.
Why you might trust the numbers
282 acceptance checks run on every build. 41 of them are comparisons against textbook closed forms — worst relative error 1.2e-14 — and the rest are solver-independent invariants, transport-equivalence oracles and refusal cases. The whole record is public and regenerated by a script, not typed in by hand. Where the project cannot back a number it says so: the section catalogue is called "solid rectangle" because that is what is actually solved, and two of the five demand/capacity modes (shear and torsion) are documented as having no oracle at all.
What it deliberately does not do yet
Nothing breaks or falls: this is analysis, not collapse. No construction sequencing, no reinforced-concrete composite sections, no load combinations or wind. Everything is linear elastic, and the buckling factor is the linear onset — it says nothing about what happens after a member folds. It is also mesh-dependent, and the project would rather you heard that from us: a straight run of blocks is solved as one beam element unless a load or a junction forces an interior node, which is accurate to 0.5% when the axial force is nearly uniform but reports 3.14 against the exact 9.89 for a 19 m column buckling under its own weight — conservative, by a lot. Two scripts in the repository reproduce both numbers against the shipped engine.
Requires Minecraft 1.20.1 and Forge 47.x. Windows and Linux x86-64; on macOS or ARM the mod plays normally with analysis disabled.
About the bundled analysis engine
This mod ships two native executables inside its jar — blockreality-engine/br-sidecar (Linux x86-64, 2 676 992 bytes) and blockreality-engine/br-sidecar.exe (Windows x86-64, 4 118 572 bytes) — and unpacks the one matching your platform to <game directory>/blockreality/engine/<hash>/ the first time an analysis runs. Nothing is unpacked on any other platform. Please read this before you decide whether to trust it:
- It downloads nothing, ever. There is no updater, no telemetry, no remote call. You do not have to take that on faith:
br-sidecar.exenames exactly two DLLs in its import table,KERNEL32.dllandmsvcrt.dll— noWS2_32, noWININET, noWINHTTP. One command shows it:objdump -p br-sidecar.exe | grep "DLL Name". The Linux build links onlylibm,libcand the loader, andobjdump -T br-sidecarcontains no socket, connect or resolver symbols. Thesidecar/sources include no networking header at all. - It is verified before it runs.
blockreality-engine/engine.manifestin the jar records the SHA-256 and byte length of each binary; a file that does not match is deleted rather than executed, and the unpack folder is named after that hash so it can never silently overwrite an engine you put there yourself. - It is a solver, not a launcher. It reads a structural model on stdin or through a shared-memory buffer and writes numbers back — no shell, no file system beyond its own temp buffer, no child processes of its own. It runs out of process precisely so that a fault in the C++ costs one analysis instead of your server or your world.
- It is open source and Apache-2.0, built from
sidecar/in this repository. The build pins the one field that made it non-deterministic, so two clean builds on the same toolchain give identical hashes, and those hashes are published in the release and inevidence/VERIFICATION.md. One caveat stated plainly: rebuilding it independently is not possible today, because it statically links FrameCore, an external source dependency this repository does not carry. - It is not code-signed. It is a MinGW cross-build from an unfunded open-source project, so there is no certificate. Statically linked, unsigned binaries of this shape do sometimes draw heuristic hits from individual antivirus engines; the SHA-256 values below are published so you can check any scan result against the exact bytes we shipped rather than a repack.
- You can refuse it. Set
analysisEnabled = falsein the world's server config and nothing is unpacked and nothing is started; or pointsidecarPathat your own build, which also means the bundled copy is never unpacked. (Deleting the unpacked folder does not refuse it — the next launch puts it back.) Without an engine the mod loads and plays normally with analysis disabled, and says so.
Source: https://github.com/rocky59487/block-reality · Verification record: evidence/VERIFICATION.md

