
Fzzy Config
Config API with automatic GUIs, powerful validation options, server-client sync, and more!
About

Fzzy Config is a powerful multi-loader configuration engine for Minecraft Mods that meets you where you want to be. Quick and dirty or detailed and featureful, Fzzy Config will work with you. It provides a wide array of features above and beyond what you can find in other libraries.
The Basics
- Automatic serialization to TOML.
- Minimal API with lightweight integration requirements
GUIs
- Automatic GUI generation based on the layout and content of your config files.
- Screens are fully keyboard-navigable and narratable out of the box.
- Fully vetted and tested by a visually impaired member of the modding community.
- No need for screen builders or registration.
- ModMenu and Catalogue automatically integrated.
Synchronization
- Automatic server-client sync.
- Push live updates to a server from a client.
- Forward client settings to other users who want your setup.
Validation
- Validation and Correction built into everything, beyond just primitive types.
- Tightly control what values a player can choose from and how they choose them.
- Automatic suggestions for settings like tags and identifiers.
Updates
- Versioned updates supported with one simple method implementation.
- Scrape previous configs to easily update from another config library.
Flexibility
- Implement a config with as little or much effort as you want.
- Plain java/kotlin object, or Minecraft GameOptions-like carefully crafted settings.
- Seamless multi-loader support. Use the same API on Fabric and Forge; including a lightweight mutli-loader Networking API!
Versions
## Breaking changes in 0.7.x * `ValidatedEnumMap` is removed * Removed all methods and properties marked as Deprecated and for removal 0.7.0 * `SmallSpriteDecoration#<init>` * `SpriteDecorated#textureSet` & `textures` is now a required override * `SpriteDecoration#<init>` * `CustomButtonWidget#<init>` & builder is now only non-override method for adding custom button * Removed `ActiveButtonWidget` * Removed `TextlessActionWidget` * `DynamicListWidget.EntryPos` and implementations made `internal` * `PopupWidget` position elements; `LayoutWidget` no longer inherits from the PopupWidget variant * Removed deprecated overrides of `PopupController` from `PopupParentElement` * `SuggestionWindowListener` and `SuggestionWindowProvider` moved out of `internal` sub-package * Removed `ImmutableRelPos` * `RenderUtil#renderBlur` * Throughout FzzyConfig `Translatable.Result` has been replaced with `Translatable.ResultProvider`. This affects `EntrySearcher` as well as `Searcher.SearchContent` ------------------------------------- ### Additions * Various documentation updates for the Provider systems, including a wiki update ### Changes * `ValidatedField.translationProvider`, `ValidatedField.descriptionProvider`, `ValidatedField.attachProvider`, and the associated `Provider` types are now static (as well as instance methods) so java users won't have to call `.Companion.` anymore (but can) ### Fixes * Deprecated settings are properly read in from file for handling. They are still ignored in network traffic. * The options in `ValidatedChoiceList` and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip
## Breaking changes in 0.7.x * `ValidatedEnumMap` is removed * Removed all methods and properties marked as Deprecated and for removal 0.7.0 * `SmallSpriteDecoration#<init>` * `SpriteDecorated#textureSet` & `textures` is now a required override * `SpriteDecoration#<init>` * `CustomButtonWidget#<init>` & builder is now only non-override method for adding custom button * Removed `ActiveButtonWidget` * Removed `TextlessActionWidget` * `DynamicListWidget.EntryPos` and implementations made `internal` * `PopupWidget` position elements; `LayoutWidget` no longer inherits from the PopupWidget variant * Removed deprecated overrides of `PopupController` from `PopupParentElement` * `SuggestionWindowListener` and `SuggestionWindowProvider` moved out of `internal` sub-package * Removed `ImmutableRelPos` * `RenderUtil#renderBlur` * Throughout FzzyConfig `Translatable.Result` has been replaced with `Translatable.ResultProvider`. This affects `EntrySearcher` as well as `Searcher.SearchContent` ------------------------------------- ### Additions * Various documentation updates for the Provider systems, including a wiki update ### Changes * `ValidatedField.translationProvider`, `ValidatedField.descriptionProvider`, `ValidatedField.attachProvider`, and the associated `Provider` types are now static (as well as instance methods) so java users won't have to call `.Companion.` anymore (but can) ### Fixes * Deprecated settings are properly read in from file for handling. They are still ignored in network traffic. * The options in `ValidatedChoiceList` and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip
## Breaking changes in 0.7.x * `ValidatedEnumMap` is removed * Removed all methods and properties marked as Deprecated and for removal 0.7.0 * `SmallSpriteDecoration#<init>` * `SpriteDecorated#textureSet` & `textures` is now a required override * `SpriteDecoration#<init>` * `CustomButtonWidget#<init>` & builder is now only non-override method for adding custom button * Removed `ActiveButtonWidget` * Removed `TextlessActionWidget` * `DynamicListWidget.EntryPos` and implementations made `internal` * `PopupWidget` position elements; `LayoutWidget` no longer inherits from the PopupWidget variant * Removed deprecated overrides of `PopupController` from `PopupParentElement` * `SuggestionWindowListener` and `SuggestionWindowProvider` moved out of `internal` sub-package * Removed `ImmutableRelPos` * `RenderUtil#renderBlur` * Throughout FzzyConfig `Translatable.Result` has been replaced with `Translatable.ResultProvider`. This affects `EntrySearcher` as well as `Searcher.SearchContent` ------------------------------------- ### Additions * Various documentation updates for the Provider systems, including a wiki update ### Changes * `ValidatedField.translationProvider`, `ValidatedField.descriptionProvider`, `ValidatedField.attachProvider`, and the associated `Provider` types are now static (as well as instance methods) so java users won't have to call `.Companion.` anymore (but can) ### Fixes * Deprecated settings are properly read in from file for handling. They are still ignored in network traffic. * The options in `ValidatedChoiceList` and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip
