Mod Sets
This project heavily inspired by ThatOrThis
The mod is using for Minecraft Fabric/Quilt/Forge for managing mod loading in game.
And useful for modpack developer
Feature
- Enable/Disable mods in game with defined mod sets/subdirectory name/mod id(Need restart)
- Using https://github.com/isXander/YetAnotherConfigLib for config screen
- Custom mod loading rules for modpack developer to make the pack with more user defined options
Usage
The rules files should be json in config/modsets/rules.
Add rule and enter the config screen through Mod Menu
Full example: https://github.com/SettingDust/ModSets/blob/main/example_rules.json
Mod Set
Mod set is entry defined in config/modsets/modsets.json that is string to set of mod id map.
Specifically, sub folder name in mods folder will be mod sets the mods in it. And mod id will be the mod set only
contains itself.
Notice, the defined mod sets by config will override the folder/mod id with the same name.
Example:
{
// The `sodium` will target the two mods here.
// If disable this mod set, the mod in list won't load if it is exist
"sodium": {
"text": "Sodium",
"description": "Performance: +++++",
"mods": [
"sodium",
"indium"
]
}
}
Rule
Every rule hold a text and description for displaying the info you want.
And a controller for YACL user interface
Example:
{
"text": {
"text": "My first rule set",
"bold": true,
"color": "green"
},
"description": "Awwww",
"rules": [
{
"text": "text",
"description": "description",
"controller": {
"type": "type" // Notice, this isn't valid type of controller. Take the type from controllers below
}
}
]
}
Controllers
Label
For displaying text on screen Example:
{
"text": "The label",
"description": "Text Text",
"controller": {
"type": "label"
}
}
Boolean
For switching a single mod set on/off Example:
{
"text": "The boolean",
"description": "Text Text",
"controller": {
"type": "boolean",
"id": "sodium"
}
}
Cycling
For switching between mod sets in a list. Useful when there is conflicting mods such as sodium and optifabric. Or switching the pack difficult Example:
{
"text": "The cycling",
"description": "Text Text",
"controller": {
"type": "cycling",
"ids": [
// Don't empty
"sodium",
"optifabric"
]
}
}
Mods Group
Assign a simple boolean controller option to every mods in the mod sets. Example:
{
"text": "The mods group",
"description": "Text Text",
"controller": {
"type": "mods_group",
// Default is true
"collapsed": false,
"ids": [
// Don't empty
"sodium",
"optifabric"
]
}
}
Rules Group
Group the rules so that it's able to collapse the rules Example:
{
"text": "The rules group",
"description": "Text Text",
"controller": {
"type": "rules_group",
// Default is true
"collapsed": true,
"rules": [ // Don't empty
{
"text": "text",
"description": "description",
"controller": {
"type": "label"
}
},
{
"text": "text",
"description": "description",
"controller": {
"type": "boolean",
"id": "sodium"
}
}
]
}
}
Notice: Every text and description is text raw json. Using https://www.minecraftjson.com/ for generating text.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
|
R
2.1.3
|
1d ago | 1 | |||
|
R
2.1.2
|
1d ago | 1 | |||
|
R
2.1.1
|
1d ago | 1 | |||
|
R
2.1.0
|
1d ago | 1 | |||
|
R
1.0.5
|
1d ago | 1 | |||
|
R
1.0.4
|
1d ago | 1 | |||
|
R
1.0.3
|
1d ago | 1 | |||
|
R
1.0.2
|
1d ago | 1 | |||
|
R
1.0.1
|
1d ago | 1 | |||
|
R
1.0.0
|
1d ago | 1 | |||
|
R
0.11.0
|
1d ago | 1 | |||
|
R
0.10.7
|
1d ago | 1 | |||
|
R
0.10.6
|
1d ago | 1 | |||
|
R
1.10.5
|
1d ago | 1 | |||
|
R
1.10.4
|
1d ago | 1 | |||
|
R
1.10.3
|
1d ago | 1 | |||
|
R
1.10.2
|
1d ago | 1 | |||
|
R
1.10.1
|
1d ago | 1 | |||
|
R
1.10.0
|
1d ago | 1 | |||
|
R
1.9.7
|
1d ago | 1 | |||
|
R
1.9.6
|
1d ago | 1 | |||
|
R
1.9.5
|
1d ago | 1 | |||
|
R
1.9.4
|
1d ago | 1 | |||
|
R
1.9.3
|
1d ago | 1 | |||
|
R
1.9.2
|
1d ago | 1 | |||
|
R
1.9.1
|
1d ago | 1 | |||
|
R
1.9.0
|
1d ago | 1 | |||
|
R
1.8.0
|
1d ago | 1 | |||
|
R
1.7.2
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 |
- [
59cac30](https://github.com/SettingDust/ModSets/commit/59cac30627a86fe09d31d6c8523163ee5e10f443) - fail to load fabric mods in sub directories by wrongconnector.additionalModLocations*(commit by @SettingDust)*
- [
ec4217b](https://github.com/SettingDust/ModSets/commit/ec4217b46d6e3f704d72805fb9c9cf7bd8721092) - failing to load fabric mods in sub directories *(commit by @SettingDust)*
- [
36b536b](https://github.com/SettingDust/ModSets/commit/36b536bf4da5664b80a1abcd2492bbcb1725c3df) - avoid load mods contains connector placeholder *(commit by @SettingDust)*
- [
9839cda](https://github.com/SettingDust/ModSets/commit/9839cda6a75fa98445eba2a12a8bf2f493fc7525) - add support for connector *(commit by @SettingDust)*
### :wrench: Chores
- [
8a0e786](https://github.com/SettingDust/ModSets/commit/8a0e786164ba8b40b78550d1f91fe9dd4db3f353) - bump dependencies *(commit by @SettingDust)*
- [
8972d72](https://github.com/SettingDust/ModSets/commit/8972d72339d0eee9efa39974fcc052d0449eb831) - adapt with YACL 3.8 *(commit by @SettingDust)*
### :wrench: Chores
- [
36f8c71](https://github.com/SettingDust/ModSets/commit/36f8c71bbcc341640bbe62a4a2e751c6a48facff) - fix icon *(commit by @SettingDust)*
- [
a5f9700](https://github.com/SettingDust/ModSets/commit/a5f9700d55e82a9ac0c3c0503cc8402e0afc4f86) - **fabric**: crash with mixins target game classes *(commit by @SettingDust)*
### :wrench: Chores
- [
badef28](https://github.com/SettingDust/ModSets/commit/badef28f49a0a828453300888bd118c7aab03d07) - bump cloche *(commit by @SettingDust)*
- [
decdae7](https://github.com/SettingDust/ModSets/commit/decdae7a9d6895deb67cc22dbb419cc1c3516e97) - bump cloche to fix isn't loading on NF and Forge *(commit by @SettingDust)*
- [
afb5f42](https://github.com/SettingDust/ModSets/commit/afb5f42778eddf60def7a2796dedad1eb0d9c25a) - **fabric**: include configs spi *(commit by @SettingDust)*
### :wrench: Chores
- [
fef1a7d](https://github.com/SettingDust/ModSets/commit/fef1a7d1e445495c24f716935cda0c9692c69fcf) - **fabric**: add name for implementations *(commit by @SettingDust)*
- [
4ded2b0](https://github.com/SettingDust/ModSets/commit/4ded2b0d4c3bfc943f6afba9aa5453ebc156b297) - **fabric**: remove client entrypoint *(commit by @SettingDust)*
- [
ba061b7](https://github.com/SettingDust/ModSets/commit/ba061b75cbc6bdff9291d3a5efce9f3af210ba04) - start rewriting *(commit by @SettingDust)* - [
6de8e6f](https://github.com/SettingDust/ModSets/commit/6de8e6fbe53123c8bc287416481fd3d10d9827a8) - add back rules definition *(commit by @SettingDust)* - [
c9b76f1](https://github.com/SettingDust/ModSets/commit/c9b76f190862a28ab9c4e9b987293ffd9cd193a3) - add back fabric implementation *(commit by @SettingDust)* - [
d89d54c](https://github.com/SettingDust/ModSets/commit/d89d54cb410cd856cadb30dca8fa8ee19ef26aab) - **fabric**: add back modmenu config screen *(commit by @SettingDust)* - [
01ad7d1](https://github.com/SettingDust/ModSets/commit/01ad7d1da82fb64d7eb6b917e3e32b810cbcdb94) - add implementation for forge, neoforge 1.21 and fabric *(commit by @SettingDust)* - [
003eb6d](https://github.com/SettingDust/ModSets/commit/003eb6d5b9a6a04f7b4ef202720e45f4822f0719) - try to split the forge into service module *(commit by @SettingDust)* - [
df36f8d](https://github.com/SettingDust/ModSets/commit/df36f8d5786e2869d01d82235000b8d7d4e42f24) - implement the group dsl for versions *(commit by @SettingDust)* - [
3762cc1](https://github.com/SettingDust/ModSets/commit/3762cc15a2cc99936c9006d52727966e9b7dd052) - add neoforge support *(commit by @SettingDust)*
### :bug: Bug Fixes
- [
d8116cd](https://github.com/SettingDust/ModSets/commit/d8116cd354d1925834cb3a1cc73d942670ac5886) - **forge**: isn't loaded at all *(commit by @SettingDust)* - [
7914459](https://github.com/SettingDust/ModSets/commit/79144593982b48f43d15da44034fcf31fdc0022b) - creating config in mods dir *(commit by @SettingDust)*
### :recycle: Refactors
- [
75a6478](https://github.com/SettingDust/ModSets/commit/75a6478aff0b18e392a8b24d9c203fec5f74f667) - copier the template *(commit by @SettingDust)* - [
023ed7e](https://github.com/SettingDust/ModSets/commit/023ed7e4f2d60b70e3823820fc2c814c188ea38b) - using java implement *(commit by @SettingDust)*
### :wrench: Chores
- [
5844d24](https://github.com/SettingDust/ModSets/commit/5844d247d68a4a6407a9803e49f056efa9e39c95) - implement config path adapter *(commit by @SettingDust)* - [
7f49a5b](https://github.com/SettingDust/ModSets/commit/7f49a5b7a9cf10650b6bcd816649daaf8cbe02c2) - wrongly added unused files *(commit by @SettingDust)* - [
7a7271a](https://github.com/SettingDust/ModSets/commit/7a7271a6ea22733bd29271e42d39a41ce7a88ce5) - rename ingame to game *(commit by @SettingDust)* - [
06aa2f8](https://github.com/SettingDust/ModSets/commit/06aa2f856519b25db53f72eb9dffff04f9e58d13) - move theCOLLECT_ADDITIONAL_DEPENDENCY_SOURCESlistener out *(commit by @SettingDust)*
- [
a15856e](https://github.com/SettingDust/ModSets/commit/a15856e294a3dc58732182000a34ad73f1f51cda) - support fancymenu open screen by split the config screen into class *(commit by @SettingDust)*
- [
9c37512](https://github.com/SettingDust/ModSets/commit/9c375125a9ca17d14d14e1d0b865ceb7c5bfc9dd) - after the disabled mods activated there will be error since the disabled mods won't be mod set *(commit by @SettingDust)*
- [
910ec8e](https://github.com/SettingDust/ModSets/commit/910ec8ec19270803c767e4580d5a4cae6fa50f58) - not save disabled mods in game config *(commit by @SettingDust)*
### :wrench: Chores
- [
e6874b4](https://github.com/SettingDust/ModSets/commit/e6874b4872114241661051d7c710ef12ffbcb65b) - allowing any kinecraft serialization *(commit by @SettingDust)*
- [
ce375fd](https://github.com/SettingDust/ModSets/commit/ce375fd17d842d637537b8ab85e7524ae7771b09) - fix crash when generating the config screen *(commit by @SettingDust)* - [
a7e6403](https://github.com/SettingDust/ModSets/commit/a7e6403bb75d6104c199149659d45ed5ff09aa08) - fix crash when generating the config screen by wrong usage for state manager *(commit by @SettingDust)* - [
033bcc6](https://github.com/SettingDust/ModSets/commit/033bcc6210cf428a6ead7b253f25c76fe2a4e12d) - rules group isn't working *(commit by @SettingDust)*
- [
5323773](https://github.com/SettingDust/ModSets/commit/532377350a2d27ae8db762c453789bf0e65d05bd) - deserialize the gson element correctly *(commit by @SettingDust)*
- [
f657849](https://github.com/SettingDust/ModSets/commit/f657849051ef0f43a3a49aac41ee392a2c529500) - the mod sets json name is wrong *(commit by @SettingDust)*
### :wrench: Chores
- [
460b985](https://github.com/SettingDust/ModSets/commit/460b9857f1ee966dbba9ba4692ef67bb628bf525) - bump the kinecraft serialization *(commit by @SettingDust)*
- [
40d7525](https://github.com/SettingDust/ModSets/commit/40d7525425572e23107c757c742b269b82a4bca7) - remap the fabric ingame jar *(commit by @SettingDust)*
- [
e404108](https://github.com/SettingDust/ModSets/commit/e4041087a92a4c3543026ad7b6b9c220d45c63b2) - pretty print the jsons *(commit by @SettingDust)*
- [
04fd8e0](https://github.com/SettingDust/ModSets/commit/04fd8e0de695a9a05952ac99ae28e8690498f276) - update to yacl 3.6.0 *(commit by @SettingDust)*
- [
1cb08ba](https://github.com/SettingDust/ModSets/commit/1cb08ba9769bb9f7c2cfc609380b3ae7e3a33d23) - bump preloading tricks so that it's working on Forge *(commit by @SettingDust)*
- [
5b2b16d](https://github.com/SettingDust/ModSets/commit/5b2b16df8819263af779175e58fa2bb1850331e9) - include theFMLModTypemanifest attribute *(commit by @SettingDust)*
- [
0f042f1](https://github.com/SettingDust/ModSets/commit/0f042f15f303200f290c039275b27f1bf5b80ce4) - shadow the forge jars *(commit by @SettingDust)*
- [
cca6f83](https://github.com/SettingDust/ModSets/commit/cca6f83d3878bcf1ba94aa0e9751fd040ef87dd2) - jarJar the forge reobfed jars correctly *(commit by @SettingDust)*
- [
bbbd881](https://github.com/SettingDust/ModSets/commit/bbbd8815f6ffb5ae7968cb3353c6775661a30304) - avoid using game layer class inModSetsto work on Forge *(commit by @SettingDust)*
- [
286ccec](https://github.com/SettingDust/ModSets/commit/286ccecedc0fe26fdacbbb072ee0c62593510e79) - don't reference connector before exist check *(commit by @SettingDust)* - [
65f261c](https://github.com/SettingDust/ModSets/commit/65f261c9b37424901f4b1ba29838f97f57eac4a3) - update preloading tricks since it's crashing *(commit by @SettingDust)*
- [
e6aad21](https://github.com/SettingDust/ModSets/commit/e6aad21916880eb76eb9c0dc59f7d8893f28ad47) - the config path is wrong *(commit by @SettingDust)*
- [
f53f6d8](https://github.com/SettingDust/ModSets/commit/f53f6d8a5e86a2c8181f5e851fb02292fc294e1a) - use new yacl api for rules *(commit by @SettingDust)* - [
5eeb2fe](https://github.com/SettingDust/ModSets/commit/5eeb2fe9cae14d2a46def1167b3ffa86f10b3868) - make fabric use new config *(commit by @SettingDust)* - [
ce0ee90](https://github.com/SettingDust/ModSets/commit/ce0ee90af92f6cac8c6cb96aed9c3f0185276db1) - re-enable the quilt module *(commit by @SettingDust)* - [
451ba3b](https://github.com/SettingDust/ModSets/commit/451ba3b73fcb598fe4e85a07e4bf73faeb0a62bf) - re-enable the forge module *(commit by @SettingDust)* - [
af585de](https://github.com/SettingDust/ModSets/commit/af585de700196a8facd9d078a7861c316e9dd8ed) - use new config api *(commit by @SettingDust)* - [
30dd6db](https://github.com/SettingDust/ModSets/commit/30dd6db0a50338cda4c2046984a3f29bcc8a7aaa) - move the jarJar into jars for thiner file *(commit by @SettingDust)* - [
6006302](https://github.com/SettingDust/ModSets/commit/600630278ed35e53773ac75331d3d6438628d2b1) - add "compat" with connector *(commit by @SettingDust)*
### :bug: Bug Fixes
- [
aeaf49c](https://github.com/SettingDust/ModSets/commit/aeaf49ca8d7941a929468ea26df266ea91104c4d) - errors avoid from build *(commit by @SettingDust)* - [
e6a159a](https://github.com/SettingDust/ModSets/commit/e6a159a6dfdeae5d76fe0dd4f5772a5884ce3791) - quilt module port to new api *(commit by @SettingDust)* - [
f746c5a](https://github.com/SettingDust/ModSets/commit/f746c5a3782137dcd876aea0f06b7b2801b98ce6) - use kotlin serialization since codec isn't loaded before game launching *(commit by @SettingDust)*
### :recycle: Refactors
- [
521cab4](https://github.com/SettingDust/ModSets/commit/521cab4298820d2ef6dbe6c835b8e781e571e42d) - use fabric loom and vanilla gradle instead of architectury *(commit by @SettingDust)* - [
140f6c0](https://github.com/SettingDust/ModSets/commit/140f6c08e5ab2db4cd1c41ca83be4f0b53dbb61a) - rewrite the config with codec *(commit by @SettingDust)* - [
17d0a25](https://github.com/SettingDust/ModSets/commit/17d0a25d01afdb3b428c62315e4147cd6ac0f134) - move the config module to common module *(commit by @SettingDust)* - [
3822b19](https://github.com/SettingDust/ModSets/commit/3822b19c15f57dad66deacc0b45bc80f48c825ab) - use new yacl api for config screen *(commit by @SettingDust)*
### :wrench: Chores
- [
fd2660d](https://github.com/SettingDust/ModSets/commit/fd2660d719969d805534b9ed0f22335d6275ca29) - simply PlatformHelper *(commit by @SettingDust)* - [
f4dc1ba](https://github.com/SettingDust/ModSets/commit/f4dc1bae6c47c03fe35845725209ad341d4429cf) - useModSetsConfig*(commit by @SettingDust)* - [
fce41b9](https://github.com/SettingDust/ModSets/commit/fce41b983deaedaa0db5861ee960a15820917b54) - bump min yacl *(commit by @SettingDust)*
- [
934fb3b](https://github.com/SettingDust/ModSets/commit/934fb3b31c952eebb8ae357518e5395ff18879a9) - support fabric 0.16.2+ *(commit by @SettingDust)*
### :bug: Bug Fixes
- [
00f0f84](https://github.com/SettingDust/ModSets/commit/00f0f8486e7da049f6ca897f51658dac9ca4bb0b) - usable on quilt *(commit by @SettingDust)*
- [
db23fd0](https://github.com/SettingDust/ModSets/commit/db23fd01a42e8e756ac1185a4ca4a0c099c7fa2b) - avoid loading for JiJ non-forge mods *(commit by @SettingDust)* - [
d4da4c8](https://github.com/SettingDust/ModSets/commit/d4da4c8c7666bc01a4e015d829411dd98c7323b5) - merge the manifest correctly *(commit by @SettingDust)*
### :recycle: Refactors
- [
23bcff8](https://github.com/SettingDust/ModSets/commit/23bcff834d952ff62b79b842388aec62e36f51e9) - produce only one jar *(commit by @SettingDust)*
- [
7460df5](https://github.com/SettingDust/ModSets/commit/7460df51639c1580b1518eebaf206e8a1edbe3a0) - wrong group causing crash in prod *(commit by @SettingDust)*