Client.jar

client.jar is the main code source for Minecraft. It is located in the %appdata%/.minecraft/versions/ directory on Windows, the ~/Library/Application Support/minecraft/versions/ directory in macOS, or the ~/.minecraft/versions/  directory in Linux distributions. When using the latest version of the Minecraft launcher, it is named  .jar.

It can be opened using a file archiving program or a Java decompiler.

Jar versions
The client.jar file is found in its version folder. It is accompanied by the client.json file that lists the version's attributes. Normal versions are available to choose from via the launcher, and snapshots are also available. It is also possible to download old alpha versions, and create version files to install mods on. Note that creating a new version is the only way to install mods; the launcher keeps normal versions synced.

Files in client.jar
In client.jar many files can be found; they can be categorized like so:
 * Class files: compiled Java code that Minecraft uses for program logic. These files (classes) have names such as "acq" or "qn" because they have been run through an obfuscation tool to hide the names of methods, variables and classes. However, they can still be disassembled to understand their functionality.
 * The META-INF directory: contains meta information about the game files.
 * Resource pack files: Contents that are in the vanilla resource pack, located in the assets directory.
 * .mcassetsroot : Used for identifying vanilla resources.
 * realms folder: Contains the textures and language files used by Realms.
 * minecraft folder: Resources for  namespace.


 * Data pack files: Contents that are in the vanilla data pack, located in the data directory.
 * .mcassetsroot : Used for identifying vanilla datas.
 * minecraft folder: Datas for  namespace.


 * pack.mcmeta : Metadata for both the vanilla resource and data packs. Fulfills the requirement for both resource pack and data pack metadata.
 * pack.png : Icon for both the vanilla resource and data packs.
 * log4j2.xml : Configuration file for log4j2.
 * version.json : Contains some basic information of this version.

File hierarchy
This is the current file list as of Java Edition 1.15.2. Note that Java class files have been omitted for brevity.

Minecraft.jar Minecraft.jar Minecraft.jar Client.jar Client.jar Minecraft.jar Client.jar Minecraft.jar Client.jar