aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 2ca56db7447afac5fcad16b891841610eec92b27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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