Lithium

Lithium

Mod

No-compromises game logic/server optimization mod

Client or server Optimization

7.15M downloads
9,650 followers
Created3 years ago
Updated2 months ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.
Filter loader...
Filter versions...
Filter channels...

Lithium 0.12.3 is the first release for 1.20.6. The new minimal_nonvanilla package is introduced, which is meant for optimizations which technically are different from vanilla in an observable way, but do not affect any gameplay or any contraptions. If any negative effect on your contraptions or gameplay is noticeable, please report this to our issue tracker, as this would be considered to be a bug. Check https://github.com/CaffeineMC/lithium-fabric/blob/mc1.20.6-0.12.3/lithium-mixin-config.md for a detailed description of what each package does, and how to disable certain optimizations if needed.

What's Changed

  • Replace axis.choose() with switch in VoxelShapeAlignedCuboid
  • Move mixin.experimental.chunk_tickets package to minimal_nonvanilla.world.expiring_chunk_tickets
  • Move mixin.world.chunk_tickets package to mixin.collections.chunk_tickets

Lithium 0.12.2 is the first release for 1.20.5.

What's Changed

  • Mod compatibility improvements contributed by embeddedt, ishland and Steveplays28
  • Added missing lithium$ prefixes to mixin methods
  • Slight improvements and 1.20.5 adaptation for existing optimizations

Full Changelog: https://github.com/CaffeineMC/lithium-fabric/compare/mc1.20.4-0.12.1...mc1.20.5-0.12.2

Lithium 0.12.1 is the first release for 1.20.4.

You can check out all configuration options at description of all optimizations here.

Full Changelog: https://github.com/CaffeineMC/lithium-fabric/compare/mc1.20.2-0.12.0...mc1.20.4-0.12.1

Additions

  • Very experimental item entity optimizations (disabled by default for now)
  • Caching of block class analysis, reducing startup times

Lithium 0.12.1 is the first release for 1.20.3.

You can check out all configuration options at description of all optimizations here.

Full Changelog: https://github.com/CaffeineMC/lithium-fabric/compare/mc1.20.2-0.12.0...mc1.20.3-0.12.1

Additions

  • Very experimental item entity optimizations (disabled by default for now)
  • Caching of block class analysis, reducing startup times

Lithium 0.12.0 is the first release for 1.20.2 and includes a new package for experimental optimizations which are disabled by default.

You can check out all configuration options at description of all optimizations here.

Full Changelog: https://github.com/CaffeineMC/lithium-fabric/compare/mc1.20.1-0.11.2...mc1.20.2-0.12.0

Additions

  • new: several optimizations in the experimental package
  • new: (experimental) entity optimizations based on block caching
  • new: (experimental) iterate entities by chunk for spawning conditions
  • new: small ice spreading check optimization
  • new: Only purge expiring ChunkTickets

Lithium 0.11.2 for Minecraft 1.20.1 is the same as the previous release, just for 1.20.1 instead of 1.20.

You can check out all configuration options here.

Lithium 0.11.2 is the first release for 1.20 and includes a few mod compatibility improvements and a slight improvement to the nether portal search optimization. You can check out all configuration options at description of all optimizations here.

Additions

  • new: ai.poi.fast_portals: optimized preloading chunks (by Crec0 and 2No2Name)

Fixes

  • fix: Use main worker executor for block_tracking instead of common ForkJoinPool (by embeddedt)
  • fix: Update listener range on addition of AI goals

Changes

  • change: Remove mixin.item (Minecraft 1.20 Incompatibility)

Lithium 0.11.1 fixes a few mod compatibility issues and includes some new performance improvements. You can check out all configuartion options at description of all optimizations here.

Additions

  • new: collections.fluid_submersion: Use faster collection and avoid FluidTag equality tests

Fixes

  • fix: several mod compatibility issues

Changes

  • change: avoid Stream API in fire/lava check in Entity movement code
  • change: split alloc.enum_values package to allow disabling single mixins

Lithium 0.11.1 fixes a few mod compatibility issues and includes some new performance improvements. You can check out all configuartion options at description of all optimizations here.

Additions

  • new: collections.fluid_submersion: Use faster collection and avoid FluidTag equality tests

Fixes

  • fix: several mod compatibility issues

Changes

  • change: avoid Stream API in fire/lava check in Entity movement code
  • change: split alloc.enum_values package to allow disabling single mixins

Lithium 0.11.1 fixes a few mod compatibility issues and includes some new performance improvements. You can check out all configuartion options at description of all optimizations here.

Additions

  • new: collections.fluid_submersion: Use faster collection and avoid FluidTag equality tests

Fixes

  • fix: several mod compatibility issues

Changes

  • change: avoid Stream API in fire/lava check in Entity movement code
  • change: split alloc.enum_values package to allow disabling single mixins

This release is a backport for 1.19.2.

Lithium 0.11.0 fixes a tiny difference in the collision code that was noticeable in some tnt duper designs. Furthermore a few bug fixes and mod compatibility improvements are included. Besides all of that, Lithium now uses a new system internally for the available configuration options. Now you can check out a description of all optimizations here.

Additions

  • new: remove vanilla temperature caching
  • new: add automatically generated lithium-mixin-config.md
  • new: testcase: closing fence gate updates llama pathfinding
  • new: Lithium API for hopper-like item transfer cooldown

Fixes

  • fix: remove incorrect chunk ticket creation (#449) by ishland*
  • fix: block.hopper.worldedit_compat: update hopper caching when placing block entities when world edit is loaded
  • fix: block.hopper: broken interaction with modded non-BlockEntity Inventory blocks
  • fix: incorrect ordering of collisions causing non-vanilla entity movement behavior
  • fix: alloc.blockstate: allow State withTables using non Block/Fluid types
  • fix: world.block_entity_ticking.sleeping: crash when /perf command prints position of sleeping block entity

Changes

  • change: lithium config mod override parsing can be used with and without mixin. prefix
  • change: use @Intrinsic annotation to improve mod compatibility
  • change: rename chunk.block_counting to util.block_tracking
  • change: entity.collisions.movement: check block below entity before other collisions
  • change: rename ai.poi.poi.tasks to ai.poi.tasks
  • change: move mixin.world.block_entity_retrieval to mixin.util.block_entity_retrieval
  • change: switch from old LithiumConfig system to mixin-config annotation system
  • change: add null check in ChunkAwareBlockCollisionSweeper
  • change: implement unused onEntryRemoved method in BitSet optimization for POI Storage
  • change: entity.collisions.movement: handle external changes to list of collision shapes correctly
  • change: disable ai.nearby_entity_tracking because it reduces performance in normal worlds
  • change: ItemEntity and Inventory entities only notify movement trackers when hopper optimizations are present
  • change: split ai.nearby_entity_tracking into ai.nearby_entity_tracking.goals and util.entity_movement_tracking

Lithium 0.11.0 fixes a tiny difference in the collision code that was noticeable in some tnt duper designs. Furthermore a few bug fixes and mod compatibility improvements are included. Besides all of that, Lithium now uses a new system internally for the available configuration options. Now you can check out a description of all optimizations here.

Additions

  • new: remove vanilla temperature caching
  • new: add automatically generated lithium-mixin-config.md
  • new: testcase: closing fence gate updates llama pathfinding
  • new: Lithium API for hopper-like item transfer cooldown

Fixes

  • fix: remove incorrect chunk ticket creation (#449) by ishland*
  • fix: block.hopper.worldedit_compat: update hopper caching when placing block entities when world edit is loaded
  • fix: block.hopper: broken interaction with modded non-BlockEntity Inventory blocks
  • fix: incorrect ordering of collisions causing non-vanilla entity movement behavior
  • fix: alloc.blockstate: allow State withTables using non Block/Fluid types
  • fix: world.block_entity_ticking.sleeping: crash when /perf command prints position of sleeping block entity

Changes

  • change: remove redundant FluidState caching in BlockStates that was added to vanilla in 22w42a
  • change: lithium config mod override parsing can be used with and without mixin. prefix
  • change: use @Intrinsic annotation to improve mod compatibility
  • change: rename chunk.block_counting to util.block_tracking
  • change: entity.collisions.movement: check block below entity before other collisions
  • change: rename ai.poi.poi.tasks to ai.poi.tasks
  • change: move mixin.world.block_entity_retrieval to mixin.util.block_entity_retrieval
  • change: switch from old LithiumConfig system to mixin-config annotation system
  • change: add null check in ChunkAwareBlockCollisionSweeper
  • change: implement unused onEntryRemoved method in BitSet optimization for POI Storage
  • change: entity.collisions.movement: handle external changes to list of collision shapes correctly
  • change: disable ai.nearby_entity_tracking because it reduces performance in normal worlds
  • change: ItemEntity and Inventory entities only notify movement trackers when hopper optimizations are present
  • change: split ai.nearby_entity_tracking into ai.nearby_entity_tracking.goals and util.entity_movement_tracking

Lithium 0.10.4 fixes a critical issue that causes heightmaps to store wrong values when placing or breaking blocks. It might have affect beacons, mob spawning and more. After fixing the bug the wrong values will still be in the world save. If you notice wrong heightmap behavior in some locations, placing and breaking a normal block (e.g. stone) above the location will update the heightmap to the correct value.

Fixes

  • fix: combined_heightmap_update always using y & 15 as height causing incorrect heightmap

You can support me on patreon: https://www.patreon.com/2No2Name

Lithium 0.10.3 is the first release for 1.19.3. Changes from 0.10.2:

Additions

  • new: world.combined_heightmap_update: update the four heightmaps together when placing/breaking blocks

Fixes

  • fix: block.hopper: hoppers not reacting when placing/breaking inventories without block updates
  • fix: block.hopper: hopper not notified about inventory changes anymore after placing comparator next to output inventory of hopper
  • fix: world.tick_scheduler: chunk tick scheduler peek returning wrong scheduled tick in some cases leading to wrong ticking order
  • fix: world.tick_scheduler: chunk tick scheduler broken after loading a structure block

You can support me on patreon: https://www.patreon.com/2No2Name

Lithium 0.10.3 fixes a few issues and adds a new heightmap optimization, which reduces lag from breaking blocks.

Additions

  • new: world.combined_heightmap_update: update the four heightmaps together when placing/breaking blocks

Fixes

  • fix: block.hopper: hoppers not reacting when placing/breaking inventories without block updates
  • fix: block.hopper: hopper not notified about inventory changes anymore after placing comparator next to output inventory of hopper
  • fix: world.tick_scheduler: chunk tick scheduler peek returning wrong scheduled tick in some cases leading to wrong ticking order
  • fix: world.tick_scheduler: chunk tick scheduler broken after loading a structure block

You can support me on patreon: https://www.patreon.com/2No2Name

This release is a backport for 1.18.2. Changes from 0.10.2 backport:

Fixes

  • fix: block.hopper: hoppers not reacting when placing/breaking inventories without block updates
  • fix: block.hopper: hopper not notified about inventory changes anymore after placing comparator next to output inventory of hopper
  • fix: world.tick_scheduler: chunk tick scheduler peek returning wrong scheduled tick in some cases leading to wrong ticking order
  • fix: world.tick_scheduler: chunk tick scheduler broken after loading a structure block

You can support me on patreon: https://www.patreon.com/2No2Name

This release is a backport for 1.18.2 from Lithium 0.10.2 for 1.19.2. The previous release for 1.18.2 was Lithium 0.7.10 . This backport includes many new optimizations, bugfixes and new bugs. For a list of changes, check out the changelogs of the versions 0.8 and above:

Changelogs

You can support me on patreon: https://www.patreon.com/2No2Name

Lithium 0.10.2 fixes two issues with the hopper optimizations.

Changes

  • change: add note about backups to LithiumConfig

Fixes

  • fix: util.inventory_change_listening: ClassCastException with modded inventories or with mixin.block.hopper=false causing inventory deletion
  • fix: block.hopper: incompatibility with SidedInventory Hoppers, e.g. from Copper-Hopper mod

You can support me on patreon: https://www.patreon.com/2No2Name

Lithium 0.10.1 fixes a few issues with the previously improved hopper optimizations.

Fixes

  • fix: invalidate path node type caching on data pack reload
  • fix: block.hopper: multiple hoppers fighting over double inventory causing hoppers to wake each other up
  • fix: block.hopper: concurrent modification during iteration causing cache invalidation to be skipped

You can support me on patreon: https://www.patreon.com/2No2Name


Project members

jellysquid3

Owner

2No2Name

Maintainer


Technical information

License
LGPL-3.0-only
Client side
optional
Server side
optional
Project ID