Mod

SunWell

Quick rating

SunWell

No reviews yet

Craftable Dynamic Sunwell Lanterns beam real sky light underground. Crops, Dynamic Trees, rain and snow. Tag any block as a grow lamp or full sunwell for modpacks.

Tech
Magic
Farming & Agriculture
QoL & Tweaks
AI Art
Mod Loaders
Forge
NeoForge
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

About

Project Details

Type
Mod
Latest Version
sunwell-2.1.0.jar
Authors

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID

Resources

External Links

Source Issues Wiki Discord

About

Description

CurseForge Downloads Supported Versions Loader License

☀️ Sunwell

A portable hole in the ceiling. Real sky light underground — on your terms.

Sunwell concept art

Sunwell adds craftable Sunwell Lanterns that project true Minecraft sky light into enclosed spaces. Crops grow. Dynamic Trees survive. Daylight sensors respond. Rain falls through.

Like open sky — except you hang it from a ceiling.

Pack makers get a tag-driven engine: register any block as a simple grow lamp, a full weather-aware sunwell, or anything in between. No Java required.


✨ Why not just a torch?

💡 Sunwell Lantern 🔥 Torch / Glowstone
Light type Sky light — what plants actually check Block light only
Grows Dynamic Trees ✅ Yes (needs ≥ 12 sky light) ❌ No
Daylight sensors ✅ Yes, when exposed to "day" ❌ No
Reaches the floor ✅ A widening cone — higher lamp, wider pool ❌ Falls off with distance
Undead sun-burn ⚙️ Optional (tag + config) ❌ No
Weather & time ⚙️ Optional (tag + config) Always on
Mob spawns 🚫 Suppressed in the lit region Normal rules

🏮 The Sunwell Lantern

Sunwell Lantern renders

  • 🪝 Vanilla lantern placement — stands on the floor or hangs from a ceiling
  • 🔦 Projects virtual sky light below in a downward-widening cone — hang it higher, light a wider pool of floor. Like a small sun.
  • 🌗 The orb mirrors the sky it stands in for (see below)
  • Rare lightning through the column in thunderstorms — far more often near a lightning rod
  • 🧪 Recipe: Quartz ×3 · Iron Bars ×4 · Glowstone · Glass

⚠️ Upgrading from 2.0.x — the Soulwell Lantern has been removed

One lamp now presents every sky, so a separate soul variant no longer has a job. Placed Soulwell Lanterns will not survive the update, and any recipe, tag, or script referencing sunwell:soulwell_lantern must be updated.

<details> <summary>💡 Why is the block light only 8?</summary>

Because the lantern lights your room through its sunwell, not by being a torch.

That projected light already scales with day, night and weather — so it genuinely dims in a storm and drops further at night. A constant block light 15 drowned all of that out and pinned every room at full brightness, which also buried the orb it exists to show off.

</details>


🌤️ The orb is a window

Look into the lantern and you see the sky it stands in for.

Sky The orb becomes
☀️ Clear day A warm sun, with slowly rotating radiant shafts
🌙 Night A pale, cool moon — dimmer, and no shafts. Moonlight casts no god rays.
🌧️ Rain A flat, grey overcast cloud
⛈️ Thunderstorm A dark, cold thunderhead that flashes white with every real bolt

It changes when the sky changes and as fast as the sky changes.

<details> <summary>⏱️ …because it runs on Minecraft's clocks, not its own</summary>

  • 🌅 Dusk & dawn follow the game's real twilight ramp — the exact curve the world darkens on, stretched across the full ~90 seconds it actually takes.
  • 🌩️ Weather rides vanilla's own ~5-second ramp. A clear sky slamming into a thunderstorm lands hard, because vanilla drives it that way.
  • ☁️ Orb → cloud is a real transformation: the orb flattens and spreads as cloud cover arrives, and the cloud rises out of that same pose. Sun → moon is a straight cross-fade — one round orb dissolving into another.

There is no fade timer anywhere in it. The mix of skies is the sky, sampled every frame — so the lantern can't lag behind the world or run ahead of it.

</details>

<details> <summary>🌧️ Rain, snow & the sprinkler</summary>

Precipitation falls through the lit cone and splashes where it lands, using Sunwell's own rain particle — so it looks the same whether or not a weather mod is installed.

A lantern standing on the ground has nothing to rain "down" into, so it throws its weather outward and up instead, arcing back down across the radius it lights. Like a sprinkler.

</details>

<details> <summary>🎨 How the glow is drawn</summary>

Everything is rendered additively with no depth-write, so nothing z-fights or tears against the cage as the camera moves. The halo is a real radial gradient — a soft round bloom, not a hard-edged square overlay.

The orb sits on cutout while settled (alpha-tested, no sorting, so the overlapping orb boxes can't shimmer) and only switches to translucent mid-dissolve, where the fade hides any sorting wobble.

</details>

💡 Tip — Every effect is gated by config (lanternFlux, respondToWeather, weatherShaftParticles, lightningThroughOdds, lightningRodBoost), so packs can dial it back or off entirely.


🏷️ Tag-driven behavior

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 into more 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 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

The Sunwell Lantern ships with all four.

📝 NoteFull weather presentation (the sky-mirroring orb, rain & snow shafts, sun shafts, and lightning through the column) requires both dynamic_exposure and rain_through. Pack blocks must opt in explicitly.

<details> <summary>📦 Datapack — static grow lamp</summary>

data/sunwell/tags/blocks/sunwell_source.json

{
  "replace": false,
  "values": [
    "yourmod:ceiling_lamp"
  ]
}

</details>

⚠️ On Minecraft 1.21+ this folder is singular: data/sunwell/tags/block/sunwell_source.json (likewise recipe/, loot_table/).

<details> <summary>🔧 KubeJS — static grow lamp</summary>

ServerEvents.tags('block', event => {
  event.add('sunwell:sunwell_source', 'kubejs:ceiling_lamp')
  event.add('sunwell:sunwell_source', 'blockofsky:sky_block')
})

</details>

<details> <summary>🔧 KubeJS — the full treatment</summary>

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)
})

</details>

💡 TipTags grant capability; config can revoke it. Global toggles like enableUndeadBurning and respondToWeather act as pack-wide master switches over everything the tags allow.


⚙️ How it works

  1. Place a Sunwell Lantern (or any tagged block).
  2. The mod flood-fills the open air below it, stopping at solid blocks.
  3. That flood spreads in a cone — every block of descent buys extra horizontal reach (coneSpread), so a high ceiling lamp lights a wide pool of floor.
  4. Inside the region, sky light is raised to skyLevel (default 14).
  5. Blocks with dynamic_exposure dim and brighten with the outside world; static sources stay at full grow strength around the clock.

<details> <summary>🚀 Performance & correctness</summary>

Bounded flood-fill with per-tick chunk and node budgets, chunk caching and adaptive batch sizing — built for dense lamp layouts in large underground builds.

Light is published to other threads as immutable snapshots, so chunk meshing never reads a map the flood is still writing.

Removing a source re-floods and clears its region, and the client re-renders the affected area immediately — no stale "still exposed to sky" lighting left hanging around.

</details>


🎛️ Configuration

All options live in config/sunwell-server.toml.

<details> <summary>📐 Region — how far the light reaches</summary>

Option Default Description
maxRadius 12 Horizontal spread from each source (blocks)
maxDepth 40 Maximum depth below a source (blocks)
coneSpread 1 Extra horizontal radius gained per block of descent. 0 = a straight column

</details>

<details> <summary>💡 Light — how bright, and how it falls off</summary>

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

</details>

<details> <summary>🌍 Behavior — weather, burning, spawns, lightning</summary>

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 the real outdoor sky above the column
lanternFlux true Subtle flicker on dynamic_exposure sources
allowRainThrough true Master switch for rain/snow through rain_through tags
weatherShaftParticles true Client rain/snow shafts (full lantern profile only)
lightningThroughOdds 80000 1-in-N tick chance of lightning through a full-profile column. 0 = off
lightningRodBoost 40 Lightning is this many times likelier with a rod within 4 blocks. 1 = no bonus
lightningVisualOnly true Sunwell lightning does not set fires
enableUndeadBurning true Master switch for undead burn on undead_burning tags
blockHostileSpawns true Block monster spawns inside any lit region

</details>

<details> <summary>🚀 Performance — tick budgets</summary>

Option Default Description
nodeBudgetPerTick 80000 Flood-fill cell budget per tick
chunkBudgetPerTick 24 Chunks rebuilt per tick

</details>

<details> <summary>🐛 Diagnostics — when something looks wrong</summary>

Option Default Description
debugSkyState false Log which sky the orb is showing, every 2s. Use when the orb doesn't match the sky
debugWeatherParticles false Log why shaft rain/snow is or isn't spawning, every 2s. Use for a dry cone
debugOpacityChurn false Log each opacity-driven invalidation

</details>

<details> <summary>💭 Recipes for common setups</summary>

  • Always-on grow rooms → tag blocks with sunwell_source only, or set followDayNightCycle = false on dynamic sources.
  • Sealed backrooms bases → ceiling grow lamps use sunwell_source only. For portable lanterns underground, set followDayNightCycle = false so crops keep growing at night. Pair with respondToWeather = false if you don't want rain shafts indoors.
  • Safe undead farms → omit undead_burning, or set enableUndeadBurning = false.
  • Wider pools from high ceilings → raise coneSpread. It costs flood budget, so raise nodeBudgetPerTick to match.
  • Leave skyLevel at 14 unless you explicitly need vanilla canSeeSky() (15).

</details>


📦 Supported versions

Minecraft Loader Java Status
1.20.1 Forge 47.4+ 17 Supported
1.21.1 NeoForge 21.1+ 21 Supported (standalone port)

<details> <summary>Differences between the two builds</summary>

The 1.21.1 build 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, and its data-pack folders are singular (tags/block, recipe, loot_table) rather than plural.

Other Minecraft or loader versions are not supported.

</details>


📜 Credits & license

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.

<details> <summary>On prior art</summary>

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, an exposure system, rain-through weather hooks, performance budgets, models, textures and client presentation.

</details>

License: MIT

Source on GitHub · Project page · Changelog

Screenshots

Gallery

  • image_50.png
    image_50.png image_50.png
  • 59d83ecd-6d94-46d6-9829-aa2b321863f5.jpg
    59d83ecd-6d94-46d6-9829-aa2b321863f5.jpg 59d83ecd-6d94-46d6-9829-aa2b321863f5.jpg

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

~1,000
Downloads
Last Updated
Created
Last synced
When ModDex last fetched and imported data for this project from CurseForge or Modrinth. High-traffic and active projects are checked more often.
Next pipeline sync