mcdl is a project that I started in March 2023 in order to learn Rust and provide myself with an easier way to manage and host Minecraft servers. Most notably, it makes use of async I/O and multithreading with tokio, detailed error handling and logging with color-eyre and tracing, parsing and deserialization from web APIs with serde, and shared metadata state that is passed between threads.
Current features include:
- Listing and filtering Minecraft versions from Mojang's API
- Installation, management, and launching of Minecraft server instances
- The correct Java runtime for each version is chosen and downloaded automatically
- Provides an option to upload crash reports to a third-party pastebin service (mclo.gs)
- Configuration file support for command-line flags passed to the server
- Generated automatically upon installation and can be edited manually
Please note that this project was started when I was relatively new to Rust, so many of the design decisions and implementations are not optimal/idiomatic. I am in the process of rewriting it to be more in line with best practices.1
Binaries for Linux (amd64 and aarch64), Windows (amd64), and macOS (aarch64, experimental) are available as Actions artifacts
or from nightly.link if you're not logged in. If you're not sure which one to use,
try linux.nightly.release for Linux and windows-msvc.nightly.release for Windows.
cargo install --git https://github.com/ibsamsky/mcdl- types/meta
-
Settingsstruct- configure certain paths, i.e. instance dir
- global default java flags (maybe)
-
- main
- alternative outputs (JSON/debug/etc.) for info/list commands
- third-party servers (fabric, forge, etc.)
- instance id separate from version/multi-instance for same version
- install-multiple support, e.g.
mcdl install -v 1.17.1 -i fabric -v 1.17.1 -i forgeormcdl install -v 1.17.1:forge -v 1.17.1:fabric
- install-multiple support, e.g.
- types/version
- fabric meta (?)
By using this software, you agree to the Minecraft EULA. This software is not affiliated with Mojang Studios or Microsoft.
Footnotes
-
Finding the source of this rewrite is left as an exercise for the reader. Once it's mostly complete, it will be merged into this repository. ↩