build | ||
cmd/mccl | ||
internal | ||
pkg | ||
.gitignore | ||
go.mod | ||
go.sum | ||
Makefile | ||
README.md |
mccl
Which stands for Minecraft Console Launcher.
As a fellow pirate I got tired of that there are no vanilla builds on torrents. After a very short research I found I can just download everything directly from Mojang without authorization. xD
So I wrote this launcher... :)
It can install only vanilla game, mod launchers should be installed using theirs installers. But, after some testing and fixes (fixes for Forge), it can run Forge, Fabric, and Quilt. I know there are other mod launchers as well, but I didn't test them.
There's still a lot of work left.
Since I don't have a Mac or Hackintosh I cannot handle MacOS properly. Rules should probably work though.
Using
mccl install|i version directory
mccl run|r version directory [-u User] [-U UUID] [--java-Xmx 4G] [--profile]
mccl list|l directory
version
is game version like 1.20.2
or 23w43b
. Or it can be
[latest-]release
or [latest-]snapshot
to install respectively a freshest
release or snapshot version.
directory
is a root path where all game files will be installed to, or runned
from, or listed.
-u,--username
is a player's in-game username.
-U,--uuid
is a UUID of your account. Even though this launcher doesn't perform
an authorization, passing your username and account's UUID will still load your
skin.
--profile
tells to load a mccl_profile.json
if it exists or store passed
(or theirs defaults otherwise) --username
--uuid
and --java-Xmx
. Once
stored, you can omit -u
, -U
, and --java-Xmx
, and just pass --profile
,
and it will load your username, UUID and a maximum heap size.
TODO
- Rewrite LocateJavaHome for Linux so that it will actually search for an existing Java installation.
- Implement
uninstall|u
command. It is not easy, since I must look through all installed versions what assets and libraries are used. Btw, I think it will be good if in case of removing of a vanilla version all mod loaders for that version should be removed as well. Make that a default behaviour and introduce a flag that disable it.