Skip to content

Releases: CaffeineMC/lithium

Lithium 0.5.3 for Minecraft 1.16.2

31 Aug 15:37
f04b0e7
Compare
Choose a tag to compare

This release of Lithium 0.5 for Minecraft 1.16.2 includes a number of bug-fixes and some new optimizations to help improve server performance even further.

Fixes

  • fix: Make sure that the over-sized block counter is decremented correctly when removing blocks (#118 and #120)
  • fix: Extend ChunkAwareBlockCollisionSweeper to use world border collisions

New

  • new: Added optimizations to avoid checking for fire/lava blocks where unnecessary during entity tick
  • new: Added optimizations to consolidate fluid block scans during entity tick, halving the number of blocks that need to be tested
  • new: Improved player chunk ticking, greatly reducing the CPU time spent on determining which chunks should be sent to a player when they move. The new patch avoids checking chunks when the player hasn't crossed a chunk boundary, and greatly speeds up how quickly those checks can be performed by eliminating allocations and other complex conditional logic.
  • new: Added optimizations for entity suffocation checking
  • new: Inlined some FluidState methods to avoid dynamic dispatch overhead in fluid logic

Changes

  • change: Enabled the chunk.no_locking patch by default for all players

You should not download the dev or sources packages below unless you are a developer hacking on the code.

Lithium 0.5.2 for Minecraft 1.16.2

24 Aug 19:26
Compare
Choose a tag to compare

This is the first stable build of Lithium for Minecraft 1.16.2. It contains a few bug fixes and additional optimizations to entities, end worldgen, the /locate command and unloading of chunks.

Fixes

  • fix: missing expand(Epsilon) in collision box collecting code.
  • fix: add hitboxes inside some voxelshapes of cuboids (#79)
  • fix: invalid state of Lithium's EntityTrackerEngine leading to crashes
  • fix: crash when compacting palette caused by always including air causing unexpected resize
  • fix: explosions being different from vanilla (#98)

New

  • new: add installation instructions for Lithium (#49) (Thanks to @amnotbananaama )
  • new: use typed entity retrieval to replace entity type filtering predicates
  • new: add extra collision check with block below entity to cancel momentum earlier when moving due to gravity
  • new: add chunk sections counting oversized blocks and reduce number of blocks collision is checked against (#84)
  • new: cache noise used in the end to reduce computation time (thanks to @SuperCoder7979 and @gegy1000 )
  • new: speed up locating structures by testing biome first (thanks to @TelepathicGrunt )
  • new: optimize block entity unloading (#102) (thanks to @maityyy )

You should not download the dev or sources packages below unless you are a developer hacking on the code.

Lithium 0.5.1 for Minecraft 1.16.1

09 Jul 19:55
6e33b68
Compare
Choose a tag to compare

This release includes a number of fixes for issues introduced in Lithium 0.5. It is recommended that all players upgrade to this release if they are using Lithium 0.5.0 due to world generation issues (see #78.)

Fixes

  • fix: Perform perlin fade before height clamping (#78, thanks to @gegy1000)
  • fix: Wrong range calculation in NearbyEntityTracker constructor (#76, thanks to @2No2Name)
  • fix: TagImplMixin breaks hotswap because its target does not exist (#77, thanks to @2No2Name)

New

  • new: Avoid heavy object allocations during chunk ticking
  • new: Optimize the structure intersection tests used during mob spawning
  • new: Allow mods to specify in their manifests that certain options in Lithium should be enabled or disabled (thanks to @Earthcomputer)

You should not download the dev or sources packages below unless you are a developer hacking on the code.

Lithium 0.5.0 for Minecraft 1.16.1

04 Jul 06:45
984c2a7
Compare
Choose a tag to compare

This is the first stable build of Lithium for Minecraft 1.16.1. It contains a number of bug fixes over 1.16.1-rc1 and additional optimizations to world generation.

Fixes

  • fix: Use the entity filtering predicate for nearby entity checking, fixes #29, #31
  • fix: Ensure that points of interest are correctly initialized, fixes #39
  • fix: Use the correct light occlusion check for light propagation, fixes issues with piston and other special blocks letting light through, fixes #53
  • fix: Added the same hack as vanilla to prevent leaf blocks from supporting redstone components
  • fix: Allow entities to be lazily retrieved for collision resolution again, improves entity ticking performance
  • fix: Use correct shape checks for Redstone components
  • fix: Use eye height for the origin of an explosion, fixes #66

New features and optimizations

  • new: Added optimizations for entity block path-finding and danger avoidance
  • new: Piston blocks no longer re-create the same static shape volumes when updating, provides significant speed ups
  • new: Added many optimizations for chunk retrieval, helps improve general performance when accessing world state
  • new: Added optimizations for VoxelShape merging and comparison, helps speed up many operations involving shape code
  • new: Added a specialized Collection#removeIf implementation in SortedArraySet, helps reduce CPU overhead when ticking chunks
  • new: Added additional optimizations for discovering points of interests during chunk deserialization
  • new: Added a secondary chunk index to the tick scheduler which can be used to quickly remove scheduled ticks during chunk serialization
  • new: Added an optimized Voronoi sampling algorithm for biome generation
  • new: Added optimizations to greatly reduce memory allocation rate when ticking players in the chunk map
  • new: Chunk serialization now avoids re-packing empty and already compacted section arrays, greatly speeding up chunk serialization
  • new: Optimized the function responsible for determining if a chunk is too far away from a player to spawn mobs
  • new: Use hash tables in place of linear scanning for checking if a mob can spawn in a given biome
  • new: Re-order block collisions to occur before entity collisions as they are cheaper and might allow us to early-exit when calculating entity collisions

... and from the community.

Thanks to @gegy1000, @Kroppeb, and @SuperCoder7979 for these PRs.

  • new: Added optimizations to the full-block shape cache
  • new: Added a faster cache for biome sampling, greatly reduces the amount of time needed to generate or locate biomes
  • new: Added a faster implementation for biome layer scaling
  • new: Optimizations for Nether biome generation

Changes

  • change: Replace lock implementation in DataTracker more throughly
  • change: Move away from Fabric-ASM and to Fabric's first-party access wideners
  • change: Move away from using TOML for configuration and instead use Java properties for simpler parsing and configuration
  • change: Removed some Villager AI de-streamification patches that have been implemented upstream
  • change: Moved some lighting specific optimizations into Phosphor
  • change: Moved the loading screen optimizations into Sodium
  • change: Flattened the hash table block palette to improve cache locality and performance when setting blocks in chunks

... and many refactorings to help improve the documentation and code quality of Lithium.

Lithium 0.5.0-rc1 for Minecraft 1.16.1

24 Jun 18:35
fa7e919
Compare
Choose a tag to compare
Pre-release

The Lithium 0.5 series is here now, and it's packing a huge number of new improvements and optimizations.

Fixes

  • fix: Use the entity filtering predicate for nearby entity checking, fixes #29, #31
  • fix: Ensure that points of interest are correctly initialized, fixes #39
  • fix: Use the correct light occlusion check for light propagation, fixes issues with piston and other special blocks letting light through, fixes #53
  • fix: Added the same hack as vanilla to prevent leaf blocks from supporting redstone components
  • fix: Allow entities to be lazily retrieved for collision resolution again, improves entity ticking performance

New features and optimizations

  • new: Added optimizations for entity block path-finding and danger avoidance
  • new: Piston blocks no longer re-create the same static shape volumes when updating, provides significant speed ups
  • new: Added many optimizations for chunk retrieval, helps improve general performance when accessing world state
  • new: Added optimizations for VoxelShape merging and comparison, helps speed up many operations involving shape code
  • new: Added a specialized Collection#removeIf implementation in SortedArraySet, helps reduce CPU overhead when ticking chunks
  • new: Added additional optimizations for discovering points of interests during chunk deserialization
  • new: Added a secondary chunk index to the tick scheduler which can be used to quickly remove scheduled ticks during chunk serialization
  • new: Added an optimized Voroni sampling algorithm for biome generation
  • new: Added optimizations to the full-block shape cache (thanks to gegy1000)
  • new: Added a faster cache for biome sampling, greatly reduces the amount of time needed to generate or locate biomes (thanks to gegy1000, SuperCoder7979, and Kroppeb)
  • new: Added optimizations to greatly reduce memory allocation rate when ticking players in the chunk map
  • new: Chunk serialization now avoids re-packing empty and already compacted section arrays, greatly speeding up chunk serialization
  • new: Optimized the function responsible for determining if a chunk is too far away from a player to spawn mobs
  • new: Use hash tables in place of linear scanning for checking if a mob can spawn in a given biome
  • new: Re-order block collisions to occur before entity collisions as they are cheaper and might allow us to early-exit when calculating entity collisions

Changes

  • change: Replace lock implementation in DataTracker more throughly
  • change: Move away from Fabric-ASM and to Fabric's first-party access wideners
  • change: Move away from using TOML for configuration and instead use Java properties for simpler parsing and configuration
  • change: Removed some Villager AI de-streamification patches that have been implemented upstream
  • change: Moved some lighting specific optimizations into Phosphor
  • change: Moved the loading screen optimizations into Sodium
  • change: Flattened the hash table block palette to improve cache locality and performance when setting blocks in chunks

... and many refactorings to help improve the documentation and code quality of Lithium.

Lithium 0.5.0-alpha1 for Minecraft 20w14a

02 Apr 21:14
fc05731
Compare
Choose a tag to compare
mc20w14a-0.5.0-alpha1

Update to Minecraft Snapshot 20w14a