Requires BKCommonLib for the low-level API's
- Tested Minecraft Versions:
- Source Code:
Join our discord for plugin help https://discord.gg/wvU2rFgSnw
Light cleaner is a simple plugin fulfilling a very powerful task: regenerating lighting. It does so running on a dedicated thread, using it's own optimized methods to minimize performance loss for the server. By operating on raw data it is easily capable of chomping through 200 chunks a second!
As of 1.12-v2, it is now also possible to let the plugin automatically clean up light for newly generated chunks. This way there is no need to use the commands while players explore new areas of the world.
A bug that has haunted minecraft forever is the infamous dark lighting found all over the place when chunks are generated. You'll find them in caves, against canyon walls, in the nether and even underground! All of this buggy-looking light ruins the aesthetics that makes Minecraft nature beautiful. Worse, the constant client-side fixing of this lighting drags client-side performance down, especially in the nether or extreme biomes.
No more! With a simple command this plugin will eagerly chomp away at millions of blocks, recalculating their light levels completely from scratch. It uses vanilla Minecraft block information for this, which means it will look just as intended.
Another use is repairing light levels after plugins alter blocks in "fast" ways, such as WorldEdit. If blocks are altered while executing the slow server light regeneration function, it would take ages to change blocks. This plugin offers best of both worlds, allowing repairs after the fact.
By utilizing a powerful algorithm combined with smart caching it is capable of regenerating this lighting much faster and more accurately. Lighting can be repaired for all the chunks in your view, or for all the chunks of a world. The main server thread is not stalled while doing these calculations.
This plugin offers the following commands:
PermissionsCode (Text):/cleanlight - regenerate lighting for all chunks you can see
/cleanlight 12 - regenerate lighting 25x25 chunks around you
/cleanlight world - regenerate lighting in the current world
/cleanlight world world1 - regenerate lighting for world1
/cleanlight abort - cancels any ongoing lighting operations
/cleanlight status - checks up on the status of the repairs
/cleanlight at [chunk_x] [chunk_z] [chunk_radius] (world) - regenerate lighting remotely (command blocks)
ConfigurationCode (Text):Allows the player to regenerate lighting within player view radius
Allows the player to clean at any radius, even beyond view radius
Allows the player to regenerate for entire worlds (that's a lot of chunks!)
Allows the player to only clean an area of a specific radius or less.
For example, radius 5 allows command /cleanlight 5 and /cleanlight 4, but not /cleanlight 6.
Allows the player to abort all lighting operations
Allows the player to check up on the status
To turn on automatic cleaning of newly generated chunks, set the following in the config.yml:
To turn on automatic cleaning after players perform WorldEdit/FastAsyncWorldEdit operations, set the following in the config.yml:Code (Text):autoCleanEnabled: true
When remaining available memory (in MB) on the server drops too low, light cleaner will pause and save worlds to reduce memory until it can continue. If you run into out of memory problems, raise this value. If you feel it stalls for too long, lower it.Code (Text):autoCleanWorldEditEnabled: true
When processing the plugin has to load large areas of chunks as fast as possible. With high concurrency it will queue a lot of chunks for loading at the same time, while with low it may wait a longer time. If you find the plugin affecting server performance too much, lower this value.Code (Text):minFreeMemory: 400
If you have worlds that aren't persistently saved to disk, you may want to disable saving on these worlds. This also prevents the plugin from continueing lighting operations when the server is restarted.Code (Text):asyncLoadConcurrency: 50
FastAsyncWorldEdit has had some issues with glitched lighting after making changes to the world. You can turn on automatic cleaning after performing changes using FAWE in the config.yml. Please make sure to also disable the builtin cleaning in FAWE's config.yml if you do (mode: 0)!
Unfixable lighting glitchesCode (Text):lighting:
# If packet sending should be delayed until relight is finished
# The relighting mode to use:
# - 0 = None (Do no relighting)
# - 1 = Optimal (Relight changed light sources and changed blocks)
# - 2 = All (Slowly relight every blocks)
# If existing lighting should be removed before relighting
Minecraft completely deletes chunk slices (16x16x16 blocks) when all blocks in it are air. As a result, no lighting information can be stored in there. Blocks that touch these 'no-light' zones show up as very dark lighting sometimes. This is a Minecraft bug that can't easily be fixed. You can work around it by moving the surface touching this empty slice by one block, or by placing a block in the empty slice so it is no longer empty. A single barrier block can make minecraft see it as non-empty, allowing light to be saved.
This is primarily a problem in nether worlds where empty slices default to a dark color, instead of light like in overworlds.
- This plugin requires BKCommonLib to be installed
- This plugin is a continuation of "NoLagg Lighting", a component held back by issues that stall the main plugin from release.
- Care was taken to not write any block information to the chunks. This is to prevent catastrophic losses of world data. Only light levels are updated.
- Repairing worlds does incur a potential tick rate drop while loading and saving chunks from/to disk. This tick rate drop is minimized by limiting the amount of chunks loaded at once.
- Do not enable the automatic cleaning function if your server is Minecraft version 1.14 or newer. Not only is it no longer required, it will cause endless chunks to be generated well past your world border. This is because the server generates 3-deep neighbouring chunks in the background for every chunk that is loaded.
If you really like my work and want to give something in return, feel free to donate something small to me using the link down below. Thank you!
Light Cleaner 1.16.5-v1
Regenerates light levels in your world, fixing bugged lighting such as black cliffs
- Support for 1.16.5 BKCommonLib, commandblock support Jan 17, 2021
- CubicChunks (infinite height) support, fix for FAWE support Nov 4, 2020
- Fixes for some block types, permissions revamped Sep 20, 2020