FastMapCodec

FastMapCodec

Provides more efficient BaseMapCodec.decode implementation

114 downloads
6 followers

Mainly fixes TPS freeze on player join caused by large advancement files (and the same class of freeze anywhere else in the game, or in other mods, that arises from decoding a large map through DFU).

It is okay to use this mod on server only or client only.

Fixes O(N²) behavior in Mojang's BaseMapCodec (part of com.mojang:datafixerupper) when decoding large map-based Codecs. Since the fix lives in BaseMapCodec itself, it applies to every codec built on top of it - UnboundedMapCodec, SimpleMapCodec, and anything else sharing the same decode/encode logic - not just player advancements.

This bug was introduced in 1.21 and is present up to modern versions.

Benchmarks comparing this mod's fix to vanilla behaviour (with some context) are available here:

nekotxs/BaseMapCodec-bench

The fix has also been submitted upstream to Mojang's DataFixerUpper:

Mojang/DataFixerUpper#110

If Mojang accepts the PR, this mod won't be needed on newer versions.

NeoForge disclaimer

On NeoForge, this mod uses some cursed techniques to modify DFU behaviour, which may cause incompatibility with other mods. If you notice any issues, please open an issue on GitHub.

It is known to be incompatible with Sodium Extra.

This only applies to NeoForge — the Fabric version is not affected.

No gallery available for this project.