launcher_profiles.json

From Minecraft Wiki
Jump to: navigation, search

launcher_profiles.json is a JSON file located in .minecraft, which contains all the Minecraft launcher settings, profiles, selected user/profile as well as the cached user information (email, access token, etc). This file allows flexible updating from older launcher versions to newer builds and vice versa, without having to worry about things like profiles and login session getting lost.

General file structure[edit]

launcher_profiles.json uses JSON structures to save and retrieve data. The main JSON keys are explained in the figure below.

Key Type Descrption
profiles Map All the launcher profiles and their configurations.
clientToken String The currently logged in client token.
authenticationDatabase Map All the logged in accounts. Every account in this key contains a UUID-hashed map (which is used to save the selected user) which in turn includes the access token, e-mail, and a profile (which contains the account display name)
launcherVersion Map Contains the current launcher build name, format and profiles format.
settings Map Contains all the launcher settings
analyticsToken String The latest token for tracking analysts. Those are used locally by the launcher for managing and tracking sessions
analyticsFailcount Integer The fail count for analytics (???)
selectedUser Map Contains the UUID-hashed account and the UUID of the currently selected user

Every Map structure will be explained in its own section below.

Profiles structure[edit]

Profiles are saved in a map in the profiles section. A profile structure is explained in the table below:

Key Type Description
name String The profile name. Can include characters, numbers, punctuation, and whitespace
type String The profile type. Types are custom (manually created by the user), latest-release (uses the latest stable release), and latest-snapshot (uses the latest build of Minecraft).
created String An ISO 8601 formatted date which represents the time the profile was created.
lastUsed String An ISO 8601 formatted date which represents the last time the profile was used.
icon String An Base64-encoded image which represents the icon of the profile in the profiles menu.
lastVersionId String The version ID that the profile targets. Version IDs are determined in the version.json in every directory in ~/versions
gameDir String The directory that this profile should use to save its content.
javaDir String The Java directory that the game will run on. This is by default the system's Java directory.
javaArgs String The start-up arguments for the profile. Those can have tangible experience in the game performance.
logConfig String The path to the logging configuration for the profile. This can be a XML file if the below setting is true
logConfigIsXML Boolean Whether the logging configuration is a XML file or not.

Authentication database structure[edit]

Authentication database is saved in the authenticationDatabase section. Structure is explained below:

The authentication database consists of UUID-hashed keys for all the logged in users. Every logged in user has its own key which is then used in saving things like the currently selected user, etc.

Every authenticated key consists of a couple of values, which are explained in the figure below.

Key Type Description
accessToken String The token which saves the log-in sessions.
username String The e-mail of the account.
profiles Map The profile of the account. This map will contain the UUID of the account, and contain the display name of it.

Launcher version structure[edit]

The launcher version is saved in its own section in the JSON file (launcherVersion). It has a couple of values which contain information about the currently used build of the launcher. Every time a specific version of a launcher is ran, those values are updated to fit the latest-used launcher. This section allows better compatibility between launcher versions as well as update checking.

Launcher version keys are explained below:

Key Type Description
name String The current name of the launcher build
format Integer ???
profilesFormat Integer ???

Settings structure[edit]

This is one of the most important sections in the file. It contains all the settings controlled from the launcher, and is saved in the settings section. Every option is explained in the table below.

Key Type Description
enableSnapshots Boolean Whether or not include version IDs of game snapshots when browsing profiles
enableAdvanced Boolean Whether or not enable changing advanced Java settings when adding new launch arguments
keepLauncherOpen Boolean Whether or not keep the launcher open while the game is running
showGameLog Boolean Whether or not create a separate window which contains all the game logs
locale String The selected language for the launcher. Default value is en-us.
showMenu Boolean Whether or not show the sliding menu under the Minecraft logo (which contains News, Skins, Settings and Launch options).
enableHistorical Boolean Whether or not enable the usage of historical versions
profileSorting String The way profiles are sorted in the profiles menu. There are 2 sorting types: byName and byLastPlayed. byName sorts them on the alphabetical order, and byLastPlayed sorts them based on the latest profiles you used.
crashAssistance Boolean Whether or not contact Mojang when a crash occurs
enableAnalytics Boolean Whether or not enable analyzing the user session or not. This is usually not maintainable/cannot be controlled from the launcher

Selected user structure.[edit]

The selected user section stores information about the currently selected profile and the selected account. As mentioned above, accounts are stored as UUID-hashed keys. Then they are used for saving here

The keys are explained in the figure below.

Key Type Description
account String (UUID) The UUID-hashed key of the currently selected account
profile String (UUID) The UUID of the currently selected player