Minecraft Launcher

The Minecraft launcher is the login and downloader frontend to the stand-alone client. It is responsible for downloading the main java packages, including minecraft.jar, which holds the code and resources of the game such as textures. It also acts somewhat like a basic copy-protection by forcing the user to login to a paid account when running for the first time. It has been part of the stand-alone client since its inception.

Behavior
Every time the launcher is executed, it checks the a specific directory where Minecraft stores its files called. It checks a file called "lastlogin" for login credentials. If the file does not exist or is corrupt the user must login with a valid premium account, otherwise the game will refuse to run.

When logging in, the launcher will first try to verify the login. If a valid "lastlogin" file exists but there is no internet connection, the launcher will offer a "Play offline" mode, allowing the user to play regardless. If the connection is successful, the launcher will then compare the "version" file in the "bin" directory to the latest version reported by the server. If the file does not exist or the installed version is outdated, the launcher will download all Minecraft components and Java binary files.

Finally, upon a successful update or installation, the launcher will execute "minecraft.jar". It is possible however for there to be a valid and up-to-date "version" file but missing ".jar" files, in which case the launcher will hang.

Upcoming Launcher
A new version of the launcher has been in development since January 21, 2011. Updates to the launcher currently include a smarter update system that only updates changed files, prompts the user to update, allows HTTPS logins for a more secure connection and general UI improvements. A technical sneak preview was "leaked" by Notch on February 18, 2011. In addition, a link to the Minecraft install directory for easy access and a "Force Update" button can be found by clicking the "Options" button on the launcher's main window. The new launcher also features an inline "change log" via a Tumblr, and supports command-line aruguments.