Modscraper Modscraper Minecraft
FASTJSON2 Serializer for YACL logo

FASTJSON2 Serializer for YACL

Mod

A config serializer for YetAnotherConfigLib using FASTJSON2

Type

Mod

Modrinth Downloads

5,217

Modrinth ID

PM2j1xwl

Last Updated

Aug 22, 2026

Description

Useage

// >= 1.21.11 public static ConfigClassHandler<Config> HANDLER = ConfigClassHandler.createBuilder(Config.class) .id(Identifier.fromNamespaceAndPath(MOD_ID, "config")) .serializer(config -> FastJsonConfigSerializerBuilder.create(config) .setPath(YACLPlatform.getConfigDir().resolve("modid.json")) .build()) .build(); // <= 1.21.10 public static ConfigClassHandler<Config> HANDLER = ConfigClassHandler.createBuilder(Config.class) .id(ResourceLoccation.fromNamespaceAndPath(MOD_ID, "config")) .serializer(config -> FastJsonConfigSerializerBuilder.create(config) .setPath(YACLPlatform.getConfigDir().resolve("modid.json")) .build()) .build();

JSON5

// Replace file & field names with your mod's public class ConfigMigration { public static void migrate(){ try { if (Files.exists(Path.of(YACLPlatform.getConfigDir() + "/aiutd.json5"))){ AIUTD.LOG.info("Pre-2.5.0 config found. Migrating...!"); String JSONContent = Files.readString(Path.of(YACLPlatform.getConfigDir() + "/aiutd.json5")); JSONObject oldConfig = JSON.parseObject(JSONContent, JSONReader.Feature.AllowUnQuotedFieldNames); Config.HANDLER.load(); Config.menuAlert = Boolean.parseBoolean(oldConfig.getString("menuAlert")); Config.chatAlert = Boolean.parseBoolean(oldConfig.getString("chatAlert")); Config.multiLoaderBool = Boolean.parseBoolean(oldConfig.getString("multiLoaderBool")); Config.multiLoader = Config.LoaderEnum.valueOf(oldConfig.getString("multiLoader")); Config.localVersion = oldConfig.getString("localVersion"); Config.modpackId = oldConfig.getString("versionAPI"); Config.multiVersion = Boolean.parseBoolean(oldConfig.getString("multiVersion")); Config.useModpackName = Boolean.parseBoolean(oldConfig.getString("useModpackName")); Config.modpackName = oldConfig.getString("modpackName"); Config.useCustomMessage = Boolean.parseBoolean(oldConfig.getString("useCustomMessage")); Config.customMessage = oldConfig.getString("customMessage"); Config.linkChangelog = Boolean.parseBoolean(oldConfig.getString("linkChangelog")); Config.ignoreColor = Config.colorEnum.valueOf(oldConfig.getString("ignoreColor")); Config.messageColor = Config.colorEnum.valueOf(oldConfig.getString("messageColor")); Config.changelogColor = Config.colorEnum.valueOf(oldConfig.getString("changelogColor")); Config.HANDLER.save(); AIUTD.LOG.info("Config migrated, please double check it for accuracy!"); Files.deleteIfExists(Path.of(YACLPlatform.getConfigDir() + "/aiutd.json5")); AIUTD.LOG.info("Old config has been deleted"); } } catch (IOException e) { AIUTD.LOG.error("Failed to migrate config! Please do so manually!", e); } try { if (Files.exists(Path.of(YACLPlatform.getConfigDir() + "/aiutd-enduser.json5"))){ AIUTD.LOG.info("Pre-2.5.0 end user config found. Migrating...!"); String JSONContent = Files.readString(Path.of(YACLPlatform.getConfigDir() + "/aiutd-enduser.json5")); JSONObject oldUserConfig = JSON.parseObject(JSONContent, JSONReader.Feature.AllowUnQuotedFieldNames); EndUserConfig.USERCONFIG.load(); EndUserConfig.shouldIgnore = Boolean.parseBoolean(oldUserConfig.getString("shouldIgnore")); AIUTD.LOG.info("End user config migrated, please double check it for accuracy!"); Files.deleteIfExists(Path.of(YACLPlatform.getConfigDir() + "/aiutd.json5")); AIUTD.LOG.info("Old end user config has been deleted"); } } catch (IOException e) { AIUTD.LOG.error("Failed to migrate end user config! Please do so manually!", e); } } }

FAQ

  • Is this faster than using the built-in Gson serializer?
    • In a word, yes. In a few more words, based on pure library performance, yes. In practice it's a bit harder to say and will likely depend on the size of the config in question. Will it make a massive difference in anything when used in a single mod? Not noticeably; if you get several using it, you may start to see something a bit more tangible.
  • Why make it if it wont improve performance much?
    • IDK, becuse I can? Free will and what not.
  • WAST has a better score on 3/4 of the tests, why not use it?†
    • Becuse I was already familiar with FastJSON and didn't need to learn anything new to make it. If I need (or want) to learn WAST one day maybe I'll make something for it then.

*Until I set up another maven †As of June 28th, 2026

Compatibility

Mod Loaders

Fabric Neoforge Quilt

Game Versions

1.20.1 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 +7 more

Recommended Gear

Affiliate

Hardware and extras that pair well with this mod.

As an Amazon Associate I earn from qualifying purchases.

Similar Mods

Included in Modpacks (5)

External Resources