Skip to content

YetAnotherConfigLib (yacl) is just that. A builder-based configuration library for Minecraft.

License

Notifications You must be signed in to change notification settings

isXander/YetAnotherConfigLib

Repository files navigation

YetAnotherConfigLib

Enviroment Java 17 Discord

Modrinth CurseForge

Ko-fi

A mod designed to fit a modder's needs for client-side configuration.

Why does this mod even exist?

This mod was made to fill a hole in this area of Fabric modding. The existing main config libraries don't achieve what I want from them:

  • Cloth Config API: It's stale. The developer of cloth has clarified that they are likely not going to add any more features. They don't want to touch it. (citation)
  • SpruceUI: It isn't designed for configuration. In this essence the design feels cluttered. Further details available in this issue.
  • MidnightLib: It has cosmetics among other utilities. It may not be large but some players (including me) wouldn't want cosmetics out of nowhere.
  • OwoLib: It's content focused. It does a lot of other things as well as config, adding to the size.

As you can see, there's sadly a drawback with all of them and this is where YetAnotherConfigLib comes in.

Why use YACL?

Features

YACL has a ton of configuration features:

  • Custom control widgets
    • Create your own unique "controller" if the default set does not suit your needs
  • Rich descriptions
    • Clickable & hoverable text, powered by vanilla's Text component system
    • WebP (including animated) image previews
    • Custom rich-renderable section to replace image
  • Multiple controllers for the same type:
    • Sliders or fields for numbers
    • Dropdowns, cyclers, or raw text fields for strings
    • Tickboxes or ON/OFF text display for booleans
    • ...and more!
  • Fully-featured color picker
  • Accessible with full compatibility for keyboard control (optimised for Controlify usage)
  • High organisation with tabs (categories) and collapsable groups
  • Built-in serialization/deserialization techniques so you can skip the error-prone config code
  • Full alternative Kotlin DSL

Version support

YACL supports a huge amount of versions, all kept up to date and released simultaneously, thanks to the amazing Stonecutter build tool.

Version Fabric Forge NeoForge
1.20.1
1.20.4
1.20.5 - 1.20.6
1.21.0 - 1.21.1
1.21.2 (RC version)

That's 9 different targets, supporting versions that are 500+ days old!

Note: Forge (LexForge) is not and will not be supported past 1.20.1. If you're a developer, please port to NeoForge. If you're a user, you may find that all your favourite mods have already done so.

Each is a separate build, so make sure your users get the correct YACL version for their target of choice.

Design

YACL is designed to fit right in with the vanilla GUI aesthetic, and will evolve with Minecraft itself. Take a look at the gallery to see how even in all the currently supported versions, YACL's design looks different to fit in with vanilla GUI updates.

image preview

Usage for Developers

See The documentation site for how to use YACL in your mod.

License

This mod is under the GNU Lesser General Public License, v3.0.