client.json

Jump to navigation Jump to search

This feature is exclusive to Java Edition.
 

client.json is the file that accompanies client.jar in .minecraft/versions/<version> and lists the version's attributes. When using the latest version of the Minecraft Launcher, it is named <game version>.json. The JSON file for specific versions is located in the version_manifest.json file.

JSON format[edit | edit source]

This is the JSON format for client.json.

  • [NBT Compound / JSON Object] The root tag.
    • [NBT Compound / JSON Object] arguments:
      • [NBT List / JSON Array] game: Contains arguments supplied to the game, such as information about the username and the version.
        • [String] An argument.
        • [NBT Compound / JSON Object] A conditional argument.
          • [NBT List / JSON Array] rules: A list of rules.
            • [NBT Compound / JSON Object] A rule.
              • [String] action: One of "allow" or "disallow".
              • [NBT Compound / JSON Object] features: Includes a set of features that can be checked.
                • [Boolean] is_demo_user: Appears only in the first appearance of the compound tag.
                • [Boolean] has_custom_resolution: Appears only in the second appearance of the compound tag.
                • [Boolean] has_quick_plays_support: Appears only in the third appearance of the compound tag.
                • [Boolean] is_quick_play_singleplayer: Appears only in the fourth appearance of the compound tag.
                • [Boolean] is_quick_play_multiplayer: Appears only in the fifth appearance of the compound tag.
                • [Boolean] is_quick_play_realms: Appears only in the sixth appearance of the compound tag.
          • [String][NBT List / JSON Array] value: An argument or a list of arguments that is added when the condition is matched.
      • [NBT List / JSON Array] jvm: Contains JVM arguments, such as information about memory allocation, garbage collector selection, or environment variables.
        • [NBT Compound / JSON Object]: A conditional argument.
          • [NBT List / JSON Array] rules: A list of rules.
            • [NBT Compound / JSON Object]: A rule.
              • [String] action: One of "allow" or "disallow".
              • [NBT Compound / JSON Object] features: The launcher can detect this, but it's currently unused.
              • [NBT Compound / JSON Object] os:
                • [String] name: One of "windows", "osx" or "linux".
                • [String] version: Contains a regex[note 1] intended to be checked against System.getProperty("os.version").
                • [String] arch: Appears only in the fourth appearance of the compound tag. Its value is "x86".
          • [String][NBT List / JSON Array] value: An argument or a list of arguments that is added when the condition is matched.
    • [NBT Compound / JSON Object] assetIndex:
      • [String] id: The assets version.
      • [String] sha1: The SHA1 hash of the assets file.
      • [Int] size: The size of the version.
      • [Int] totalSize: The total size of the version.
      • [String] url: The URL that the game should visit to download the assets.
    • [String] assets: The assets version.
    • [Int] complianceLevel: 0 until 1.16.4-pre2, and 1 for all versions after. A value of 0 causes the official launcher to warn the player about missing player safety features when this version is selected.
    • [NBT Compound / JSON Object] downloads:
      • [NBT Compound / JSON Object] client: The client.jar download information.
        • [String] sha1: The SHA1 hash of the jar.
        • [Int] size: The size of the jar in bytes.
        • [String] url: The URL the launcher should visit to download the file.
      • [NBT Compound / JSON Object] client_mappings: The obfuscation maps for this client version. Added in Java Edition 19w36a but got included in 1.14.4 also. Repeats the structure of the client download information.
      • [NBT Compound / JSON Object] server: The server download information. Repeats the structure of the client download information.
      • [NBT Compound / JSON Object] server_mappings: The obfuscation maps for this server version. Added in Java Edition 19w36a but got included in 1.14.4 also. Repeats the structure of the client download information.
      • [NBT Compound / JSON Object] windows_server: The Windows server download information. Removed in Java Edition 16w05a, but is still present in prior versions. Repeats the structure of the client download information.
    • [String] id: The name of this version client (e.g. 1.14.4).
    • [NBT Compound / JSON Object] javaVersion: The version of the Java Runtime Environment to use.
      • [String] component: Its value is "jre-legacy" until 21w18a, "java-runtime-alpha" until 1.18-pre1, "java-runtime-beta" until 22w17a, "java-runtime-gamma" until 24w13a, and "java-runtime-delta" since 24w14a.
      • [Int] majorVersion: Its value is 8 until 21w18a, 16 until 1.18-pre1, 17 until 24w13a, and 21 since 24w14a.
    • [NBT List / JSON Array] libraries: A list of libraries.
      • [NBT Compound / JSON Object]: A library.
        • [NBT Compound / JSON Object] downloads: The library's download information.
          • [NBT Compound / JSON Object] artifact: Info about the artifact.
            • [String] path: Path to store the downloaded artifact, relative to the "libraries" directory in .minecraft.
            • [String] sha1: The SHA1 hash of the file.
            • [Int] size: The size of the file in bytes.
            • [String] url: The URL that the game should visit to download the file.
          • [NBT Compound / JSON Object] classifiers: Appears only for some libraries.
            • [NBT Compound / JSON Object] <classifier>: Specifies the artifact information for the artifact with this specific classifier. Repeats the artifact structure above.
        • [String] name: A maven name for the library, in the form of "groupId:artifactId:version".
        • [String] url: The URL of the Maven repository (used by Forge).
        • [NBT Compound / JSON Object] natives: Information about native libraries (in C) bundled with this library. Appears only when there are classifiers for natives.
          • [String]: This tag's name depends on the natives that appear in the classifiers, it will be one of "windows", "osx" or "linux".
        • [NBT Compound / JSON Object] extract: Rules to follow when extracting natives from a library.
          • [NBT List / JSON Array] exclude: Paths to exclude.
            • [String]: Its value is "META-INF/".
        • [NBT List / JSON Array] rules: Contains a compound with the tags "action" and "os", as shown above.
    • [NBT Compound / JSON Object] logging: Information about Log4j log configuration.
      • [NBT Compound / JSON Object] client:
        • [String] argument: The JVM argument for adding the log configuration. Its value is "-Dlog4j.configurationFile=${path}".
        • [NBT Compound / JSON Object] file: The Log4j2 XML configuration used by this version for the launcher for launcher's log screen.
          • [String] id: Its value is "client-1.12.xml", but may differ for older versions.[note 2]
          • [String] sha1: The SHA1 hash for this file.
          • [Int] size: The size of this file in bytes.
          • [String] url: The URL the launcher should visit to download the file.
        • [String] type: Its value is "log4j2-xml".
    • [String] mainClass: The main game class; for modern versions, it is net.minecraft.client.main.Main, but it may differ for older or ancient versions.[note 3]
    • [Int] minimumLauncherVersion: The minimum Launcher version that can run this version of the game.
    • [String] releaseTime: The release date-time in ISO-8601[note 4] extended offset format.
    • [String] time: Same as "releaseTime".
    • [String] type: The type of this game version. One of "release", "snapshot", "old_beta" or "old_alpha"

History[edit | edit source]

[hide]Java Edition
1.6.113w16aWith the new launcher, versions are now stored in .minecraft/versions and each version has its own folder with a minecraft.jar (which is now called client.jar) and a .json file, which is the client.json.
1.7.213w39aAdded the [NBT Compound / JSON Object] logging tag in the root tag.
1.916w05aRemoved the [NBT Compound / JSON Object] windows_server tag, however, it remains present for versions that already have it.
1.1317w43aThe [NBT Compound / JSON Object] arguments tag replaced the old [String] minecraftArguments tag.
1.1519w36aObfuscation mappings are now listed in the [NBT Compound / JSON Object] downloads tag. They are implemented in 1.14.4 also.
1.1620w21aAdded two new arguments: disableChat, which disables the chat in-game, and disableMultiplayer, which disables the "Multiplayer" and "Minecraft Realms" buttons.
1.1720w45aAdded the [NBT Compound / JSON Object] javaVersion tag with all its children.
1.2023w14aIn [NBT List / JSON Array] game, added [Boolean] has_quick_plays_support, [Boolean] is_quick_play_singleplayer, [Boolean] is_quick_play_multiplayer, and [Boolean] is_quick_play_realms to [NBT List / JSON Array] rules.

Notes[edit | edit source]

  1. https://en.wikipedia.org/wiki/Regular_expression
  2. For instance, for Java Edition 1.10.2, the value is "client-1.7.xml".
  3. For instance, for rd-132211, the value is com.mojang.rubydung.RubyDung.
  4. https://www.iso.org/iso-8601-date-and-time-format.html

Navigation[edit | edit source]