Story about me and morpheus launcher
I’ve been playing minecraft for at least a decade, if I remember correctly since about 2012, I started playing minecraft with the lukepack (modpack of an Italian youtuber), a year later I started playing another modpack (lovepack) always with the anjocaido launcher, until we get to 2014 when I discovered the keinett launcher (which was later renamed to shiginima launcher), at the time I was sp and I enjoyed playing and trolling players with the huzuni, in 2016 I started learning to create blatant cheats for minecraft, I created my first client called “MineClient” it was pretty bad but I enjoyed developing in java, in the following years I started creating others that were always better than the previous ones until one bad day I started arguing with another member of the cheats community making a fool of myself, a few days later I started for a personal challenge and to show others what I was capable of creating a client totally from scratch at the cost of reinvent the wheel and so the “Sulfur client” was born. We arrive in 2021 and together with a friend we decided to create a project called “Morpheus Project”, the project was to create a client called “Morpheus”, a totally private cheat and also to create a launcher that contained this client and sulfur (sulfur was on sale for a few euros for 3-4 years), however he was never available and did not want to develop the launcher together with me and then one day I decided, I want to make this launcher even if he does not want and is not interested, so the morpheus launcher was born around April 2023.
The launcher situation
Over the years the minecraft launcher situation has been getting worse and worse, at the time of writing this post the current situation is as follows:
- AnjoCaido: Deprecated
- Keinett/Shiginima: Deprecated
- Official Mojang launcher (java): Totally dead due to new microsoft auth
- Official Mojang launcher (electron): Bloated, only for premium and doesn’t work without internet
- Tlauncher.org: Russian Malware
- Tlauncher legacy (legacylauncher): Good but not fully trusty
- MultiMC: Very good but is only for premium
So why not make a launcher that hosts Morpheus, Sulfur and even vanilla versions of minecraft? and so I started developing this launcher on my own, I started writing the “API” first which consisted of a server written in expressjs that basically had user registration and login, self-service hwid change and above all encrypted download of clients via the appropriate request. for intellectual property reasons I will not reveal the cryptographic mechanism that was behind the DRM, that today this feature has been removed entirely since 2.1.0 version of Morpheus Launcher, since I do not want to dirty my name just because in the past I developed cheats for minecraft even though I prefer to play fairly.
The Launcher
After developing the Web API in expressjs I started writing the core of the launcher in java. You can find the source at my github.
How does work?
The first thing you need to do when you are making a minecraft launcher is parsing the versions json that lists all minecraft versions ever released, then once you parsed the json you need to filter for the version you want to launch. For example of 1.8.9 you even need to parse 1.8.9.json, the version json describes where and what java and native libraries the game needs, the json will give to you even what java and the game arguments the game needs to launch
The Gui
After I started writing the launcher, I started looking for which language and framework to use. At first I wanted to use Electron Acrylic Window, but it was not easy to use and cross-platform, so I found Flutter Acrylic, which is much easier to develop and most importantly Flutter allows cross-platform compilation for both x86_64 and arm64. So the gui was written in flutter using Flutter Acrylic for the translucent effect on Windows 10, 11 and also for MacOS, on linux however to get the translucent effect you need to set the launcher theme to Clear and use blur my shell on gnome, or Kwin ForceBlur on KDE. The gui interfaces with the launcher via command line to provide all the startup parameters such as nickname, uuid, and the session token for premium, optionally there is also an option to provide a custom game folder. if you are interested about contributing or analyzing the flutter gui you can find the source in my github