Mods
Resource Packs
Data Packs
Modpacks
Shaders
Plugins
Mods Resource Packs Data Packs Plugins Shaders Modpacks
Get Modrinth App Upgrade to Modrinth+
Sign in
ModsPluginsData PacksShadersResource PacksModpacks
Sign in
Settings
YetAnotherConfigLib (YACL)

YetAnotherConfigLib (YACL)

A builder-based configuration library for Minecraft.

26.55M
5,217
Library
Management
Utility
AboutGalleryChangelogVersions
All versions3.2.0+1.20 (Fabric)

3.2.0+1.20 (Fabric)

Download
Report

Changelog

YetAnotherConfigLib 3.2 for 1.20.1 & 1.20.0

The artifact for this release is dev.isxander.yacl:yet-another-config-lib-fabric:3.2.0+1.20 (assuming Fabric)

Config API V2

Starting this update, the previous config api is now deprecated.

The new API is much more modular, and is now fully API-safe.

What does it look like?

public class MyConfig {
    public static final ConfigClassHandler<MyConfig> HANDLER = ConfigClassHandler.createBuilder(MyConfig.class)
            .id(new ResourceLocation("my_mod", "my_config")) // unique ID for your config
            .serializer(config -> GsonConfigSerializerBuilder.create(config)
                    .setPath(FabricLoader.getInstance().getConfigDir().resolve("my_config.json"))
                    .setJson5(true) // json5 support, with GSON!
                    .build()) 
            .build();
    
    @SerialEntry(comment = "optional comment!")
    public boolean myOption = true;
    
    public static void save() {
        MyConfig.HANDLER.serializer().save();
    }
    
    public static void load() {
        MyConfig.HANDLER.serializer().load();
    }
}

As you can see from the above example, it's syntactically quite similar to the old API, but with a few key differences:

  • The method of serialization has been separated from the class handler itself, allowing an API safe implementation without needing to override the class handler.
  • Supports abstract serialization.
  • Names make a lot more sense.

Auto-gen

The new API can now fully auto-generate your config into a YACL GUI with annotations. I have been very wary of this feature, since usually it can be very limiting, destroying most of the core values of the powerful YACL builder interface. However, I believe I've found a great modular way so that developers can extend the auto-gen feature with their own custom annotations, adding support for their own custom controllers!

public class MyConfig {
    public static final ConfigClassHandler<MyConfig> HANDLER = ConfigClassHandler.createBuilder(MyConfig.class)
            .id(new ResourceLocation("my_mod", "my_config")) // unique ID for your config
            .serializer(config -> GsonConfigSerializerBuilder.create(config)
                    .setPath(FabricLoader.getInstance().getConfigDir().resolve("my_config.json"))
                    .setJson5(true) // json5 support, with GSON!
                    .build()) 
            .build();
    
    @AutoGen(category = "my_category", group = "my_group")
    @Boolean(formatter = Boolean.Formatter.YES_NO, colored = true)
    public boolean myOption = true;
    
    public static Screen createScreen(Screen parent) {
        return MyConfig.HANDLER.generateGui().generateScreen(parent);
    }
}

Above is an example of auto-generating a BooleanController. Notice how the field does not require @SerialEntry. These are completely separate, and you can use both at the same time.

For the full range of auto-gen annotations, check the source!

Documentation for the new API is still a work in progress. For now, it's best to look at the following class: dev.isxander.yacl3.test.AutogenConfigTest (not available on the artifact).

Fix Sodium crash

This is bringing the off-branch hotfix 3.1.1 to the main branch.

Dropdown controllers

Crendgrim has PRed a dropdown controller! Which is in this release!

This adds two new controller builders, DropdownStringControllerBuilder and ItemControllerBuilder. The latter renders the item in the dropdown, and suggests only the items.

Files

yet-another-config-lib-fabric-3.2.0+1.20.jar(948.24 KiB) Primary
Download

90% of ad revenue goes to creators

Support creators and Modrinth ad-free with Modrinth+

Metadata

Release channel

Release

Version number

3.2.0+1.20-fabric

Loaders

Fabric Quilt

Game versions

1.20–1.20.1

Downloads

33824

Publication date

September 24, 2023 at 3:30 PM

Publisher

isxander

isxander

Owner

Version ID

Modrinth is open source.

main@58dac27

© Rinth, Inc.

Company

TermsPrivacyRulesCareers

Resources

SupportBlogDocsStatus

Interact

Discord X (Twitter) Mastodon Crowdin
Get Modrinth App Settings
NOT AN OFFICIAL MINECRAFT SERVICE. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.