Simple Config helps other mods provide powerful config menus
📖 About
Simple Config is a library mod that makes simple for mod developers to make their mods configurable. It also makes simple for players to configure mods, automatically generating menus and commands to edit configuration files, even remotely, and allowing them to generate presets that can be shared, or bind hotkeys to complex modifications.
✅ Features for players
- Powerful config menus for every mod (as long as they use Forge's Config API)
- Edit Minecraft Options/Gamerules as if it was just another mod
- Edit server config remotely (if authorized)
- Create config presets or patches (partial presets)
- Create hotkeys to modify any settings in-game (assign, add, toggle, cycle, multiply, ...)
- Access config through commands
- Share presets/hotkeys within servers
- Search/Filter entries and Undo/Redo changes in menus and commands
- Detect, preview and merge external changes in menus (made by other players or from outside the game)
- Config files can use translated descriptions (if the mod or a resource pack provides them)
- Replace menus from other mods (configurable per mod)
It is recommended you also use Catalogue, a great upgrade for the default mod list menu.
📚 Features for developers
- Simple builder API to define config files
- Extensible declarative API based on annotations
- Safe declarative Kotlin API based on property delegates
- Dependency injection to use as soft dependency (except for the Kotlin API)
- Automatically generated menus and commands
- Automatic baking into fields (with custom transformations)
- Automatically mapped translation keys for entries
- Create composite entry types with generic types (lists/maps/pairs/beans/data classes...) or custom serializable types
- Provide multiple default presets/hotkeys for players to easily set up their config
All features for developers are documented in the guide for mod developers found at the mod's wiki.
👏 Acknowledgements
The config menus created by this mod were originally made with the Cloth Config API.
Eventually, the large amount of patches I had to make led me to rewrite it entirely (actually, about 3 times) for this mod, but you should check it out!
Initially, this mod was only supposed to provide config menus to mods using its API.
I only started it because I found Forge's Config API too annoying to use in my Aerobatic Elytra mod, and Configured wasn't yet a thing.
However, inspired by Configured, I decided to add a simple layer on top of my library to wrap any mods using Forge's Config system.
After that, I decided to also wrap Minecraft options as they weren't much different either. (except 1.16, the wrapper for 1.16 options is a massive hack)
📜 Fabric?
I plan to port this mod to Fabric, but it may take some time. You may follow the issue on GitHub for updates.
A hypothetical Fabric version would probably not be able to wrap all other mods as easily as it does in Forge, since config files in Fabric don't all share the same framework.
Of course, it'd always be possible to guess the structure of the config file from the file itself, but that can be inaccurate sometimes.
❓ Help
This project has a wiki. It includes detailed guides for both players and mod developers.
Also, if you're having any trouble, or maybe just want to say hello, feel free to drop by our Discord Server.
🤝 Support this project
If you want to support this project, share it with your friends!
📷 Images
Menu
Hotkeys
Commands
Settings