8000 GitHub - Mrmayman/quantumlauncher: A simple, powerful Minecraft launcher written in Rust
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Mrmayman/quantumlauncher

Repository files navigation

QuantumLauncher

A minimalistic Minecraft launcher for Windows, macOS and Linux.

Quantum Launcher running a Minecraft Instance

QuantumLauncher is written in Rust with the iced framework, offering a lightweight and responsive experience. It is designed to be simple and easy to use, with a focus on performance and features.

Features

Lightweight and responsive

Install fabric, forge or optifine with ease

Build in mod store to download your favorite mods

Isolate your different game versions with instances!

Full support for old minecraft versions, integrated with Omniarchive. Includes skin and sound fixes!

Neatly package your mods into presets, and share it with your friends!

Built in themes!



Downloads and Building

You can download the stable version from the website linked above, or from the Releases button

Or, you can compile the launcher to get the latest experimental version (with potentially broken and untested features). To compile the launcher:

git clone https://github.com/Mrmayman/quantum-launcher.git
cd quantum-launcher
cargo run --release

You can omit the --release flag for faster compile times, but slightly worse performance and MUCH larger build file size.

Why QuantumLauncher?

  • QuantumLauncher provides a feature rich, flexible, simple and lightweight experience with plenty of modding features.

What about the others? Well...

  • The official Minecraft launcher is slow, unstable, buggy and frustrating to use, with barely any modding features.
  • Prism Launcher is a great launcher overall, but it does not support offline accounts. Same for MultiMC.
  • Legacy Launcher isn't as feature rich as this
  • TLauncher is suspected to be malware

File Locations

  • On Windows, the launcher files are at C:/Users/YOUR_USERNAME/AppData/Roaming/QuantumLauncher/.
  • You probably won't see the AppData folder. Press Windows + R and paste this path, and hit enter.
  • On Linux, the launcher files are at ~/.config/QuantumLauncher/. (~ refers to your home directory).
  • Instances located at QuantumLauncher/instances/YOUR_INSTANCE/
  • .minecraft located at YOUR_INSTANCE/.minecraft/.
  • Launcher logs are located at QuantumLauncher/logs/.

To-do (in the future)

(note: WIP means work-in-progress)

Core

  • Instance creation, deletion, renaming, launching
  • Java/Game args editing
  • Memory allocation editing
  • Optional Microsoft login
  • Integration with Omniarchive, old version support

Mods

Loaders

  • Fabric
  • Forge
  • Optifine
  • Quilt
  • Neoforge
  • OptiForge
  • OptiFabric
  • Jar Mods

S 8000 ources

  • Modrinth mods
  • Curseforge mods
  • Modrinth modpacks
  • Curseforge modpacks

Features

  • Mod store
  • Mod presets (packaging mods)
  • Mod updater
  • Make mod updater incrementally load in (optimization)
  • UI/UX overhaul of preset system

Instances

  • Import MultiMC instance
  • Migrate from other launchers (file locations)
  • Package QuantumLauncher instance

Servers (disabled in GUI but can be enabled)

  • Ability to create, delete and run Minecraft servers
  • Editing basic server settings (RAM, Java, Args)
  • Editing server.properties
  • Editing any NBT config file
  • Plugin store
  • playit.gg integration

Loaders

Platforms

  • Windows x86_64
  • Linux x86_64
  • macOS x86_64 (WIP)
  • Windows Aarch64 (WIP)
  • Linux Aarch64
  • macOS Aarch64
  • Windows i686 (WIP)
  • Linux i686 (WIP)
  • FreeBSD
  • Haiku

MSRV (Minimum Supported Rust Version)

  • The exact MSRV is unknown (feel free to find out for yourselves).
  • However, at least Rust 1.78.0 is required.

Contributing

There are many ways you can help me out! I'm open to any contribution:

If you don't know how to code, you can:

  • Find and report bugs or issues
  • Give feedback about how this launcher could be improved
  • Fix any typos or mistakes in anything (english isn't my first language)
  • Most importantly, share this launcher with your friends!

If you know how to code, you can:

  • Well... write code. Add stuff. Don't worry about "quality" or fancy terms like that. This ain't the linux kernel, I'm here with you!
  • Write documentation. See a public function, module, struct, enum, whatever that could help with some /// doc comment? Go ahead!
  • Contribute to the website (repo: https://github.com/Mrmayman/Mrmayman.github.io)
  • Work on CI (github actions)

There's a more in-depth guide on the codebase in main.rs at the top.

Codebase

This section will mainly focus on what the codebase is like for any potential contributors.

Crate Structure

  • quantum_launcher - The GUI frontend
  • ql_instances - Instance management, updating and launching
  • ql_mod_manager - Mod management and installation
  • ql_servers - A self-hosted server management system (incomplete)

Core components

  • ql_core - Core utilities and shared code
  • ql_reqwest - A shim (wrapper) around the reqwest library, that automatically deals with platform-specific features in the Cargo.toml.

Specific-purpose "libraries"

  • ql_java_handler - A library to auto-install and provide java runtimes

Brief Overview of the codebase

The architecture of the launcher is based on the Model-View-Controller pattern (AKA the thing used in iced).

  • The Launcher struct is the main controller of the application.
  • view() renders the app's view based on the current state.
  • update() processes messages and updates the state accordingly.
  • The launcher_state::State enum determines which menu is currently open.

So it's a back-and-forth between Messages coming from interaction, and code to deal with the messages in update().

Comments

I tend to be loose, for better or for worse, when it comes to using comments. Have something complicated-looking that could be better explained? Add comments. Clippy bugging you about not documenting something? Add doc comments.

The only rule of thumb is: Do it well or don't do it.

Half-baked useless comments are worse than no comments (yes I'm guilty of this sometimes).

Heck, feel free to make it informal if that seems better. (maybe add a WTF: tag so people can search for it for fun).

Btw, if you have any questions, feel free to ask me on discord!

Contributors

  • Mrmayman (lead developer)
  • apicalshark (github CI, packaging, distribution)
  • Aurlt (@exsclt_35289 on Discord) (icon design)

Licensing and Credits

A lot of this launcher's design, including the code for creating and launching the game, and installing forge, is inspired by https://github.com/alexivkin/minecraft-launcher/.

Nearly all of this launcher is licensed under the GNU General Public License v3, however there are a few exceptions (such as github actions and assets). Visit the assets README for more information.

Note on Piracy

If you pirate the game, it's at your own risk. I am not responsible for any issues caused. I recommend that you buy the game, but if you don't have the means, feel free to use this launcher. If anyone has any issues/complaints, just open an issue in the repo.

0