CT v4.3.0 / modular platform

One main program. Every feature is a module.

CT-Main ships with nothing but the welcome window. Every feature — installer, launcher, accounts, console, mods — is a separate module jar: download the ones you want, drag them all onto CT-Main-4.3.0.jar, and the launcher opens with them installed.

How it works

Installing a module

CT-Main scans its modules folder on every start — ~/.ct-client/modules, or a modules folder next to CT-Main.jar. Every start records the folder it used, so a module jar run from anywhere installs into the same folder.

  1. 1

    Fastest: download everything at once

    Download CT-Client-4.3.0-full.zip

    The full package holds CT-Main, all thirteen modules, start scripts, and a read-me. Unzip it and double-click Start CT-Main.command (macOS) or Start CT-Main.bat (Windows) — the launcher opens with every feature, nothing to install by hand. The steps below are for picking modules yourself.

  2. 2

    Or download CT-Main and start it once

    Get CT-Main-4.3.0.jar from the release page and start it:

    java -jar CT-Main-4.3.0.jar

    You see the welcome window and nothing else — exactly what the main program is: a module host. The Modules view shows the folder it reads.

  3. 3

    Download the modules you want

    Each module is one runnable jar, listed below. A module only loads when every module it requires is present, so the simplest full setup is: download all of them. The bundles are separate downloads on purpose — you can also pick just the few you need.

  4. 4

    Install them

    Drop the jars on the installer file — Install modules.command (macOS / Linux) or Install modules.bat (Windows) from the full package — or onto CT-Main-4.3.0.jar itself where the system opens jars. You can also open the Modules view in the launcher and press Install module jar…. All three install every jar at once into the modules folder CT-Main reads and open the launcher with them loaded.

    java -jar CT-Main-4.3.0.jar ct-module-*.jar

    The report lists each module it installed, replaced, or skipped. Modules that other modules require are downloaded from this site automatically, so installing About also brings Theme. If a launcher is already open on the same modules folder, the dropped copy installs the modules and stops, telling you to close that window and start CT-Main again. Full install guide.

  5. 5

    Or run one module jar at a time

    Each module jar is also a program of its own. Running it installs just that module and prints the same details:

    java -jar ct-module-theme-4.3.0.jar
    java -jar ct-module-installer-4.3.0.jar
    java -jar ct-module-launcher-4.3.0.jar

    --print shows the target folder without writing, --remove uninstalls the module, --launch starts CT-Main straight afterwards, and --modules-dir <path> picks a different folder. Either way, modules that are already installed are left alone and a newer build replaces the older jar.

Catalog

All 13 modules

Every module is open source — read the code on the source page. The Requires column lists the modules that must be installed for this one to load.

ModuleWhat it doesRequiresDownload
Notes

Load order and services

Modules load in dependency order: a module that requires another module always initializes after it. Modules publish services to each other — the settings module publishes the settings store, the installer module publishes the game installer, and the launcher builds on both. If a required module is missing or fails, the depending module is skipped with a reason in the console, and CT-Main keeps running with the rest.

Minimal setups: only settings + installer + versions + launcher is enough to install and launch the game. Add account-offline or account-microsoft for accounts, console to watch the output, and modman plus ctloader to manage and load mods.

Modules are jars with a ct.module.json manifest and a small installer entry point, which is what makes them runnable. CT-Main loads any jar that follows the manifest format, so you can write your own: build a runnable module walks through it from an empty folder, and the API page documents what a module can use.