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.
|