Light Dust
Light Dust is a lightweight client side mod that adds floating dust to your world. Built with interactive physics, dust reacts to light, weather, and the exact biome you are exploring.
As of v1.9.5+ this mod has an in game config menu (no dependencies) which you can find by doing: menu -> mods -> lightdust -> config
Features
- You can see some of them by looking at the config options below! But there really is a lot to list so I suggest looking at in via in game config menu.
Spawning & Performance
-
spawnMode(Default:FANCY): Choose between FANCY and FAST for spawning dust. -
fastSpawnChecks(Default:120): Math budget for FAST mode. Random sample count. Lower = Better FPS. -
fancySpawnChecks(Default:1200): Math budget for FANCY mode. Max blocks mapped by BFS. Restricts radius if too low. Note: If you setfastSpawnChecksto any value >400, I would suggest swapping to fancy. -
enableMaxYLevel(Default:false): Toggle for the height limit. -
maxYLevel(Default:60): The height coordinate where dust stops spawning. -
ambientRadius(Default:10): How far away from the player dust will attempt to spawn. -
ambientHardCapRadius(Default:12): The absolute maximum distance dust can exist. Particles further than this are deleted instantly. -
ambientBlockCap(Default:14): The maximum density of dust allowed in a single block. -
minBlockLight(Default:6): The minimum block light level required for ambient dust to spawn. -
daytimeLightDiff(Default:5): The minimum difference between Block Light and Sky Light required for dust to spawn during the day. -
falloffDistance(Default:6): Distance from the player where dust density starts to decrease. -
falloffMultiplier(Default:0.3): Multiplier applied to the max particle cap beyond the falloff distance. -
enableOcclusionCulling(Default:true): Uses LOS raytracing to prevent dust from spawning behind solid walls.Visuals & Environment
-
useHdParticles(Default:true): Toggle for the HD dust particles or use the legacy version. Note that if you use this you should lower the values for particle size and opacity slightly. (I suggest 0.016 and 0.18 respectively) -
enableDynamicBlockColors(Default:true): Toggle for the block color inheritance system. -
ambientDustOpacity(Default:0.18): Base opacity for ambient dust. -
particleSize(Default:0.016): Adjust the visual size of the ambient dust particles. -
particleLifetime(Default:200): Control how long (in ticks) dust particles stick around. -
enableWind: Globally disables all wind and weather based directional pushing. -
windSpeedClear(Default:0.25): Adjusts global wind drift during clear weather. -
windSpeedRain(Default:0.35): Adjusts global wind drift during rain. -
windSpeedThunder(Default:0.5): Adjusts global wind drift during thunder. -
disableDuringRain(Default:false): Toggles to prevent outdoor dust from spawning or existing during rain. -
disableDuringThunder(Default:false): Toggles to prevent outdoor dust from spawning or existing during thunder.Interactions & Actions
-
enableBlockBreakingDust: Toggles the directional burst of dust particles when a block is destroyed. -
breakParticleCount(Default:12): Controls the volume of the block-breaking debris. -
breakParticleSpeed(Default:0.1): Controls the speed of the block-breaking debris. -
actionDustGravity(Default:2.0): Controls the fall speed of debris hitting surfaces. -
actionDustBounce(Default:0.2): Controls the bounciness of debris hitting surfaces. -
breakVacuumRadius(Default:1.2): The radius in blocks that ambient dust is pulled toward a broken block. -
enableBreakVacuum(Default: true): Toggle for the vacuum effect when a block breaks. -
breakVacuumForce(Default:10.0): How strong the dust is pulled toward the broken block. -
enableCaveTremors: Toggles the ceiling dust falling from Warden sonic booms and explosions. -
caveTremorParticleCount(Default:90): The base density of falling debris during explosions. -
tremorEpicenterMultiplier(Default:5.0): Controls intensity at the blast center. -
tremorFalloffExponent(Default:6.0): Controls how quickly intensity fades from the blast center. -
tremorCeilingBias(Default:0.75): Adjusts the ratio of ceiling-to-floor spawns. -
tremorFloorKickForce(Default:2.1): Adjusts the upward force for floor dust. -
tremorWavefrontThickness(Default:6.0): Controls the depth of the expanding shockwave zone. -
tremorMaxGravity(Default:40.0): Adjusts the weight of debris at the center. -
tremorMinGravity(Default:1.0): Adjusts the weight of debris at the outer edge. -
tremorRoofMultiplier(Default:0.4): Multiplier for the gravity applied to dust falling from the ceiling. -
tremorFloorMultiplier(Default:0.2): Multiplier for the gravity applied to dust kicked up from the floor. -
enablePlayerInteraction: Toggles whether player movement, weapon swinging, and shielding disturbs ambient dust. -
playerInteractRadius(Default:4.0): The radius at which player movements physically push dust particles. -
enableHeavyLandingDust: Toggles the ring of dust kicked up from heavy landings. -
heavyLandingMaxParticles(Default:96): Controls how many particles spawn when taking fall damage. -
heavyLandingParticleMultiplier(Default:12): Controls the multiplier for particles spawned when taking fall damage. -
heavyLandingUpwardSpeed(Default:0.2): Controls the speed of the heavy landing dust ring upward. -
heavyLandingOutwardSpeed(Default:0.12): Controls the shape of the heavy landing dust ring outward. -
heavyLandingAmbientPush(Default:1.0): Controls the shockwave force that pushes ambient dust away when you land. -
heavyLandingAmbientRadius(Default:4.0): Controls the shockwave radius that pushes ambient dust away when you land. -
enableThermalUpdrafts: Toggles the rising heat physics and updrafts above heat blocks. -
heatBlocks(Default:DEFAULT_HEAT_BLOCKS): List of blocks that emit heat for thermal updrafts.Dynamic Lights Compat
-
enableHandheldLights(Default:false): If true, items held in your hand will act as fake light sources, allowing dust to spawn and coloring the dust. -
handheldLightItems(Default:DEFAULT_HANDHELD_LIGHTS): List of items/tags and their light properties. Format:'modid:item_name=radius,#HEXCOLOR'or'#modid:tag=radius,#HEXCOLOR'.Experimental Features (
experimental.toml) -
enableCaveDrafts(Default:true): Enables air pressure and drafts inside caves. -
caveDraftStrength(Default:0.85): Multiplier for the speed of wind drafts inside caves. -
enableEntityDisturbance(Default:true): Allows non-player entities (mobs/projectiles) to kick up and disturb dust. This is hard capped to only track the 6 closest moving entities. -
entityScanRate(Default:4): How often in ticks the mod scans for nearby entities. -
entityPushStrength(Default:0.05): How strongly entities push dust when moving through it. -
enableAdvancedWindMath(Default:true): Enable complex spatial turbulence and sweeping wind physics. -
enableWindDeflection(Default:true): Allows wind to realistically blow dust down tunnels. -
enableDustSettling(Default:true): Allows dust particles to visually settle when hitting the ground.Color & Tinting Settings (
colors.toml) -
tintStrength(Default:0.75): Adjusts how strongly colored lights tint the dust. (suggest higher values if using Hd dust ex: 0.75). -
customTints: A list of light-emitting blocks and their hex colors for dust tinting. -
customBiomeTints: Define base ambient colors for biomes using hex codes. -
caveBiomeTriggers: Map specific blocks to a hex color for underground environment changes.
Q&A
Q: Does this work with true dark mods?
A: Yes. It should work with them. However, you may need to change the opacity of the dust.
Q: Does this work with Shaders?
A: Yes. However, shaders often change how transparency renders. If the dust looks too invisible, increase ambientDustOpacity in the config (try 0.45 or higher).
Q: Will this cause lag in big modpacks?
A: It is designed specifically to be lightweight. The mod has a ton of optimization options such as the newly added LOS and Hemisphere system aswell as Occlusion Culling to skip particle rendering behind solid walls. If you still drop frames, you can disable enableAdvancedWindMath or lower the particle caps in the configs.
Q: Can I change the color of the dust?
A: Yes! You can change the tint of light sources (customTints), the base color of any biome (customBiomeTints), and trigger colors underground using specific blocks (caveBiomeTriggers) in the colors.toml config.
Q: Does this work with modded biomes and caves?
A: Yep. Just add the modded biome ID or the modded blocks to the respective lists in the config, assign a hex color, and it should work just fine.
Q: How do I disable the Block Break particles?
A: Set breakParticleCount to 0 in the config.
How to Install Light Dust (Mod)
Light Dust by swisscheese819 is verified for Forge, Neoforge across Minecraft versions 1.20.1, 1.21.1 (latest release: 2.1.3, file size: 404 KB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.20.1, 1.21.1) and platform (Forge, Neoforge).
- Make sure you have the compatible loader or environment installed for Forge, Neoforge.
- Move the downloaded Light Dust file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 18d ago | 1 | ||||
| 18d ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 |
- Bug Fixes**<br>
- Fixed a severe lag bug causing single digit framerates and 100% render thread usage when switching worlds, changing dimensions, or altering server time. An uncleared explosion timestamp from a previous world would result in a massive negative time delta, triggering a math calculation error that attempted to spawn millions of particles in a single tick. The cache is now properly cleared on world unload and the math is bounded. (Resolves [issue #13](https://github.com/Swiss8191/Light-Dust/issues/10))
- Bug Fixes**<br>
- Fixed a severe lag bug causing single digit framerates and 100% render thread usage when switching worlds, changing dimensions, or altering server time. An uncleared explosion timestamp from a previous world would result in a massive negative time delta, triggering a math calculation error that attempted to spawn millions of particles in a single tick. The cache is now properly cleared on world unload and the math is bounded. (Resolves [issue #13](https://github.com/Swiss8191/Light-Dust/issues/10))
- Reset to Default:** Added a dedicated "Reset to Default" button next to every config.<br><br>
## Minor <br><br>
- Optimizations**<br>
- FAST Spawning Mode:** Improved memory efficiency to prevent random lag spikes while exploring.<br><br>
- FANCY Spawning Mode:** Sped up the room-scanning algorithm so your frame rate is more stable when indoors and in caves.<br><br>
- Wind & Heat Physics:** Completely overhauled particle environment checks, this should significantly reduce the background memory usage for wind, thermal drafts, and cave air.<br><br>
- Memory Management:** Optimized the background cleanup tasks so the mod handles thousands of dust particles with significantly less CPU overhead.<br><br>
- Bug Fixes**<br>
- The configuration menu now dynamically scales to your screen size so it shouldn't cut off any options or texts when GUI is larger.
- Reset to Default:** Added a dedicated "Reset to Default" button next to every config.<br><br>
## Minor <br><br>
- Optimizations**<br>
- FAST Spawning Mode:** Improved memory efficiency to prevent random lag spikes while exploring.<br><br>
- FANCY Spawning Mode:** Sped up the room-scanning algorithm so your frame rate is more stable when indoors and in caves.<br><br>
- Wind & Heat Physics:** Completely overhauled particle environment checks, this should significantly reduce the background memory usage for wind, thermal drafts, and cave air.<br><br>
- Memory Management:** Optimized the background cleanup tasks so the mod handles thousands of dust particles with significantly less CPU overhead.<br><br>
- Bug Fixes**<br>
- The configuration menu now dynamically scales to your screen size so it shouldn't cut off any options or texts when GUI is larger.
Sneaking now disturbs the dust around you significantly less
sneakMultiplier_(default: 0.2)_: Multiplier for dust disturbance force when the player is sneaking.
Added a new dust mode requested (demanded) by my friend. (Experimental)
- Optimizations**
- Garbage Collection** Removed heavy
BlockPos.containing()object heap allocations in the main ambient dust tick loop by migrating to a thread localMutableBlockPos.
- Bugfixes**
- Action Dust Physics:** Fixed an issue in
ActionDustParticlewhere ground friction and velocity dampening were being applied twice per tick.
Sneaking now disturbs the dust around you significantly less
sneakMultiplier_(default: 0.2)_: Multiplier for dust disturbance force when the player is sneaking.
Added a new dust mode requested (demanded) by my friend. (Experimental)
- Optimizations**
- Garbage Collection** Removed heavy
BlockPos.containing()object heap allocations in the main ambient dust tick loop by migrating to a thread localMutableBlockPos.
- Bugfixes**
- Action Dust Physics:** Fixed an issue in
ActionDustParticlewhere ground friction and velocity dampening were being applied twice per tick.
## Minor
- Better Dust Trails:** Adjusted how dust gets pushed aside when you walk through it. It blends a bit better now and leaves a more natural looking trail.<br><br>
## Optimization
- Performance:** Changed how the game calculates the distance between players/mobs and the dust. It takes less CPU power now, which should help keep your game running smoothly when there is a lot of dust on the screen.<br><br>
- Config Caching:** Cached particle gravity and bounce calculations on spawn rather than querying config files every tick.<br><br>
- Faster Spatial Cleanup:** Sped up position data cleanup so unused map data gets cleared out faster as you travel through the world. (every 60 ticks to 40 ticks)<br><br>
## Bugfixes
- Vertical Physics:** Fixed an issue where dust only reacted to you walking. Dust will now properly push out of the way when you jump or fall through it.<br><br>
## Minor
- Better Dust Trails:** Adjusted how dust gets pushed aside when you walk through it. It blends a bit better now and leaves a more natural looking trail.<br><br>
## Optimization
- Performance:** Changed how the game calculates the distance between players/mobs and the dust. It takes less CPU power now, which should help keep your game running smoothly when there is a lot of dust on the screen.<br><br>
## Bugfixes
- Vertical Physics:** Fixed an issue where dust only reacted to you walking. Dust will now properly push out of the way when you jump or fall through it.<br><br>
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! <br><br>
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.<br><br><br>
## Major Features<br>
- NeoForge 1.21.1 Port:** Light Dust has been fully ported and rewritten to natively support Minecraft 1.21.1 NeoForge!<br><br>
- 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.<br><br>
Configs:<br>
spawningMode: Spawning Algorithm Mode. FAST uses a lightweight, randomized sampling method. FANCY uses a flood fill search to map complex rooms. (Default:SpawningMode.FAST)<br>fastSpawnChecks: Math budget for FAST mode. Random sample count. Lower = Better FPS. (Default:120)<br>fancySpawnChecks: Math budget for FANCY mode. Max blocks mapped by BFS. Restricts radius if too low. Note: If you setfastSpawnChecksto any value >400, I would suggest swapping to fancy. (Default:1200)<br><br><br>
## Minor Features & QoL<br>
- 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
enableHandheldLightsto be default false.<br><br><br>
## Performance Optimizations<br>
- Global Wind Grid:** Instead of each particle doing its own expensive
GlobalWindGrid now handlesthis in the background. Particles just do a simple array lookup.<br><br>
- Physics Culling:** Particles now skip collision checks entirely when
hasPhysics only enables when a particle isfalling fast, near a floor/ceiling, or already on the ground.<br><br>
- Distance Based LOD:** Particles further from the player now run
skip between updates.<br><br>
- Staggered Caching:** Spread out the clearing calls for
TINT_CACHE,BIOME_CACHE,BEHAVIOR_CACHE, andDRAFT_CACHEacross multiple ticks instead of wiping them all simultaneously. Caches are also now cleare
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! <br><br>
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.<br><br><br>
## Major Features<br>
- NeoForge 1.21.1 Port:** Light Dust has been fully ported and rewritten to natively support Minecraft 1.21.1 NeoForge!<br><br>
- 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.<br><br>
Configs:<br>
spawningMode: Spawning Algorithm Mode. FAST uses a lightweight, randomized sampling method. FANCY uses a flood fill search to map complex rooms. (Default:SpawningMode.FAST)<br>fastSpawnChecks: Math budget for FAST mode. Random sample count. Lower = Better FPS. (Default:120)<br>fancySpawnChecks: Math budget for FANCY mode. Max blocks mapped by BFS. Restricts radius if too low. Note: If you setfastSpawnChecksto any value >400, I would suggest swapping to fancy. (Default:1200)<br><br><br>
## Minor Features & QoL<br>
- 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
enableHandheldLightsto be default false.<br><br><br>
## Performance Optimizations<br>
- Global Wind Grid:** Instead of each particle doing its own expensive
GlobalWindGrid now handlesthis in the background. Particles just do a simple array lookup.<br><br>
- Physics Culling:** Particles now skip collision checks entirely when
hasPhysics only enables when a particle isfalling fast, near a floor/ceiling, or already on the ground.<br><br>
- Distance Based LOD:** Particles further from the player now run
skip between updates.<br><br>
- Staggered Caching:** Spread out the clearing calls for
TINT_CACHE,BIOME_CACHE,BEHAVIOR_CACHE, andDRAFT_CACHEacross multiple ticks instead of wiping them all simultaneously. Caches are also now cleare
## Major Features<br>
- In-game config menu:** Added an in-game config menu (made it myself, no dependencies) that you can access in Menu -> Mods -> Light Dust -> Config.<br><br>
It features:<br>
- Categorized Sidebar:** A sidebar to jump between different categories and sub sections, with automatic scroll tracking.<br><br>
- Search Bar:** Instantly filter and find specific settings by their name or description.<br><br>
- Setting Descriptions:** Hovering directly over a setting name displays detailed descriptions. If a setting is disabled, the tooltip will tell you exactly which master toggle you need to turn on first.<br><br>
- Quick Navigation:** You can click a category or a sub category to instantly go to that section.<br><br>
- Advanced List Editor:** Complex string lists (like custom tints or heat blocks) open in a dedicated sub-screen with a format guide that will appear when you click the button on the top right, syntax validation, and an autocomplete suggestion system.<br><br>
## Minor Features<br>
- Added more master toggles:** Added more configs to allow you to disable/enable each system individually so you can decide what you want to keep (I realized that this mod can be overengineered for some so this should help in some cases).<br><br>
New Configs:<br>
enableWind: Globally disables all wind and weather based directional pushing.<br><br>enablePlayerInteraction: Toggles whether player movement, weapon swinging, and shielding disturbs ambient dust.<br><br>enableBlockBreakingDust: Toggles the directional burst of dust particles when a block is destroyed.<br><br>enableBreakVacuum: Toggles the inward suction effect on ambient dust when a block is destroyed.<br><br>enableHeavyLandingDust: Toggles the ring of dust kicked up from heavy landings.<br><br>enableCaveTremors: Toggles the ceiling dust falling from Warden sonic booms and explosions.<br><br>enableThermalUpdrafts: Toggles the rising heat physics and updrafts above heat blocks.<br><br>
Sorry for the long wait! Im also working on v2.0.0 for peak stamina which will also use this in game config menu I've made.
## Major Performance Overhauls
I was working to improve performance on my next mod mob detection when I figured that I would take my time looking over and optimizing my older code. Heres what has changed.<br><br>
TLDR; It is much more optimized. Please use this version hence the version numbering.<br><br>
- GC Micro-stutters:** Completely overhauled the volumetric scanning system (BFS) used for ambient dust generation. The mod now recycles memory internally using static
ArrayDequeandHashSetstructures rather than creating thousands of temporary objects every few ticks.<br> - ~90% reduction in memory allocation churn, which should eliminate major GC induced lag spikes.<br><br>
- Primitive Maps via FastUtil:** Purged standard Java
ConcurrentHashMapcaches in favor of FastUtil'sLong2IntOpenHashMapandLong2ObjectOpenHashMap. This stops Java from constantly boxing primitivelongcoordinates into bloatedLongobjects, should save massive amounts of hidden memory churn.<br><br> - Distance Based Simulation LOD:** Added a Level of Detail (LOD) check to the particle tick loop. Dust particles further than 16 blocks away from the player now skip expensive wind, lighting, and thermal math.<br><br>
- Temporal Interleaving:** * Maximized the mod's custom
tickOffsetstaggering system. Instead of all 1,200 particles calculating their environment on the exact same frame, the mod splits the workload, forcing only 5% of active particles to calculate heavy environmental physics per frame.<br><br> - Optimized Mod Compatibility Layer:** Replaced Java Reflection with native JVM
MethodHandlesfor Curios and Accessories integration. Additionally, adjusted the slot scanning routine to check for handheld lights every 5 ticks instead of every single tick.<br> - ~60% faster compatibility layer execution, saves up to 80% of CPU cycles previously spent on inventory polling.<br><br>
- Config Caching:** Particle properties (such as gravity, bounce forces, and wind deflection rules) are now cached locally as primitive values the moment a dust particle is spawned. This prevents thousands of active particles from concurrently invoking Forge's synchronized config map lookups every single frame.<br>
- ~85% drop in config related thread stalls, should massively improve FPS when theres a lot of particles on screen.<br><br>
- Blockstate Checks for Thermal Drafts:** Block searches for heat sources (Lava, Magma, Fire) have been changed to poll every 20 ticks (1 second) instead of 10. The physical force applied to the particles has been scaled to compensate for the delay, you will notice it a little bit but I doubt people are looking that closely to see.<br>
- 50% fewer
getBlockState()chunk lookups.<br><br> - Thermal Draft Physics:** Turned off physics, and player interactions when dust is affected by therumal updraft.<br>
- Should significantly reduce FPS drops when above or near lava pools or large amo
- Semi Major Feature**<br>
- Spawning Modes:** Added a new
SPAWN_MODEconfig option. You can choose betweenFANCY(uses BFS to map caves and corners) orFAST(uses random sampling to spawn dust). <br><br>
- Minor Features**<br>
- Crouch Disturbance:** Crouching now significantly reduces your player's interaction radius. Sneaking allows you to move through dusty environments carefully without violently swatting particles away.<br><br>
- Action Dust Cobwebs:** Block breaking debris (Action Dust) will now properly get caught and stuck inside cobwebs, matching the behavior of ambient dust.<br><br>
- Dust Dissolving:** Action Dust now dissolves when it falls into water instead of bouncing on the riverbed. Ambient Dust will now burn up and disappear if it drifts into fire or lava.<br><br>
- Optimizations & Fixes**<br>
- Spectator Mode:** Players in Spectator mode will no longer generate ambient dust around the camera or interact with existing dust.<br><br>
- Sleep Optimization:** dust spawning, volume scanning, and BFS calculations are paused while the player is sleeping in a bed.<br><br>
- Action Dust Friction:** Fixed a minor redundancy in the
ActionDustParticlelogic where friction math was being applied twice on the ground.
## Major Features<br>
- Cave Drafts:** Ambient dust now dynamically calculates a pressure gradient allowing it to flow through cave systems (high pressure to low pressure basically). Dust should mostly go down long corridors, wrap around corners, and get sucked through U bends just like real atmospheric drafts instead of just bouncing off walls.<br><br>
enableCaveDrafts(Default:true): Enables air pressure and drafts inside caves.<br>caveDraftStrength(Default:0.85): Multiplier for the speed of wind drafts inside caves. <br><br>
- Environmental Collision Optimization:** Rewrote the environmental collision logic. The mod now uses fast fail checks that skip heavy collision calculations for empty air blocks.<br><br>
- Wind Caching:** Added a new spatial caching system for environmental wind data. Particles flying through the same space share their pressure gradient calculations instead of doing the math individually. <br><br>
## Minor Features<br>
- Minecarts:** Minecarts will now push the ambient dust ahead of them and disturb the dust.<br><br>
- Cobwebs:** Ambient dust that drifts into a cobweb will now get caught and stick to it. <br><br>
- Simplified Configuration:** Adjusted the internal math for multiple configs. Configs that used very small (eg 0.0001) numbers can now be written as 1 for 1x or 2 for 2x instead of 0.0001 and 0.0002.<br><br>
## Performance<br>
This is a more general optimization.<br><br>
- BFS Spawning:** Replaced the expensive per tick LOS raycasts with an optimized Breadth First Search flood fill. The mod now maps out guaranteed contiguous air spaces twice a second which should eliminate the wasted spawn calculations in solid walls.<br><br>
## Fixes<br>
- Crash Fix (issue #5):** Fixed a ticking particle crash when dust attempts to interact with soul fire in the Nether. This occurred because I forgot to check if the fire block actually had directional properties (standard fire can attach to walls, but
minecraft:soul_fireonly burns flat on surfaces).
## Minor Features
- Hd dust particles:** I decided it was time to update the dust particles. So I made 18 different variations for the HD dust particle (vs 9 for legacy). They are 32x32 pixels and are blurred slightly so it should look better, however you can freely swap between the two modes.
useHdParticles(Default:true): Toggle for HD particles, false for legacy particles.
- Tremor Gravity:** Separated the gravity calculations for explosion dust based on where it spawns.
tremorRoofMultiplier(Default:0.4): Multiplier for dust gravity falling from above.tremorFloorMultiplier(Default:0.2): Multiplier for dust gravity kicked up from below.
## Performance
- Tremor Raycast Caching:** Changed how explosion dust detects ceilings and floors. Instead of running 24 block raycasts for every single particle, the mod now uses a per tick spatial cache. This drastically reduces the number of block checks from thousands down to around a hundred during explosions.
- Tremor Dust Physics:** disabled block collision physics for explosive dust particles. This should reduce FPS drops during loud sounds
- Dead Physics Culling:** Particles that have landed and come to a complete stop now automatically disable their internal collision boxes.
- Math & Memory Profiling:** Patched a significant GC memory leak by moving
Vec3eye position calculations out of the main 150 iteration ambient scanning loop.
## Fixes
- Crash Fix (issue #4):** Rewrote the way I handle undefined biomes in the color cache. Previously, biomes missing from the
colors.tomlconfiguration would store an empty array in the cache, causing anArrayIndexOutOfBoundsExceptionwhen a second particle attempted to spawn in the same block. Undefined biomes now default to a neutral dust tint without crashing.
- Tremor Gravity Fix:** Fixed an oversight where
ExplosionDustParticlewas completely ignoring the dynamicCURRENT_GRAVITYvariable passed to it. Explosion dust will now properly use the newly added configured max/min gravity settings.