# RuneLite Example Plugin ("Hello World") Ein einsatzbereites RuneLite-Plugin-Beispielprojekt. Das Plugin sendet eine **"Hello World!"**-Nachricht in den Ingame-Chat, sobald du dich einloggst oder das Plugin aktivierst. --- ## 📁 Projektstruktur ``` . ├── build.gradle # Gradle Build-Konfiguration ├── settings.gradle # Projektname ├── gradlew / gradlew.bat # Gradle Wrapper (keine manuelle Gradle-Installation nötig) └── src ├── main/java/com/example │ ├── ExamplePlugin.java # Hauptklasse des Plugins │ └── ExampleConfig.java # Einstellungs-Menü im RuneLite Config-Panel └── test/java/com/example └── ExamplePluginTest.java # Startet RuneLite mit dem geladenen Plugin ``` --- ## 🚀 Wie starte / teste ich das Plugin lokal? Der Standard- und einfachste Weg in der RuneLite-Entwicklung ist der **integrierte Test-Client**. Dadurch musst du keine JAR-Dateien manuell kopieren oder den offiziellen Client patchen. ### Option 1: Über das Terminal / CLI (am schnellsten) Führe einfach folgenden Befehl im Projektordner aus: ```bash ./gradlew run ``` *Unter Windows:* ```cmd gradlew.bat run ``` RuneLite startet im Entwicklermodus mit deinem geladenen Plugin. Sobald du dich mit deinem Account einloggst, erscheint im Chat: > `Example Plugin: Hello World!` --- ### Option 2: Über eine IDE (IntelliJ IDEA / VS Code / Eclipse) 1. **IntelliJ IDEA öffnen** $\rightarrow$ `Open` $\rightarrow$ diesen Projektordner auswählen $\rightarrow$ als Gradle-Projekt importieren. 2. Zu [`ExamplePluginTest.java`](file:///home/hikyu/Documents/projects/orsrs-plugin-bank-highlighter/src/test/java/com/example/ExamplePluginTest.java) navigieren. 3. Den grünen **Play-Button ▶** neben `main()` anklicken (oder `Shift + F10`). 4. RuneLite startet sofort mit Hot-Reloading & Debugging-Möglichkeiten. --- ## ⚙️ Wie funktioniert das "Hello World"? In [`ExamplePlugin.java`](file:///home/hikyu/Documents/projects/orsrs-plugin-bank-highlighter/src/main/java/com/example/ExamplePlugin.java): 1. **Beim Login:** Das Event `@Subscribe public void onGameStateChanged(GameStateChanged gameStateChanged)` fängt `GameState.LOGGED_IN` ab und sendet die Nachricht. 2. **Bei Plugin-Aktivierung:** In `startUp()` wird geprüft, ob du bereits eingeloggt bist (`client.getGameState() == GameState.LOGGED_IN`), und sendet ebenfalls die Nachricht. 3. **Anpassbar:** Die Nachricht kann im RuneLite Einstellungsmenü (unter **Example Plugin** in der Seitenleiste) konfiguriert werden. --- ## 📦 Standalone-JAR bauen (ShadowJar) Falls du eine eigenständige JAR-Datei benötigst: ```bash ./gradlew shadowJar ``` Die fertige JAR befindet sich anschließend in: `build/libs/bank-highlighter-1.0-SNAPSHOT-all.jar` --- ## ⚡ Installation in Bolt (lokal) Die Plugins (ExamplePlugin, LiveDashboardPlugin, EssentialsPlusPlugin) werden über den Einstiegspunkt `ExamplePluginTest.main` direkt als Builtin-Externals in den RuneLite-Client injiziert — es ist **kein** Bolt-Plugin-Manifest (RS3) nötig. ### 1. Einmalige Bolt-Konfiguration In `~/.config/bolt-launcher/launcher.json` muss gesetzt sein: ```json "runelite_use_custom_jar": true, "runelite_custom_jar": "/home/hikyu/.local/share/bolt-launcher/custom-runelite.jar", "osrs_launch_command": "java -jar /home/hikyu/.local/share/bolt-launcher/custom-runelite.jar" ``` ### 2. Bauen & installieren ```bash ./gradlew deploy ``` Der Befehl baut den Shadow-Jar und kopiert ihn **atomar** nach `~/.local/share/bolt-launcher/custom-runelite.jar`, so dass er auch bei laufendem Bolt/RuneLite sicher ersetzt werden kann (build.gradle `deploy`). ### 3. Automatische Neuinstallation bei jeder Änderung Lasse den Continuous-Build im Projektordner laufen — er überwacht die Quelldateien und installiert automatisch neu, sobald etwas geändert wird: ```bash ./gradlew deploy -t ``` *(Beenden mit `Ctrl+C`. Der Watcher kompiliert und kopiert die JAR bei jeder Quellcode-Änderung selbstständig.)* ### 4. Start in Bolt 1. Bolt starten → **RuneLite** wählen → einloggen. 2. „Essentials Plus" erscheint mit einem Icon in der Seitenleiste. 3. Falls nicht sichtbar: RuneLite-Hamburger → **Configuration** → **External Plugins** → „Essentials Plus" aktivieren. --- ## 🪟 Windows / Jagex Launcher (offizielles RuneLite) Auf Windows wird RuneLite über den **Jagex Launcher** gestartet. Dort lässt sich der Bolt-Trick (eigenes Client-JAR mit `ExamplePluginTest.main`) **nicht** verwenden, weil der Jagex Launcher immer die offizielle RuneLite-EXE startet. Stattdessen nutzt man das offizielle **Side-Loading** von RuneLite: Beim Client-Start lädt RuneLite alle `.jar` Dateien aus `~\.runelite\sideloaded-plugins\` nach – sofern der **Developer Mode** aktiviert ist. `runelite-plugin.properties` wird dabei nicht gebraucht. ### 1. Plugin-JAR bauen (klein, ohne Client) ```cmd gradlew.bat jar ``` Ergebnis: `build\libs\bank-highlighter-1.0-SNAPSHOT.jar` (enthält nur `com.example.*` Klassen, keine `net.runelite.*` – der richtige Jar-Typ zum Side-Loaden). ### 2. JAR in den Side-Load-Ordner kopieren Ordner anlegen (falls nicht vorhanden) und das JAR hineinkopieren: ``` %USERPROFILE%\.runelite\sideloaded-plugins\bank-highlighter.jar ``` *Beispiel via Explorer: `Start` → `%USERPROFILE%\.runelite\` eingeben → Ordner `sideloaded-plugins` erstellen → JAR hineinlegen.* ### 3. Developer Mode in RuneLite aktivieren 1. RuneLite über den **Jagex Launcher** starten. 2. Schraubenschlüssel (Configuration) → ganz nach unten scrollen → **RuneLite**-Reiter. 3. **„Enable Developer Mode"** aktivieren (Hinweis bestätigen). 4. RuneLite vollständig schließen und erneut starten. ### 4. Plugin aktivieren Nach dem Neustart erscheinen die Plugins in der Plugin-Liste (Plug-Icon) unter **External Plugins** (unten). - **Essentials Plus** aktivieren. - Weitere: **Example Plugin**, **Live Dashboard**. ### Automatisch aktualisieren Sobald sich etwas im Quellcode ändert, im Projektordner laufen lassen: ```cmd gradlew.bat jar -t ``` Der Watcher kompiliert das schlanke JAR automatisch neu. Danach **RuneLite einmal neu starten**, damit das neue JAR geladen wird (Side-Loaded-Plugins werden nur beim Client-Start eingelesen – nicht live). > ⚠️ **Hinweis:** Nach einem OSRS-Game-Update muss das JAR frisch gebaut werden > (`gradlew.bat jar` bzw. der Watcher), damit die API (`net.runelite.api.gameval`, …) > zum laufenden Client-Rev passt. Läuft ein älteres JAR, können Plugins mit Fehlern > abstürzen.