Mod Canary by AbdElAziz333
- 2082713
- 421.20 KB
- 1.20.1
- August 28, 2022
- July 26, 2023
- MiscellaneousServer Utility
Name | Canary | Author | AbdElAziz333 | Description | General-purpose optimization mod and unofficial fork of Lithium mod for Minecraft Forge |
---|---|---|---|---|---|
Information | Downloads: 2082713 Version: 1.20.1 Size: 421.20 KB Updated at: July 26, 2023 Created at: August 28, 2022 | Tags | Miscellaneous Server Utility |
Server tick time (mspt) graph before and after installing Canary. Measurements made in an existing world at a render distance of 18.
Canary for Minecraft Forge
Canary is a general-purpose optimization mod and unofficial fork of the Fabric mod Lithium for Minecraft Forge. This mod aims to optimize the general performance of Minecraft(mob ai, physics, chunk loading, 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.
(Note: Canary is stable at this point but also --issues are expected, also as mentioned above Canary is unofficial fork that means it has not been created by CaffeineMC team. So please report any issues you have to me only from here.
Installation
Canary only supports Minecraft Forge 1.18.2 and up, So make sure you have the latest version of Forge present and simply drop the mod into your mods folder, no other mods or additional setup is required!
Features
You might be curious by now as to what exactly Canary 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.
World generation optimizations: Many calculations in vanilla's world generation are unnecessary and do not affect the final result, which gives ample opportunity for Canary to optimize this overhead away.
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.
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.
Redstone Wire optimizations: Calculating the new power level of redstone wire after a block update is costly. Reducing the number of blockstate checks without any change in behavior reduces redstone dust lag by about 35%.
... And other internal improvements to help the JVM better optimize code.
Configuration
Canary makes use of an unusual configuration system which can be used to enable or disable certain patches. For more information, please read the wiki entry
Modpack Permissions
Much like Lithium, this is a free and open-source project on CurseForge, and as such-- of course you can include it in your modpack!
Issues and Feature Requests
Please use the issue tracker linked at the top of the page to report bugs, crashes, and if you want to propose new features or otherwise contribute to the mod, i will gladly accept pull requests, as well!
If you want to support me, use my code AbdElAziz333 to get 25% off your first month and enjoy playing with your friends!
Thanks!