Lucis

A lightweight server-side light engine that speeds up any light related tasks drastically up to ~8-12x faster!
Neat lush caves, isn't it? Those berries are glowing properly!

Neat lush caves, isn't it? Those berries are glowing properly!

Just an example plot with candles to test out that it does not break anything.

Just an example plot with candles to test out that it does not break anything.

Sodium, Iris and other client-side mods also will work just fine in case you wondered.

Sodium, Iris and other client-side mods also will work just fine in case you wondered.

Description

Lucis

Lucis is a lightweight server-side light engine. It replaces expensive parts of the vanilla Minecraft lighting pipeline with a faster region-based system designed for high update throughput, faster chunk lighting and better scaling on multi-core CPUs allowing for faster worldgen and spawning massive structures without drastic TPS drops.

Originally started as a research project to learn how Minecraft's light engine works, ended rewriting lighting because the original one was too slow for me and decided to have some fun attempting to do something with it!

I wanted to spawn huge (like really huge!) structures into the world, but got stuck that vanilla light engine just… you know haven't expected THAT much amount of blocks to calculate light and just hangs itself, so I've tried to solve that.

Yes, Starlight and ScalableLux exists. However, I wanted to research and look inside myself instead of using existing solutions. So, here is Lucis, that speeds up lighting up to ~8-12x than vanilla and ~1.5x faster than ScalableLux/Starlight!

What Lucis does?

Lucis optimizes chunk lighting during world generation on a chunk preparation stage and runtime block light and skylight updates after block changes.

Instead of relying only on vanilla per-update lighting behavior, Lucis groups light changes by region, processes them asynchronously where possible, then publishes the resulting light data back to Minecraft's light engine in batches.

The goal is very simple. Reduce lighting cost during heavy block updates, chunk loading and skylight changes.

How it even works?

Is this another fork of Starlight?

No, this is an another approach to optimize light calculations where possible. Let me attempt to describe that.

Minecraft stores light per section and updates it whenever blocks are placed, removed, generated or changed. While that will work well for general gameplay, but it can become slow when the game has to process many light-affecting blocks in a short time or generating the world.

Lucis changes this by collecting lighting work into regions. A region is a small owned area of chunks that can be processed as one unit. When a block update happens, Lucis records the change, groups it with nearby changes, and sends that work to its runtime lighting system. This avoids treating every small update as a fully separate lighting operation.

For chunk lighting, Lucis can compute light during world generation using its own relighting path. It reads the chunk and nearby light data, calculates skylight and block light, then publishes the finished light sections back into Minecraft light thread.

As for runtime block changes, Lucis uses it's own light queue. If many blocks change during the same tick or close together, the queue lets Lucis process them as grouped region jobs. This is especially useful for dense block updates, terrain edits, generated structures, and skylight changes caused by roofs or large openings.

Lucis also separates calculation from publishing. The heavy work can be done outside the main light update path, so the final section data can be published back in batches. This reduces the number of small light tasks that have to go through the light thread one by one. The result is lower overhead when many light changes happen together.

The main technical quirk is that we still need to respect Minecraft's chunk state and light engine rules to not break many other mods that somehow get light data or implements it's own system. Lucis computes new light data, tracks changed regions, and then hands the result back to the engine.

Benchmarks

Benchmarks were run on Minecraft 1.21.1 with NeoForge 21.1.234, comparing Vanilla, ScalableLux and Lucis on the same benchmark harness such as seed, coordinates and environment.

Tested on AMD Ryzen 3700x with 4 threads delegated to Lucis.

ScalableLux left as by default with parallelism=-1 in the config.

Lower ns/change is better.

Workload Vanilla ns/change ScalableLux ns/change Lucis ns/change Lucis vs Vanilla Lucis vs ScalableLux
block_toggle_border 322846.1 43999.7 28881.8 11.18x 1.52x
dense_chunk_patch 17766.0 3480.5 3002.3 5.92x 1.16x
edge_toggle 80824.9 26701.6 18182.0 4.45x 1.47x
roof_toggle 22076.0 4680.8 2441.8 9.04x 1.92x
sky_hole 213509.0 119023.0 114414.0 1.87x 1.04x

Compatibility

While Lucis attempts to maintain compatability with other mods where possible and it should not break anything, something may break eventually. Proceed with a caution when it comes to a large modpacks.

Known notes:

  • ScalableLux (or any Starlight fork) is incompatible by definition. You should choose only Lucis or only ScalableLux, not both. Attempting to put both will lead to many crashes. Do not try to throw both into your modpack, thanks. It won't work that way.
  • Sable is compatible with Lucis. Currently Lucis does not inject its light for Sable plots, so they're currently use vanilla lighting for their projections. May be changed later once a better solution is found.
  • Should work mostly fine with most of worldgen optimization mods such as Generator Accelerator, C2ME, Fast Noise and ModernFix (some patches still count I guess). Lucis will speed up the world generation up to +15-25% in terms of speed in different scenarios. Neat, right?

If a mod also replaces or heavily modifies Minecraft lighting internals then it is very likely to conflict with Lucis.

Modpacks

You can use it in personal and public modpacks, including distributed packs, as long as the LGPLv3 license terms are respected.

The Lucis Team

GrandArtisan tier frameprofile avatar
  • 89
    Followers
  • 21
    Projects
  • 35.3M
    Downloads

More from DenisMasterHerobrineView all

  • Generator Accelerator project image

    Generator Accelerator

    • 18.3K
    • Mods

    Optimizes the Minecraft worldgen and chunk management by introducing better calculations.

    • 18.3K
    • June 10, 2026
    • Mods
    • +3
  • Moonrise Compats project image

    Moonrise Compats

    • 1.3K
    • Mods

    Compatibility patches for Moonrise. Helps mods that conflict with Moonrise run together by applying targeted integration fixes.

    • 1.3K
    • March 10, 2026
    • Mods
    • +3
  • Rebirth of the Night (RotN) project image

    Rebirth of the Night (RotN)

    • 1.2M
    • Modpacks

    Fear. Defy. Embrace. In an ever-changing world, bravery is vital... and arrogance is lethal.

    • 1.2M
    • February 2, 2026
    • Modpacks
    • +3
  • Fast Leaves + project image

    Fast Leaves +

    • 581
    • Resource Packs

    Fast Leaves Addon for Mods! 🥬

    • 581
    • December 25, 2025
    • Resource Packs
    • +3
  • Generator Accelerator project image

    Generator Accelerator

    • 18.3K
    • Mods

    Optimizes the Minecraft worldgen and chunk management by introducing better calculations.

    • 18.3K
    • June 10, 2026
    • Mods
    • +3
  • Moonrise Compats project image

    Moonrise Compats

    • 1.3K
    • Mods

    Compatibility patches for Moonrise. Helps mods that conflict with Moonrise run together by applying targeted integration fixes.

    • 1.3K
    • March 10, 2026
    • Mods
    • +3
  • Rebirth of the Night (RotN) project image

    Rebirth of the Night (RotN)

    • 1.2M
    • Modpacks

    Fear. Defy. Embrace. In an ever-changing world, bravery is vital... and arrogance is lethal.

    • 1.2M
    • February 2, 2026
    • Modpacks
    • +3
  • Fast Leaves + project image

    Fast Leaves +

    • 581
    • Resource Packs

    Fast Leaves Addon for Mods! 🥬

    • 581
    • December 25, 2025
    • Resource Packs
    • +3