183 lines
6.6 KiB
Markdown
183 lines
6.6 KiB
Markdown
# 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.
|