Mod Sets
This project was heavily inspired by ThatOrThis and is designed for managing mod loading directly within Minecraft game on Fabric, Quilt, and Forge platforms. Particularly useful for modpack developers.
Key Features
- Enabling and disabling mods through in-game interface using predefined mod sets, subfolder names, or mod identifiers (requires game restart)
- Integration with YetAnotherConfigLib for creating convenient configuration screens
- Flexible mod loading rules system for creating modpacks with customizable options
How to Use
Rule files must be in JSON format and located in the config/modsets/rules folder. Add rules and open the configuration screen through Mod Menu.
Mod Sets
A mod set is an entry in the config/modsets/modsets.json file that maps a string to a set of mod identifiers. A subfolder name in the mods directory automatically becomes a mod set containing all mods inside that folder. Also, a single mod identifier becomes a set containing only that mod.
Configuration example:
{
// The 'sodium' set will include the two specified mods
// When this set is disabled, the listed mods will not load
"sodium": {
"text": "Sodium",
"description": "Performance: +++++",
"mods": [
"sodium",
"indium"
]
}
}
Rules

Each rule contains text and description for displaying information, as well as a controller for the YACL user interface.
Rule example:
{
"text": {
"text": "My first rules set",
"bold": true,
"color": "green"
},
"description": "Excellent!",
"rules": [
{
"text": "text",
"description": "description",
"controller": {
"type": "type" // Note: this is not a valid controller type
}
}
]
}
Controller Types
Label
For displaying text on screen
{
"text": "Label",
"description": "Text Text",
"controller": {
"type": "label"
}
}
Boolean
For switching a single mod set on/off
{
"text": "Boolean",
"description": "Text Text",
"controller": {
"type": "boolean",
"id": "sodium"
}
}
Cycling
For switching between mod sets in a list. Useful when there are conflicting mods such as sodium and optifabric, or for changing modpack difficulty
{
"text": "Cycling",
"description": "Text Text",
"controller": {
"type": "cycling",
"ids": [
// Don't leave empty
"sodium",
"optifabric"
]
}
}
Mods Group
Assigns a simple boolean controller option to every mod in the mod sets
{
"text": "Mods Group",
"description": "Text Text",
"controller": {
"type": "mods_group",
// Default is true
"collapsed": false,
"ids": [
// Don't leave empty
"sodium",
"optifabric"
]
}
}
Rules Group
Groups rules so they can be collapsed
{
"text": "Rules Group",
"description": "Text Text",
"controller": {
"type": "rules_group",
// Default is true
"collapsed": true,
"rules": [ // Don't leave empty
{
"text": "text",
"description": "description",
"controller": {
"type": "label"
}
},
{
"text": "text",
"description": "description",
"controller": {
"type": "boolean",
"id": "sodium"
}
}
]
}
}
Note: All texts and descriptions use Minecraft text JSON format.