JDK 21 or later
Required to build and to run the launcher. The build targets maven.compiler.release=21.
CT-Main is a bare module host: start it and you see the welcome window and the link to this site. Add the module jars for the features you want — installer, launcher, accounts — and CT becomes a complete Minecraft launcher.
CT itself runs on your host Java. The Java runtime that Minecraft needs is downloaded by CT from Mojang's official runtime manifest.
Required to build and to run the launcher. The build targets maven.compiler.release=21.
piston-meta.mojang.com, launchermeta.mojang.com, and resources.download.minecraft.net for installation.
login.live.com, login.microsoftonline.com, *.auth.xboxlive.com, and api.minecraftservices.com are needed only for Microsoft sign-in.
Follow the steps in order. Launch performs the installation first if the game is not installed yet.
Easiest: get CT-Client-4.3.0-full.zip from the release page, unzip it, and double-click Start CT-Main.command (macOS) or Start CT-Main.bat (Windows) — that package already includes every module, so you can skip step 2.
To build the setup yourself, get CT-Main-4.3.0.jar and run it:
java -jar CT-Main-4.3.0.jar
Without modules the window shows WELCOME TO MINECRAFT-CT and the official website link — nothing else, because no feature module is installed yet.
Download the module jars you want from the module catalog, then drop them all on Install modules.command (macOS / Linux), Install modules.bat (Windows), or CT-Main-4.3.0.jar itself. CT-Main installs every dropped jar into the modules folder it uses — by default ~/.ct-client/modules, or a modules folder next to CT-Main.jar — and opens with the modules loaded:
java -jar CT-Main-4.3.0.jar ct-module-*.jar
The report lists every module installed, replaced, or skipped, and modules that other modules require are downloaded from this site automatically. Dropping a folder installs the module jars inside it. A single module jar also installs itself when you run it — java -jar ct-module-theme-4.3.0.jar. The install guide covers all four ways and what to do when a feature does not appear.
If modules were installed in an earlier session, start CT-Main again: the console lists every module that loaded and every jar that was skipped with its reason. A module loads only when the modules it requires are present; the sidebar now shows one view per module — Launch, Versions, Settings, Accounts, Console, Mods, About.
Moving jars by hand works too: put them in the modules folder and CT-Main picks them up on the next start. --modules-dir <path> overrides the folder for CT-Main and the module installers.
You do not need a separate install step. Launch installs the game first if it is not installed yet: CT reads Mojang's official version manifest, downloads the client, every applicable library, the asset index, and all assets, verifies each file against the published SHA-1 and size, and installs the Java runtime component declared by the version metadata. If an install stops partway, run it again — verified files are kept, so it resumes.
Pick an account as described below, then launch. Game output streams to the launcher console and to <game directory>/logs/ct-client-launch.log.
Online play requires a Microsoft account that owns Minecraft Java Edition. The built-in sign-in needs nothing else — no Azure application, no setup. A custom Azure client ID method remains available for users who registered their own application.
Open the Microsoft Account view and press Sign in with Microsoft. With the default built-in method, the launcher immediately requests a device code, shows it, and opens microsoft.com/link — sign in there with the Microsoft account email and password, and CT completes the sign-in. Nothing needs to be configured first.
Custom Azure method: select Custom Azure client ID in the Microsoft Account view and set the client ID there, or set it through the environment:
export CT_MICROSOFT_CLIENT_ID=your-azure-public-client-id
The application must be a public client with the device code flow enabled, allowed to use the XboxLive.signin and offline_access scopes. The environment variable overrides a stored microsoft.clientId value when it is set and not blank.
Both methods run the OAuth device code flow: CT shows a user code and a verification address, opens the browser, and polls for the token at the interval the service returns. The token is then exchanged through Xbox Live, XSTS, and the Minecraft services, and a profile check confirms the account owns Java Edition. Access tokens are never written to disk and are redacted from any echoed command; a Microsoft sign-in lasts for the current launcher session.
If sign-in fails with This Microsoft account has no Xbox profile, complete your Xbox profile setup once at xbox.com, then retry. See troubleshooting for the full list.
For development and single-player testing, use a local offline profile instead of Microsoft sign-in.
Select it in the desktop launcher's Offline Profile view, or name it from the command line. Offline names are 3 to 16 characters of letters, numbers, and underscores; the profile derives a stable UUID from the name.
java -jar CT-Main-4.3.0.jar ct --player DevPlayer
Command line mode always uses an offline profile — Microsoft sign-in is only available in the desktop launcher. It needs the cli module (and the modules it requires). Other useful flags:
java -jar CT-Main-4.3.0.jar ct --install-only
java -jar CT-Main-4.3.0.jar ct --dry-run
java -jar CT-Main-4.3.0.jar ct --help
Limitation: offline profiles cannot join online-mode servers. The launcher does not retry the player/attributes or Realms endpoints, which reject offline profiles with HTTP 401.
--dry-run prints the exact launch command without starting the game, including the resolved official Java runtime path. The full option reference lives on the command line page; per-key preferences are documented under settings.
CT Loader finds mod JARs in <game directory>/mods/ — see Mods for the exact folder paths and the mod format.
Write a ct.mod.json, drop the JAR into the mods folder, and CT Loader initializes it on launch.
Memory, resolution, game directory, and a Java executable override live in ~/.ct-client/settings.properties.
Every module is open source and browsable online, or as one archive.