Aus dem Quellcode bauen
Der TRS Launcher ist eine Tauri-2-App: Ein Rust-Kern erledigt die Arbeit, eine Nuxt-4-Single-Page-App ist die Oberfläche. Der TRS Client im Spiel ist ein eigenes Gradle-Projekt im selben Repository.
Was wo liegt
| Ordner | Was es ist |
|---|---|
app/ | Nuxt-4-Frontend (SPA, kein SSR) |
src-tauri/src/ | Tauri-App: Befehle, Aufgabenverwaltung, Fehler-Umsetzung, Plugins |
src-tauri/crates/core/ | trs-core: der Launcher-Kern, unabhängig von der Oberfläche |
src-tauri/resources/client-mod/ | Fertig gebaute TRS-Client-Jars, die der Launcher mitbringt |
client-mod/ | TRS Client: gemeinsamer Kern plus Builds für Fabric, Forge und NeoForge |
packaging/ | Rezepte für AUR und Flatpak, Linux-Desktop-Dateien |
tests/ | Frontend-Tests (Vitest) |
Die Website und die TRS-API liegen in api/ auf dem Branch website (siehe unten).
Voraussetzungen
- Node.js 22 oder neuer und pnpm (die Version steht in
package.json;corepack enablerichtet sie ein) - Rust (stable, MSVC-Toolchain) über rustup
- Visual Studio Build Tools mit „Desktopentwicklung mit C++“
- WebView2 (bei Windows 10 und 11 vorinstalliert)
- Node.js 22 oder neuer und pnpm
- Rust (stable) über rustup
- die Entwicklungspakete von WebKitGTK und GTK:
sudo apt install build-essential curl file pkg-config libssl-dev libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libxdo-dev
sudo pacman -S --needed base-devel webkit2gtk-4.1 gtk3 libayatana-appindicator librsvg openssl xdotool
sudo dnf install gcc-c++ openssl-devel webkit2gtk4.1-devel gtk3-devel libappindicator-gtk3-devel librsvg2-devel libxdo-devel
Den Launcher im Dev-Modus starten
Code holen
git clone https://github.com/theredstonee/TRS-Launcher.git
cd TRS-Launcher
Abhängigkeiten installieren
pnpm install
Das führt auch nuxt prepare aus.
Starten
pnpm app:dev
Das startet den Nuxt-Dev-Server auf http://localhost:3000 und öffnet das Tauri-Fenster mit Hot Reload. Der erste
Start kompiliert den Rust-Teil und dauert eine Weile.
TRS_LAUNCHER_HOME auf einen eigenen Ordner, damit deine Testdaten nicht mit deinen echten Launcher-Daten
vermischt werden.Prüfungen ausführen
Das sind dieselben Prüfungen, die die CI bei jedem Push und Pull Request ausführt.
pnpm typecheck
pnpm test
pnpm generate # die Tauri-Crate braucht ein gebautes Frontend
cd src-tauri
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
Die Start-Pipeline lässt sich ohne Oberfläche testen. Sie lädt die angegebene Version in einen eigenen Datenordner und startet sie:
cd src-tauri
cargo run -p trs-core --example launch -- <daten-ordner> 1.21.1 [vanilla|fabric|quilt|forge|neoforge] [sekunden]
Um die Regeln des Absturz-Helfers an einem Log oder Absturzbericht auszuprobieren (ebenfalls in
src-tauri):
cargo run -p trs-core --example crash_scan -- <log-oder-absturzbericht> [--memory MB --system MB]
Installer bauen
pnpm app:build
Der NSIS-Installer landet in src-tauri/target/release/bundle.
pnpm tauri build --bundles appimage,deb,rpm
Die Rezepte für AUR und Flatpak liegen in packaging/.
pnpm tauri build --config '{"bundle":{"createUpdaterArtifacts":false}}' (statt des JSON-Texts geht auch der Pfad zu
einer JSON-Datei mit demselben Inhalt).CurseForge braucht beim Bauen einen API-Schlüssel: die Umgebungsvariable CURSEFORGE_API_KEY oder die Datei
~/.tauri/curseforge-api-key (unter Windows %USERPROFILE%\.tauri\curseforge-api-key). Ohne Schlüssel klappt der
Build trotzdem, CurseForge wird dann nur ausgeblendet.
Den TRS Client bauen
Um den Launcher zu bauen, musst du die Mod nicht bauen – fertige Jars liegen in src-tauri/resources/client-mod/.
Voraussetzung: ein JDK 21 oder neuer, um Gradle auszuführen. Gradle-Toolchains laden JDK 17, 21 oder 25 zum Kompilieren, wenn sie fehlen.
Jede Loader-Familie ist ein eigener Gradle-Build mit eigenem Wrapper:
| Ordner | Loader und Versionen | Bauen |
|---|---|---|
client-mod/ (Wurzel, fabric/) | Fabric 1.14.4–26.3 | ./gradlew collectLauncherJars |
client-mod/neoforge/ | NeoForge 1.20.2–26.3 | ./gradlew collectLauncherJars |
client-mod/forge/ | Forge 1.20–26.3 | ./gradlew :collectLauncherJars |
client-mod/forge-mojmap-legacy/ | Forge 1.14.4, 1.15.2, 1.16.x, 1.17.1, 1.18.x, 1.19.x | ./gradlew collectLauncherJars |
client-mod/forge-1.13.2/ | Forge 1.13.2 | ./gradlew build |
client-mod/legacy/ | Forge 1.8.9–1.12.2 | ./gradlew collectLauncherJars |
client-mod/legacy-1.7.10/ | Forge 1.7.10 | ./gradlew build |
Für den Fabric-Build in client-mod/:
./gradlew build # alle Versionen + die Unit-Tests von common/
./gradlew :fabric:1.21.1:build # eine einzelne Version
./gradlew :fabric:1.21.1:runClient # diese Minecraft-Version mit der Mod starten (Spielordner: client-mod/run)
./gradlew collectLauncherJars # dist/*.jar und dist/builds.json für den Launcher schreiben
.\gradlew oder gradlew.bat statt ./gradlew. Bau die Projekte nacheinander – sie schreiben
alle in dasselbe client-mod/dist/.Website und API
Die Website und die TRS-API sind ein eigenes Nuxt-4/Nitro-Projekt auf dem Branch website. Es hat eine eigene
package.json und Lockfile und braucht Node.js 24.11 oder neuer.
git checkout website
cd api
pnpm install
pnpm typecheck && pnpm lint && pnpm test
Die öffentlichen Endpunkte der API beschreibt Öffentliche API.