BlockiumLauncher is a Minecraft launcher written in C# with a layered backend, a CLI host, and an experimental GTK host. The current priority is the backend and CLI: instance management, launch planning, launch execution, content indexing, and catalog listing for Modrinth and CurseForge.
- CLI is the primary supported host.
- GTK host exists but is still early-stage and not the main development target yet.
- Microsoft account sign-in is not enabled by default. A real implementation requires Microsoft identity app registration and configuration.
- CurseForge catalog access requires an API key.
- Install, verify, repair, and launch Minecraft instances
- Support for
vanilla,fabric,quilt,forge, andneoforge - Offline account management
- Launch status tracking and process control
- Shared metadata/runtime/cache layout under one launcher root
- Per-instance content indexing for:
- mods
- resourcepacks
- shaders
- worlds
- screenshots
- servers
- Mod enable/disable support via
.jarand.jar.disabled - Catalog listing commands for:
- Modrinth mods, modpacks, resourcepacks, shaders
- CurseForge mods, modpacks, resourcepacks, shaders
- Timestamped text logging with daily context logs and
latest.log
src/BlockiumLauncher.Domain: core entities and value objectssrc/BlockiumLauncher.Application: use cases and application abstractionssrc/BlockiumLauncher.Infrastructure: persistence, metadata clients, downloads, launch, loggingsrc/BlockiumLauncher.Contracts: DTOs for host-facing contractssrc/BlockiumLauncher.Host.Cli: primary executable hostsrc/BlockiumLauncher.Host.GtkSharp: experimental desktop hosttests/*: unit and integration-style tests by layer
- .NET 10 SDK
- Internet access for metadata/catalog queries and game asset/runtime downloads
- Java is required to actually launch Minecraft unless a managed runtime is downloaded/resolved for the target instance
Optional:
- CurseForge API key for CurseForge catalog commands
- GTK 3 runtime/development packages if you want to build or run the GTK host
Restore and build:
dotnet restore BlockiumLauncher.slnx
dotnet build BlockiumLauncher.slnx -c ReleaseRun tests:
dotnet test BlockiumLauncher.slnx --no-restoreShow CLI help:
dotnet run --project src/BlockiumLauncher.Host.Cli -- --helpInstall an instance:
dotnet run --project src/BlockiumLauncher.Host.Cli -- instances install --name TestPack --version 1.21.1 --loader neoforgeList Modrinth mods for NeoForge 1.21.1:
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog mods --provider modrinth --loader neoforge --game-version 1.21.1Current command surface includes:
accounts listaccounts add-offline --username <name>accounts set-default --account-id <id>accounts remove --account-id <id>instances install --name <name> --version <version> --loader <vanilla|fabric|quilt|forge|neoforge>instances verify --instance-id <id>instances repair --instance-id <id>instances start --instance-id <id>launch planlaunch runlaunch statuslaunch stopcatalog modscatalog modpackscatalog resourcepackscatalog shadersversions vanillaversions loadersdiagnostics dumpinstance content listinstance content rescaninstance mods disableinstance mods enable
For machine-readable output, most commands also support --json.
Modrinth:
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog mods --provider modrinth --loader neoforge --game-version 1.21.1 --query sodium
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog modpacks --provider modrinth --game-version 1.21.1 --query skyblock
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog resourcepacks --provider modrinth --game-version 1.21.1
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog shaders --provider modrinth --game-version 1.21.1CurseForge:
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog mods --provider curseforge --loader neoforge --game-version 1.21.1
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog modpacks --provider curseforge --game-version 1.21.1
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog resourcepacks --provider curseforge --game-version 1.21.1
dotnet run --project src/BlockiumLauncher.Host.Cli -- catalog shaders --provider curseforge --game-version 1.21.1Common filters:
--query <text>--category <value>repeated--sort relevance|downloads|follows|newest|updated--limit <1-100>--offset <0+>--json
CurseForge catalog listing requires CURSEFORGE_API_KEY.
Windows PowerShell:
$env:CURSEFORGE_API_KEY="your-api-key"Linux/macOS shells:
export CURSEFORGE_API_KEY="your-api-key"The default launcher root is platform-specific:
- Windows:
%USERPROFILE%\BlockiumLauncher - macOS:
~/Library/Application Support/BlockiumLauncher - Linux:
$XDG_DATA_HOME/BlockiumLauncheror~/.local/share/BlockiumLauncher
Under that root, the launcher manages directories such as:
datacacheinstancessharedlogsdiagnosticsruntimes
Logs are written as plain text files with timestamps.
- Daily context logs use the format
{context}_{yyyyMMdd}.log latest.logmirrors the newest entries- Logs live under the launcher
logsdirectory
Build:
dotnet restore BlockiumLauncher.slnx
dotnet build BlockiumLauncher.slnx -c ReleaseRun:
dotnet run --project src/BlockiumLauncher.Host.Cli --Publish a Windows CLI binary:
dotnet publish src/BlockiumLauncher.Host.Cli/BlockiumLauncher.Host.Cli.csproj -c Release -r win-x64 --self-contained false -o artifacts/cli/win-x64The GTK host is experimental. If you want to build it on Windows, you need a working GTK 3 runtime compatible with GtkSharp in addition to the .NET SDK.
Build:
dotnet build src/BlockiumLauncher.Host.GtkSharp/BlockiumLauncher.Host.GtkSharp.csproj -c ReleaseRun:
dotnet run --project src/BlockiumLauncher.Host.GtkSharp --Install the .NET 10 SDK using your distribution package source or Microsoft packages, then run:
dotnet restore BlockiumLauncher.slnx
dotnet build BlockiumLauncher.slnx -c Release
dotnet test BlockiumLauncher.slnx --no-restore
dotnet run --project src/BlockiumLauncher.Host.Cli --Publish a Linux CLI binary:
dotnet publish src/BlockiumLauncher.Host.Cli/BlockiumLauncher.Host.Cli.csproj -c Release -r linux-x64 --self-contained false -o artifacts/cli/linux-x64The GTK host is optional and early-stage. Install GTK 3 development/runtime packages first. On Debian/Ubuntu-like systems that is typically:
sudo apt install libgtk-3-0 libgtk-3-devThen build/run:
dotnet build src/BlockiumLauncher.Host.GtkSharp/BlockiumLauncher.Host.GtkSharp.csproj -c Release
dotnet run --project src/BlockiumLauncher.Host.GtkSharp --Package names vary by distribution.
Install the .NET 10 SDK, then run:
dotnet restore BlockiumLauncher.slnx
dotnet build BlockiumLauncher.slnx -c Release
dotnet test BlockiumLauncher.slnx --no-restore
dotnet run --project src/BlockiumLauncher.Host.Cli --Publish a macOS CLI binary for Apple Silicon:
dotnet publish src/BlockiumLauncher.Host.Cli/BlockiumLauncher.Host.Cli.csproj -c Release -r osx-arm64 --self-contained false -o artifacts/cli/osx-arm64For Intel Macs, replace osx-arm64 with osx-x64.
The GTK host is experimental. Install GTK 3 first, for example with Homebrew:
brew install gtk+3Then build/run:
dotnet build src/BlockiumLauncher.Host.GtkSharp/BlockiumLauncher.Host.GtkSharp.csproj -c Release
dotnet run --project src/BlockiumLauncher.Host.GtkSharp --Depending on your local setup, you may also need to ensure the native GTK libraries are visible to the runtime.
Run the full test suite:
dotnet test BlockiumLauncher.slnx --no-restoreThe repository currently has tests across:
- domain value objects and entities
- application use cases
- infrastructure persistence/download/metadata/launch services
- shared result/error primitives
- Microsoft authentication is intentionally not configured in the default setup.
- CurseForge support currently covers catalog listing and requires an API key.
- The GTK host is not yet the main supported frontend.
- The launcher is under active development; command surface and persistence details may still evolve.
See LICENSE.txt.