Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Details
Requires Connector and FFAPI on (neo)forge.
Disclaimer: All mods that manipulate player data have a save corruption risk!
Always take backups of your worlds, especially when updating mods.
Switchy allows players to create profiles, which have their own partial player data, and can be switched between.
Profile data is defined by player-toggleable components, including:
- Vanilla health, hunger, status effects, inventory, ender chest, location, spawn point, and xp
- Fabric Tailor skins
- Styled Nicknames nicknames
- Trinkets slots
- Origins origins
This means you can adjust profiles to only contain some of the above, e.g. just nicknames, skins, and origins.
Usage
Switchy utilizes a command-based text interface with tooltips and clickable text.
Running /switchy help will provide a list of top-level commands, but in short:
- Run
/switchyto edit and switch between profiles - Run
/switchy componentsto toggle components. - Run
/switchy import [url].jsonto import named profiles from pluralkit
Compatibility
Switchy can be used to switch modded data in a modpack by setting up switchy components in a datapack:
// data/minecraft/switchy_components/inventory/ender_chest.json (minecraft:inventory/ender_chest)
{
"enabled": true, // whether to load the component at all. use this instead of deleting default files, as they'll regenerate.
"codec": "inventory", // which codec (from the registry in SwitchyComponentTypes) to use to deserialize the data. defaults to "nbt" (passthrough)
"path": "EnderItems", // NBT path targeting the part of player.dat to load from / modify to
"preview": "inventory", // which text previewer (from the registry in SwitchyComponentTypes) to use in chat. null = toString(), use "trunc" for long data. Start with $ to use an NBT path for passthrough components.
"prefix": "👁 ", // a prefix to add to the text preview, for glanceability
"emptyChecker": "inventory", // which empty checker (from the registry in SwitchyComponentTypes) to use to prevent profile deletion for precious data. Start with $ to use an NBT path for passthrough components.
"group": "inventory", // components with a matching group ID will be previewed and toggled as if they're one component
"default": [], // default value. JSON serialized. set to "$copy" to copy the value from previous. set to null or omit to delete the key from player data as the initial value.
"hidden": false // hides the component preview in the profiles list (still shown in the components list)
}
Feel free to browse the included components for examples.
You're welcome to PR datapack components (with load conditions), along with any additional previewers etc.
Switching data outside player NBT requires an addon. API TBD - Reach out if you're a dev seeking API integration on the issues page.
Afterword
If you're a plural system (or a friend to one) and appreciate our work, please consider reading and sharing sys.guide, our plurality handbook.
Switchy was our first original minecraft mod, made during the mod jam ModFest: Singularity.
Since making it, the minecraft modding community has given us friendship, mentorship,
endless favours, an outlet for self-expression, and reinforced our passion for software as an art.
Everyone who's been a part of that - and you should know who you are - thank you.


