A portable hole in the ceiling — real sky light underground, on your terms.
Sunwell adds craftable Sunwell Lanterns that project true Minecraft sky light into enclosed spaces: crops grow, Dynamic Trees survive, daylight sensors respond, and rain can fall through — like open sky, but you hang it from a ceiling.
Pack makers get a tag-driven sunwell engine: register any block as a simple grow lamp, a full weather-aware sunwell, or anything in between — no Java required.
| Feature | Sunwell Lantern | Torch / Glowstone |
|---|---|---|
| Light type | Sky light (what plants check) | Block light only |
| Grows Dynamic Trees | Yes (≥ 12 sky light) | No |
| Daylight sensors | Yes, when exposed to day | No |
| Undead sun-burn | Optional (tag + config) | No |
| Weather & time | Optional (tag + config) | Always on |
| Mob spawns | Suppressed in lit region (configurable) | Normal rules |
- Vanilla lantern placement — floor or hanging from a ceiling
- Emits block light 15 so the room stays usable at night
- Projects virtual sky light below (full tag profile: day/night, weather, rain, burn)
- Living orb VFX on the client: a soft radial glow, slowly rotating radiant light shafts, and a storm-reactive orb that dims, cools, and flickers with rain and thunder
- Rare lightning through the lantern during thunderstorms — far more often near a lightning rod
- Recipe: quartz + iron bars + glowstone + glass
- Soul-lantern variant with block light 10
- Same sunwell behavior and tag profile as the Sunwell Lantern
- Recipe: quartz + iron bars + soul sand + glass
Every sunwell block needs #sunwell:sunwell_source. That alone gives a static grow light — always-on virtual sky at skyLevel, no undead burn, no weather dimming, no rain.
Opt in to extra behavior with additional tags:
| Tag | Effect |
|---|---|
sunwell:sunwell_source |
Required. Flood-fills virtual sky light for crops & trees |
sunwell:dynamic_exposure |
Light follows day/night, surface sky, weather, and gentle lantern flux |
sunwell:undead_burning |
Undead can sun-burn in the lit region during the day |
sunwell:rain_through |
Rain and snow fall through the region during weather |
Default mod lanterns ship with all four tags. Pack integrations (for example Liminal Industries ceiling lamps) can use sunwell_source only — underground farms without burning your base, without weather flicker, without rain/snow shafts or lightning.
Full weather presentation — storm-reactive orb (dim/cool/flicker), rain & snow falling through, rotating radiant shafts, and rare lightning through the column — requires both dynamic_exposure and rain_through. Default Sunwell / Soulwell lanterns include both; pack blocks must opt in explicitly.
{
"replace": false,
"values": [
"yourmod:ceiling_lamp"
]
}File: data/sunwell/tags/blocks/sunwell_source.json (on Minecraft 1.21+ this folder is singular: data/sunwell/tags/block/sunwell_source.json)
ServerEvents.tags('block', event => {
event.add('sunwell:sunwell_source', 'kubejs:ceiling_lamp')
event.add('sunwell:sunwell_source', 'blockofsky:sky_block')
})ServerEvents.tags('block', event => {
const block = 'yourmod:solar_panel'
event.add('sunwell:sunwell_source', block)
event.add('sunwell:dynamic_exposure', block)
event.add('sunwell:undead_burning', block)
event.add('sunwell:rain_through', block)
})Global config toggles (enableUndeadBurning, respondToWeather, and so on) still act as master switches — tags grant capability; config can disable it pack-wide.
- Place a Sunwell Lantern (or any tagged block) on a ceiling.
- The mod flood-fills open air below, stopping at solid blocks.
- Inside that region, sky light is raised to a configurable level (default 14).
- Blocks with
dynamic_exposuredim and brighten with the outside world; static sources stay at full grow strength around the clock. - Block light from the lantern itself keeps the room lit after dark.
Performance: bounded flood-fill with per-tick chunk and node budgets, chunk caching, and adaptive batch sizing — designed for dense lamp layouts in large underground builds. Removing a source re-floods and clears its region, and the client re-renders the affected area so the lit space updates immediately (no stale "still exposed to sky" lighting).
Full-profile lanterns (dynamic_exposure + rain_through) come alive with the weather — all rendered additively with no depth-write, so nothing z-fights or "tears":
- Radial glow — a soft round halo around the orb (no hard-edged square overlay).
- Radiant shafts — a slowly rotating star-burst of light shafts from the orb; they lengthen and brighten during storms.
- Storm-reactive orb — in rain and thunder the orb takes a cool, overcast tint and picks up a deeper, restless flicker; calm weather stays a gentle ambient breathe.
- Rain & snow shafts — precipitation falls through the lit region in a widening cone, splashing on the floor.
- Lightning through the column — a rare visual bolt during thunderstorms, far more frequent near a lightning rod (
lightningRodBoost). Visual-only by default (flash + sound, no fires).
Every effect is gated by config (lanternFlux, respondToWeather, weatherShaftParticles, lightningThroughOdds, lightningRodBoost) so packs can dial it back or off.
config/sunwell-server.toml
| Option | Default | Description |
|---|---|---|
maxRadius |
12 | Horizontal spread from each source (blocks) |
maxDepth |
24 | Maximum depth below a source (blocks) |
| Option | Default | Description |
|---|---|---|
skyLevel |
14 | Virtual sky brightness (14 grows everything; 15 triggers vanilla canSeeSky) |
attenuateByDepth |
false | Light falls off with distance from the source |
| Option | Default | Description |
|---|---|---|
followDayNightCycle |
true | Dim sunwell light at night for dynamic_exposure sources |
respondToWeather |
true | Rain and storms dim dynamic_exposure sources |
respondToSurfaceLight |
true | Tie strength to real outdoor sky above the column |
lanternFlux |
true | Subtle flicker on dynamic_exposure sources (matches lantern VFX) |
allowRainThrough |
true | Master switch for rain/snow through rain_through tags |
weatherShaftParticles |
true | Client rain/snow shafts + weather particles (full lantern profile only) |
lightningThroughOdds |
80000 | 1-in-N server tick chance for thunder lightning through full-profile lanterns (0 = off) |
lightningRodBoost |
40 | Lightning strikes this many times more often on a column with a vanilla lightning rod within 4 blocks (1 = no bonus) |
lightningVisualOnly |
true | Sunwell lightning bolts do not set fires |
enableUndeadBurning |
true | Master switch for undead burn on undead_burning tags |
blockHostileSpawns |
true | Block monster spawns inside any lit region |
| Option | Default | Description |
|---|---|---|
nodeBudgetPerTick |
40000 | Flood-fill cell budget per tick |
chunkBudgetPerTick |
24 | Chunks rebuilt per tick |
Tips
- Always-on grow rooms: tag blocks with
sunwell_sourceonly, or setfollowDayNightCycle = falseon dynamic sources. - Liminal Industries / sealed backrooms bases: ceiling grow lamps use
sunwell_sourceonly (no weather dimming). For portable Sunwell Lanterns underground, setfollowDayNightCycle = falseinconfig/sunwell-server.tomlso crops keep growing at night. Pair withrespondToWeather = falseif you do not want rain shafts indoors. - Safe undead farms under lamps: omit
undead_burning, or setenableUndeadBurning = false. - Keep
skyLevelat 14 unless you explicitly need vanillacanSeeSky()(15).
| Minecraft | Loader | Java | Status |
|---|---|---|---|
| 1.20.1 | Forge 47.4+ | 17 | Supported |
| 1.21.1 | NeoForge 21.1+ | 21 | Supported (NeoForge port) |
The 1.21.1 NeoForge build is a standalone port of the same engine. It carries the full lantern/VFX and tag-driven light system; it does not bundle the optional Amendments wall/hand-lantern integration that ships on 1.20.1. Data-pack tag folders on 1.21+ are singular (tags/block, recipe, loot_table). Other Minecraft or loader versions are not supported.
Sunwell is an original mod by SdataG — all code, block models, textures, and client VFX were written and authored for this project. No assets or textures were ported from any prior mod.
The general idea of a ceiling-mounted virtual skylight lantern is familiar in the modding community (including older projects such as Ferreus Veritas's Skylight Lanterns); Sunwell is an independent reimplementation with its own architecture: tag-driven profiles, exposure system, rain-through weather hooks, performance budgets, soul variant, and client presentation.
License: MIT
Links: GitHub · Project page

