Lithium (Forge)

Lithium (Forge)

294k Downloads

Forge is no longer supported and downloads have been archived.

Going forward, Lithium will only be updated for the Fabric platform. You can download Lithium for Fabric over on the newer CurseForge page. The releases on this page will not be updated or receive support, and it's advised that players do not use them due to their alpha quality.

Lithium for Forge

Lithium is a general-purpose optimization mod for Minecraft which works to improve a number of systems (game physics, mob AI, block ticking, etc) without changing any behavior. It works on both the client and server, and can be installed on servers without requiring clients to also have the mod. With the mod installed, you can see on average a 45% improvement to server tick times, resulting in a much leaner game.

Even in single-player, your game runs an "integrated server" which ticks the world your player is in. Through optimizing the server-side of the game, this can free up your computer's processor to focus on other tasks, resulting in improved frame rates and responsiveness. For multiplayer servers, administrators can expect a sizeable improvement to tick times, allowing their hardware to support more loaded entities, chunks, and players.

If you aren't using it already as well, Phosphor (another optimization mod) pairs great with Lithium and is fully compatible.

There are currently no plans to backport Lithium to Minecraft 1.12 or older. These patches are designed for modern versions of the game, and many of them do not apply to older versions either because those systems do not exist or are vastly different.

Installation

You must download and install MixinBootstrap 1.0.2 (or newer) to your mods folder. Afterwards, installing Lithium is as simple as installing any other Forge mod, simply drop it into your mods folder. You do not need to create new worlds in order to take advantage of the mod.

Features

You might be curious by now as to what exactly Lithium is doing in order to achieve such significant gains, and I'm happy you are! You can read about (some) of the changes we make in the spoiler below.

Physics optimizations: Entity collision detection has seen significant improvements through reducing the collision resolution complexity for simple, cuboid blocks. A more accurate algorithm is also used to reduce the number of blocks being checked every tick, especially in cases where entities are moving very quickly.

Mob AI optimizations: We make use of an event-based system for some tasks in order to reduce the CPU usage incurred by constantly polling the world for changes. Mob "brains" have also been optimized to select between different AI tasks much, much quicker than before. Comparison before and after here.

Chunk loading optimizations: The temporary data structures used in block palette compaction have been changed to be much more efficient. This results in fewer TPS drops while players are exploring terrain and provides a modest boost to world load times. We also batch some verification operations to reduce unnecessary disk I/O.

Mob farm optimizations: Mob cramming is significantly less expensive as resolving collisions between entities has been optimized to take advantage of the fact that simple boxes are involved. This makes mob farms considerably less harmful for server tick rates.

Block ticking optimizations: has less overhead, making things such as block update settling after generating chunks and other Redstone contraptions faster. This also reduces the amount of time it takes for a block to determine if it is ticking by schedule from O(n), where n is the number of ticking blocks, to O(1), providing a significant speedup when many blocks are being ticked.

Redstone optimizations: Redstone Wire/Dust has been completely rewritten to use a breadth-first search for updating wire states, reducing the number of block updates made to dust and other blocks by an order of magnitude. (Experimental, disabled by default)

Explosion optimizations: Many optimizations have been applied to TNT and explosions alike, reducing their associated lag without changing how they behave. In particular, ray-tracing is optimized to take advantage of the fact that multiple steps through a way will occur in the same block position, allowing us to quickly re-use the previous step's results. We also make use of a faster position tracking algorithm which avoids many excessive allocations.

Point of Interest optimizations: Complex mob AIs in Minecraft, primarily those belonging to Villagers and Pillagers, often need to find relevant points of interest in the world in order to choose the most appropriate AI task. In vanilla, querying all points within a chunk requires 16 separate retrievals through stream-heavy code. With Lithium present, this task is reduced to a single simple retrieval that makes use of a much faster (and traditional) iterator based approach, yielding anywhere from a 16-22x improvement for queries.

Data Tracker optimizations: The internal data manager used for tracking some entity state and properties has been optimized to use flat arrays and avoid expensive locking, providing a decent boost whenever these attributes are accessed during a game tick.

... And other internal improvements to help the JVM better optimize code.

Configuration

Lithium makes use of an unusual configuration system which can be used to enable or disable certain patches. This system allows fine-grained control over what code is modified by Lithium, and as such, can be used to completely eliminate bugs or mod incompatibilities introduced by the mod. For more information, please read the wiki entry on modifying your configuration file. An empty configuration file is perfectly normal and just means you want to use the default options.

Modpack Permissions

This is a free and open-source project on CurseForge, and as such-- of course you can include it in your modpack! While not required, it's much appreciated if you link back to Lithium's project page and Patreon in your mods list or credits page.

Reporting Issues

Please use the issue tracker linked at the top of the page to report bugs, crashes, and other issues. The Curseforge comments section is not the place to report these kinds of problems and will likely result in you being asked to forward it along.