Difference between revisions of "Game files"

From wiki.vg
Jump to navigation Jump to search
(Remove links to s3 as the usage is discouraged now.)
(Improve formatting, add warning about old endpoints)
(4 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
== Game ==
 
== Game ==
  
All available version of the game itself are listed on
+
All available versions of the game itself are listed on https://launchermeta.mojang.com/mc/game/version_manifest.json
: https://launchermeta.mojang.com/mc/game/version_manifest.json
 
  
The location of the client jar file for a specific version is included in the version manifest above. Alternatively it can also be found at
+
The location of the information JSON file for a specific version is included in the version manifest above, which includes requirements to run the client, ''minimumLauncherVersion'', and the download link for the server, client, and assets.
: <nowiki>https://s3.amazonaws.com/Minecraft.Download/versions/<version>/<version>.jar</nowiki>
 
  
The server jar file and its .exe equivalent for a specific version are located at
+
{{Warning2 | If you're still using the old endpoint (<nowiki>https://s3.amazonaws.com/Minecraft.Download</nowiki>), update to the new ones, as the old endpoint is no longer being updated, and could be removed any time.}}
: <nowiki>https://s3.amazonaws.com/Minecraft.Download/versions/<version>/minecraft_server.<version>.jar</nowiki>
 
: <nowiki>https://s3.amazonaws.com/Minecraft.Download/versions/<version>/minecraft_server.<version>.exe</nowiki>
 
  
Some information on how to properly run said jar is included in the version manifest as an URL. It can also be found  at
+
== Libraries ==
: <nowiki>https://s3.amazonaws.com/Minecraft.Download/versions/<version>/<version>.json</nowiki>
+
The libraries which can be used for all Minecraft versions and are downloaded by the launcher are located at
 
 
{{Warning2|As the Minecraft launcher updates, the format of the JSON or the requirements to run the client may change. The ''minimumLauncherVersion'' in the <version>.json should be used to detect changes instead of just failing on updates.}}
 
 
 
{{Warning2|All files are accessible via the version_manifest now. You should not use the s3 urls anymore.}}
 
  
== Libraries ==
+
https://libraries.minecraft.net/
The libraries which can be used for all minecraft versions and are downloaded by the launcher are located at
 
  https://libraries.minecraft.net/
 
  
The json file downloaded above is used in order to determine which libraries to download. Inside the file is a key, <code>libraries</code> which contains information about each library required.
+
The JSON file downloaded above is used in order to determine which libraries to download. Inside the file is a key, <code>libraries</code> which contains information about each library required.
 
Example:
 
Example:
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">

Revision as of 07:34, 7 March 2019

Game

All available versions of the game itself are listed on https://launchermeta.mojang.com/mc/game/version_manifest.json

The location of the information JSON file for a specific version is included in the version manifest above, which includes requirements to run the client, minimumLauncherVersion, and the download link for the server, client, and assets.

Warning.png If you're still using the old endpoint (https://s3.amazonaws.com/Minecraft.Download), update to the new ones, as the old endpoint is no longer being updated, and could be removed any time.

Libraries

The libraries which can be used for all Minecraft versions and are downloaded by the launcher are located at

https://libraries.minecraft.net/

The JSON file downloaded above is used in order to determine which libraries to download. Inside the file is a key, libraries which contains information about each library required. Example:

{
  "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3",
  "natives": {
    "linux": "natives-linux",
    "windows": "natives-windows",
    "osx": "natives-osx"
  },
  "extract": {
    "exclude": [
      "META-INF/"
    ]
  },
  "rules": [
    {
      "action": "allow",
      "os": {
        "name": "osx",
        "version": "^10\\.5\\.\\d$"
      }
    }
  ]
}

The name key is used to determine the url from which to download the library from. The format of this string is

<package>:<name>:<version>

The corresponding URL would look like this:

https://libraries.minecraft.net/<package>/<name>/<version>/<name>-<version>.jar

where path is the result of replacing all the periods in package with slashes.

It also download a hash, in sha1, the url is:

https://libraries.minecraft.net/<package>/<name>/<version>/<name>-<version>.jar.sha1

Warning.png http://libraries.minecraft.net/ will NOT work - you must use https

The natives key provides a string for each specific platform to be inserted between the .jar and the <version> of the filename, resulting in a filename with the format:

<name>-<version>-<native-string>.jar

This is applied to any file with the natives key. The natives string may contain ${arch}, which should be replaced with 32 or 64.


The extract key provides rules for the extraction of the file.


The rules key is used to determine which platforms to download the file to. When the action is allow, the file will be downloaded to the platform stated in os. When the action is disallow, the file will not be downloaded to the platform stated in os. If there is no os key, the rule is default for non-specified platforms.


In the example above, on an OS X platform, the full download path would be

https://libraries.minecraft.net/org/lwjgl/lwjgl/lwjgl-platform/2.9.1-nightly-20130708-debug3/lwjgl-platform-2.9.1-nightly-20130708-debug3-natives-osx.jar

The file would be extracted but the META-INF file would not be. Additionally, the file would only be downloaded if the computer was running OS X 10.5.

Assets

The game itself downloads further resources from

http://resources.download.minecraft.net/

The asset index for each version is linked in the <version>.json. An example url to the asset index could look like this

https://launchermeta.mojang.com/mc/assets/1.12/67e29e024e664064c1f04c728604f83c24cbc218/1.12.json

Each resource in the file has a name (the field name of the resource object), a SHA1 hash, and a file size. The client currently downloads all resources in the index from

http://resources.download.minecraft.net/<first 2 hex letters of hash>/<whole hash>

and stores them in

.minecraft/assets/objects/<first 2 hex letters of hash>/<whole hash>

and a copy is stored in

.minecraft/assets/virtual/legacy/ 

in the old format for versions that don't support the new system (1.7.2 and below)