Minecraft Launcher
A customized launcher for your server!

Introduction

Games Applications Servers
Damien

Minecraft is owned by Microsoft (Mojang).

For your information, Minecraft is a video game developed by Mojang. The term "launcher" refers to an executable that precedes the game, allowing access to news, the ability to choose the game version, and launch it.

A few years ago, I embarked on developing a Minecraft launcher in Java, based on a video tutorial. However, with the evolution of Java, the launcher became outdated and exhibited issues on many Windows machines. Reflecting on my past work, I wanted to explore the existence of new and interesting libraries for creating a launcher. I came across one, but it was exclusively available in C#. Therefore, I decided to challenge myself and create a new launcher from scratch using a different programming language.

The goal of this project was to develop a customized launcher capable of running a specific version of Minecraft, including additional files such as resource packs or specific configurations. To achieve this, I set up a web server for downloading the required files while verifying their integrity using cryptographic hashes on the user's side. Additionally, utilizing the Discord API was necessary to display on the user's profile that they are currently playing via the launcher. Lastly, the use of Microsoft and Mojang APIs was crucial to allow users to log in to their Minecraft accounts and launch the game.

In the end, I successfully developed this launcher from start to finish, including a "bootstrap" executable for the initial launcher download. This means that if updates or modifications are needed, users don't have to redownload the launcher; they can simply run the bootstrap, which will take care of the update. Furthermore, the administrator has a configuration file available on the server, allowing them to modify certain launcher behaviors without requiring specific technical knowledge, such as an API key, Discord messages, logo, and other elements.

Difficulties encountered

Here are the major problems I encountered during this project.

Skills acquisition

Here's the main skills I acquired during this project.

Languages used

Frameworks, Languages, Libraries or tools used for this project.

Screenshots

Discover this fascinating project through these screenshots.