Description
π Truly Bright - Dynamic Lighting
The torch in your hand should light the room, not just your inventory.
Held torches · Dropped lanterns · Burning mobs · Built for Truly Dark · Sodium-native · Create-compatible
π€ Companion Mod
https://www.curseforge.com/minecraft/mc-mods/truly-dark
π¦ The Pitch
You walk into a cave. You raise a torch. In vanilla Minecraft, the torch lights up… your hotbar. The cave stays dark. The mob three blocks away stays dark. The wall right in front of your face stays dark.
Truly Bright fixes that.
Every torch you hold, every lantern you drop, every creeper on fire, every glow squid you swim past — they all cast real dynamic light onto the world around them. Light follows the things that should be glowing, not just the icons in your inventory.
> π Built as the companion to Truly Dark — that mod takes the ambient sky-light out, this one puts the player's own light back in, only where you actually have it. They're designed as a pair: turn the world's lights off, then carry your own.
π‘ What It Actually Lights
Anything that should glow, glows. Out of the box:
- π₯ Held items — torches, lanterns, soul lanterns, glowstone, sea lanterns, redstone torches, jack-o'-lanterns, lava buckets, blaze rods, magma blocks
- π¦ Dropped items — same list, in
ItemEntityform on the ground - πΌοΈ Item frames — a torch in a frame is still a torch
- π Glow-emitting mobs — glow squid, magma cube, blaze
- π₯ Burning entities — anything currently on fire (flaming arrows, ignited TNT, set-on-fire creepers) emits light at level 15
- π§ Water-aware — torches go dark underwater; sea lanterns and glowstone keep glowing
Every per-item luminance, falloff radius, and water-sensitivity flag is data-driven. Modded items can opt in via a JSON resource pack.
βοΈ Engine Highlights
Built once, fast everywhere. Some of what's under the hood:
- π Sodium-native from day one — separate mixin path that taps directly into Sodium / Embeddium's chunk-builder so dynamic light bakes into your chunk vertices, not just the screen-space lightmap
- π§΅ Lock-free, thread-safe — copy-on-publish snapshot architecture means Sodium's worker threads never wait on the engine and never see torn state
- π Exact-key spatial index — your fifth torch can never accidentally illuminate the cave you walked past five minutes ago because two cell coordinates happened to share a hash bucket
- ποΈ Per-source falloff curves — linear, inverse-square, or smoothstep, picked per light source. Smoothstep eliminates the visible "pop" when a moving torch crosses a chunk-section boundary
- π RGB-tracked internally — color flows through the engine even when output is monochrome, so an Iris/Oculus path can pick it up later
- π Sub-block-level interpolation — luminance values written into the lightmap with full fractional precision, not snapped to integer 0–15 levels
- π Incremental snapshot rebuilds — only sources whose fingerprint actually changed since last tick re-distribute; identical frames skip the rebuild entirely
Loader-free engine, fully unit-tested without booting Minecraft.
π Compatible With Mods That Replace Rendering
This is the bit other dynamic-lighting mods quietly fail at.
- π© Sodium / Embeddium — handled at the chunk-builder level. Your lit blocks bake into the geometry on Sodium's worker threads, just like vanilla light
- βοΈ Create + Flywheel — Truly Bright hooks Flywheel's per-section GPU light buffer at
LightDataCollector.collectSection. Your torch lights the kinetic contraption next to you, the train car going past you, the windmill three blocks away. (For four years, lambdynamiclights issue #120 has tracked the same architectural mismatch with no fix — Truly Bright fixes it on our side.) - π©οΈ Create Aeronautics — aircraft contraptions are rendered through Flywheel, so they're covered automatically. The torch on the deck of your airship actually lights the deck.
- π¨ Colorwheel (Iris × Flywheel bridge) — its
ClrwlEngineinstantiates the sameLightStorage, so the same hook covers it transparently - π Iris / Oculus shaders — see the section below
β No special config needed. Drop the jar in. We detect Flywheel at load time and apply the compat mixin only when it's present — no NoClassDefFoundError on setups without it.
π Designed for Truly Dark
The two mods are built around the same world-feel:
| Truly Dark | Truly Bright | |
|---|---|---|
| Job | takes the ambient lights out | puts the player's lights back in |
| Layer | sky / fog / clouds / cave shadows | block-light at the world block grid |
| You'll feel it when… | midnight is genuinely dark | a torch you place actually illuminates a wall |
| Multiplayer-safe | β client-only | β client-only |
| Sodium-compatible | β | β |
Use them together for the experience they were both designed for: real darkness everywhere except where you chose to put a light.
Use either alone — both stand on their own.
π οΈ Loader & Version Compatibility
| 1.20.1 | 1.21.1 | |
|---|---|---|
| Forge | β | — |
| NeoForge | β | β |
| Fabric | β | — |
| Quilt | β | — |
β Client-side in function — runs on the client, no server-side gameplay changes β Dedicated-server safe — gated initializers let the jar sit on a server for mod-list parity without touching rendering code β Multiplayer-safe — no packets, no protocol changes, every player sees their own dynamic lights β No required dependencies (besides Fabric API on Fabric / Quilt)
More 1.21.x ports landing as the loaders catch up.
β οΈ About Shaders (Iris / Oculus)
Shader packs replace Minecraft's lighting pipeline. When a shader pack is active, Truly Bright's effect has the potential to be bypassed — it's the same architectural mismatch Truly Dark calls out, just from the brightness side instead of the darkness side.
Note that SOME SHADER PACKS will be compatible natively because simple packs (Sildur's Lite, default-configured BSL, vanilla-plus) sample the lightmap texture as part of their composite — that picks up our brightened pixels and the effect comes through for free. Heavy packs that reconstruct lighting from raw block-light values don't. It's pack-dependent — try it out and post a comment to help others know what works.
A first-class Iris/Oculus path with colored RGB output is on the roadmap — the engine already tracks color end-to-end internally, so when the shader-side wiring lands, no engine changes are needed.
tl;dr — same disclaimer as Truly Dark: try your shader, your mileage may vary.
π« What It Is Not
- β Not a flashlight mod — it lights what should already be glowing, not the camera direction
- β Not a content mod — adds no items, blocks, or recipes
- β Not a server-side gameplay change — other players see their own lights
- β Not a shader — works without one, doesn't try to replace one
- β Not aggressive — every per-item luminance and falloff is tuneable, JSON-driven, and openly registerable
Just: the torch in your hand actually does its job.
Carry the dark. Carry the light.
Mod by Dylan · All Rights Reserved
Companion mod: π Truly Dark


