跳到正文

FastMapCodec

作者:neko_L

Provides more efficient BaseMapCodec.decode implementation

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

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.

常见问题

FastMapCodec 支持哪些 Minecraft 版本?

FastMapCodec 支持 Minecraft Java 版 1.21–26.3,共 17 个版本,可用的加载器:Fabric / NeoForge。下载时注意选择和你游戏版本一致的文件。

FastMapCodec 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端 / 服务端。

评论

登录后评论和评分