This mod allows modpack devs to ship optional mods and mods that are disabled by default, much like the launchers of modpacks in the old days, like the original Yogbox.
WARNING - Please Read Me
Player's Choice can and will crash with coremods due to its fast loading feature. Do not fret, though!
Due to the way coremods work, this can not be fixed. As a workaround, Player's Choice provides an option for you to work around this. If you're getting crashes from a mod when loading the Player's Choice menu, try adding the mod ID of that mod to the "crashing_mods" list in your playerschoice.json file.
How to Use Player's Choice
Upon first load, players of your modpack will be shown this screen. In here they can pick which optional mods to load. The list of optional mods, as well as their names, descriptions, and website links, is defined by the pack author. The first load is also expedited, as Player's Choice disables every other mod except for itself.
To configure the mod, simply find the playerschoice.json file in your config folder. The mods the player chooses are saved to the fmlModState.properties file, in the same folder. This mod is in reality just a wrapper for an underutilized forge feature.
In the json file there are two optional properties per entry: "category" and "group". "category" serves to visually group the items in the interface, as you can see in the above picture. "group" serves to make mods mutually exclusive, as you're only allowed to have up to one mod of each group. While not required, it's recommended that if there's a group, all the mods in the group are in their own category, to make it easier on players. Prefixing a group name with ! makes it an impotant group. A player can't disable every mod in an important group.
Every entry also supports additional mods and copying files via the "extraMods" and "copyFiles" properties. Both are arrays. In extraMods, you can specify additional mod IDs to enable/disable based on the entry's enabled state. Any mod marked at all in the entire file will default to false, and will be set to true if any entry that includes it (either as primary id or extra mod) is enabled. This method allows you to ship library mods easily.
In copyFiles you can specify files to copy into your instance directory should this entry be enabled. You can copy files or entire directories. The files you want to copy in should be included in /config/playerschoice_files. For example, if you want to copy in a script file called hardmode.zs, you'd put it in /config/playerschoice_files/scripts/hardmode.zs, and reference it as scripts/hardmode.zs in the copyFiles array. If that entry is selected, the file will be copied out of playerschoice_files and into the instance.
When shipping the modpack, do not ship playerschoice.marker in the instance folder. If you want to test your setup, delete playerschoice.marker.