Light Dust

All light sources will produce a configurable amount of dust. The dust also has physics! Highly customizable via in game config menu.

File Details

lightdust NeoForge 2.0.0.jar

  • R
  • Jul 1, 2026
  • 169.66 KB
  • 52
  • 1.21.1
  • NeoForge

File Name

lightdust NeoForge 2.0.0.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:light-dust-1460231:8354906"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Hey! Version 2.0.0 is finally here. It was quite a lot of work to bring the mod over to NeoForge 1.21.1. The config menu was supposed to be part of 2.0.0 but I figured it was easy to implement and I might as well release it early which is why this is pretty small for a v2.0 update. As always if you find any bugs (or have suggestions) please let me know by either posting a comment or making an issue in github, enjoy!

Also, if a few of these features look familiar, it's because that major Windows system corruption wiped out most of my recent work. I had to do a full reinstall and rebuild from older backups, meaning the features from update 1.7.5 and beyond were temporarily lost in the most recent builds. With this update, everything (hopefully) should be restored and added back in amongst a few other things.


Major Features

NeoForge 1.21.1 Port: Light Dust has been fully ported and rewritten to natively support Minecraft 1.21.1 NeoForge!

Spawning Algorithms (FAST vs. FANCY): Added an in game toggle to change how ambient dust calculates its spawn locations, should give you more control over performance.

Configs:

  • spawningMode: Spawning Algorithm Mode. FAST uses a lightweight, randomized sampling method. FANCY uses a flood fill search to map complex rooms. (Default: SpawningMode.FAST)
  • fastSpawnChecks: Math budget for FAST mode. Random sample count. Lower = Better FPS. (Default: 120)
  • fancySpawnChecks: Math budget for FANCY mode. Max blocks mapped by BFS. Restricts radius if too low. Note: If you set fastSpawnChecks to any value >400, I would suggest swapping to fancy. (Default: 1200)


Minor Features & QoL

Config Reloading: You no longer need to restart your game or rejoin your world to see your custom tints. Modifying dust tint colors, biome colors, or handheld light properties in the menu now applies the changes to the game (may need to wait for pre existing dust to decay and new ones to spawn in.

  • Also set the enableHandheldLights to be default false.


Performance Optimizations

  • Global Wind Grid: Instead of each particle doing its own expensive block lookups for cave drafts, a shared GlobalWindGrid now handles this in the background. Particles just do a simple array lookup.

  • Physics Culling: Particles now skip collision checks entirely when floating in open air. hasPhysics only enables when a particle is falling fast, near a floor/ceiling, or already on the ground.

  • Distance Based LOD: Particles further from the player now run expensive math less frequently. The further away, the more ticks they skip between updates.

  • Staggered Caching: Spread out the clearing calls for TINT_CACHE, BIOME_CACHE, BEHAVIOR_CACHE, and DRAFT_CACHE across multiple ticks instead of wiping them all simultaneously. Caches are also now cleared once every 400 ticks (20 seconds) instead of every 20 ticks (1 second).

  • Mathematical Optimizations: Added Math.max guards for distance calculations and reduced Math.sqrt calls inside interaction logic to only evaluate when a particle is confirmed within range.

  • Throttled Inventory and Compatibility Scanning: Adjusted HandheldLightManager to evaluate player slot states and perform reflection checks every 5 ticks rather than every single tick.

The optimizations should significantly increase your FPS. From my testing on a 4060 laptop with 16GB RAM, areas that used to run at 60 FPS (wind, max settings) and 42 FPS (cave drafts, max settings) now sit at ~120 FPS and ~80 FPS respectively. Action dust bursts from breaking blocks and explosions should also feel noticeably smoother, as ActionDustParticle no longer reads actionDustGravity and actionDustBounce from config on every tick.