Entwickler

Aus dem Quellcode bauen

Node, pnpm und Rust einrichten, den Launcher im Dev-Modus starten, die Prüfungen ausführen, Installer bauen und die TRS-Client-Mod 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

OrdnerWas 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 enable richtet sie ein)
  • Rust (stable, MSVC-Toolchain) über rustup
  • Visual Studio Build Tools mit „Desktopentwicklung mit C++“
  • WebView2 (bei Windows 10 und 11 vorinstalliert)

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.

Setz TRS_LAUNCHER_HOME auf einen eigenen Ordner, damit deine Testdaten nicht mit deinen echten Launcher-Daten vermischt werden.
Entwickler-Builds ohne angemeldetes Konto starten das Spiel im offiziellen Demo-Modus von Minecraft. Release-Builds brauchen immer ein Konto, das das Spiel besitzt.

Prüfungen ausführen

Das sind dieselben Prüfungen, die die CI bei jedem Push und Pull Request ausführt.

pnpm typecheck
pnpm test

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.

Offizielle Releases signieren die Update-Dateien mit dem privaten Schlüssel des Projekts. Ohne diesen Schlüssel kann der Build nach dem Erstellen der Installer mit einem Fehler über einen fehlenden privaten Schlüssel enden. Schalte die Update-Dateien für eigene Builds aus: 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:

OrdnerLoader und VersionenBauen
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
Unter Windows nimm .\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.