aboutsummaryrefslogtreecommitdiff

mcl

Don't use this, it's not very good.

A tiny minecraft launcher. Downloads and launches the current release version of minecraft (java edition). Hacks in support for linux-aarch64.

Lots of missing things:

[ ] Downloading assets [ ] Applying runtime config correctly [ ] Compatibility with official launcher [ ] Support for selecting a version [ ] Anything to do with mods [ ] Anything to do with login to minecraft account [ ] Testing on platforms other than linux [ ] Fast downloads

Learning

This project was a learning exercise. Challenges: - Zig's stdlib http client only supports TLSv1.3, and Mojang's download servers only support TLSv1.2. Had to resort to libCURL C library. It was an experience. - json parsing discriminating based on element type: see the specs for Manifest and Version. Some fields are either a string or an array of strings and that requires zig's escape hatch implementing jsonParse on a type. - hacking aarch64 support required some string manipulation - general file manipulation etc. etc. - it turns out that the pinebook pro is not fast enough to play minecraft