diff --git a/README.md b/README.md index 9fccadc..ca50d31 100644 --- a/README.md +++ b/README.md @@ -2,41 +2,127 @@ TeleportSuite ist ein umfassendes Teleport-Plugin für Paper/Spigot mit Homes, Warps, Portalen, Spawn-System, Savepoints, Back/Deathback, Teleportanfragen und BungeeCord-Unterstützung. +--- + ## Features -- Homes mit konfigurierbaren Limits +- Homes mit konfigurierbaren Limits pro Rang - Warps mit optionalen Berechtigungen - Portale für Server- oder Weltwechsel - Spawn, FirstSpawn und Deathback -- Teleportanfragen mit Accept/Deny +- Teleportanfragen (TPA) mit Accept/Deny - Back- und Cooldown-/Warmup-System - Teleport zu Koordinaten, Welten und Spielern - Entity-Transport - SQLite- und MySQL-Unterstützung - BungeeCord-Unterstützung für verteilte Servernetzwerke +--- + ## Voraussetzungen - Paper oder Spigot ab Minecraft 1.20 - Java 21 oder neuer -- Optional: MySQL, falls du nicht SQLite verwenden möchtest +- Optional: MySQL, falls mehrere Server auf dieselbe Datenbank zugreifen sollen +- Optional: BungeeCord-Proxy, falls du mehrere Server vernetzt hast + +--- ## Installation -1. Die fertige JAR-Datei in den Ordner plugins deines Servers kopieren. -2. Den Server einmal starten, damit die Konfigurationsdatei und die Datenbank angelegt werden. -3. Den Server stoppen und die Datei config.yml nach Bedarf anpassen. -4. Den Server neu starten. +### Einzelner Server (kein BungeeCord) -## Konfiguration +1. Die JAR-Datei in den `plugins`-Ordner deines Servers kopieren. +2. Server starten → Plugin legt `config.yml` und Datenbank automatisch an. +3. Server stoppen und `config.yml` nach Bedarf anpassen. +4. Server neu starten. -Die Datei config.yml wird beim ersten Start im Plugin-Ordner angelegt. +--- -### Datenbank +### BungeeCord-Netzwerk ⚠️ + +> Wenn du mehrere Server mit BungeeCord verbunden hast und Spieler **serverübergreifend** teleportieren sollen, musst du das Plugin auf **jedem Spigot-Server UND auf dem BungeeCord-Proxy** installieren. + +**Schritt-für-Schritt:** + +**1. JAR auf jeden Spigot-Server kopieren** + +Kopiere die `TeleportSuite.jar` in den `plugins`-Ordner von **jedem einzelnen** Spigot-Server in deinem Netzwerk (z.B. Lobby, Survival, Creative, ...). + +**2. JAR auf den BungeeCord-Proxy kopieren** + +Kopiere dieselbe `TeleportSuite.jar` auch in den `plugins`-Ordner deines **BungeeCord-Proxys**. Das Plugin erkennt automatisch ob es auf Spigot oder BungeeCord läuft. + +**3. Jeden Server einmal starten** + +Starte jeden Server einmal kurz, damit die `config.yml` angelegt wird. Dann stoppe ihn wieder. + +**4. config.yml auf jedem Spigot-Server anpassen** + +Öffne die `plugins/TeleportSuite/config.yml` auf **jedem Spigot-Server** und passe folgende Einstellungen an: + +```yaml +bungee: + enabled: true # ← MUSS auf true stehen, sonst kein Cross-Server-Teleport! + server-name: "survival" # ← Den Namen dieses Servers eintragen (siehe unten) +``` + +> **Woher bekomme ich den `server-name`?** +> Öffne die `config.yml` deines **BungeeCord-Proxys** (nicht des Spigot-Servers!). +> Dort findest du einen Abschnitt wie diesen: +> ```yaml +> servers: +> lobby: +> address: localhost:25566 +> survival: +> address: localhost:25567 +> creative: +> address: localhost:25568 +> ``` +> Der `server-name` in der TeleportSuite-Config muss **exakt** dem Namen aus dieser Liste entsprechen. +> Beispiel: Auf dem Survival-Server trägst du `server-name: "survival"` ein. +> Auf dem Lobby-Server trägst du `server-name: "lobby"` ein. Und so weiter. + +**5. Datenbank einrichten (empfohlen: MySQL)** + +Damit alle Server auf dieselben Homes, Warps usw. zugreifen, solltest du MySQL verwenden und auf jedem Spigot-Server dieselben Zugangsdaten eintragen: ```yaml database: - type: sqlite + type: mysql + mysql: + host: localhost # Adresse deines MySQL-Servers + port: 3306 + database: teleportsuite + username: root + password: deinPasswort +``` + +**6. Alle Server neu starten** + +Starte jetzt alle Spigot-Server und den BungeeCord-Proxy neu. Wenn alles korrekt konfiguriert ist, siehst du beim Start des jeweiligen Spigot-Servers in der Konsole: + +``` +[TeleportSuite] BungeeCord-Unterstuetzung aktiviert. Server: survival +``` + +Falls du stattdessen diese Warnung siehst: + +``` +[TeleportSuite] BungeeCord deaktiviert (bungee.enabled=false). +``` + +→ Dann hast du in der `config.yml` dieses Servers `enabled: false` stehen gelassen. Auf `true` ändern und neu starten. + +--- + +## Konfiguration + +Die vollständige `config.yml` mit allen Optionen: + +```yaml +database: + type: sqlite # sqlite oder mysql mysql: host: localhost port: 3306 @@ -46,140 +132,101 @@ database: pool-size: 10 sqlite: file: teleportsuite.db -``` -- `sqlite` ist die Standard-Einstellung und benötigt keine zusätzliche Serverdatenbank. -- `mysql` ist sinnvoll, wenn mehrere Server auf dieselben Teleport-Daten zugreifen sollen. - -### BungeeCord - -```yaml bungee: - enabled: false - server-name: "survival" -``` + enabled: true + server-name: "survival" # Name dieses Servers in der BungeeCord config.yml -- Aktiviere `enabled: true`, wenn das Plugin im BungeeCord-Setup genutzt werden soll. -- `server-name` muss dem Namen des Servers im Netzwerk entsprechen. - -### Teleport - -```yaml teleport: - delay: 3 - cooldown: 5 - warmup-cancel-on-move: true - request-timeout: 60 -``` + delay: 3 # Wartezeit in Sekunden vor dem Teleport (0 = sofort) + cooldown: 5 # Cooldown in Sekunden zwischen Teleports + warmup-cancel-on-move: true # Teleport abbrechen wenn Spieler sich bewegt + request-timeout: 60 # Sekunden bis eine TPA-Anfrage automatisch verfällt -- `delay` ist die Wartezeit vor einem Teleport. -- `cooldown` verhindert zu häufige Teleports. -- `warmup-cancel-on-move` bricht den Teleport ab, wenn sich der Spieler bewegt. -- `request-timeout` legt fest, wie lange eine TPA-Anfrage gültig bleibt. - -### Homes - -```yaml homes: max-homes-default: 3 max-homes-vip: 10 max-homes-premium: 25 -``` -### Warps - -```yaml warps: allow-player-warps: false warp-permission-prefix: "teleportsuite.warp." -``` -### Portale - -```yaml portals: check-interval: 5 particle-effect: true -``` -### Spawn - -```yaml spawn: first-join-teleport: true death-respawn-to-spawn: false ``` -### Nachrichten - -Alle Nachrichten unterstützen `&`-Farbcodes und Platzhalter wie `{player}`, `{name}`, `{seconds}` und `{max}`. +--- ## Commands | Command | Beschreibung | Permission | -| --- | --- | --- | -| /tp | Teleportiere zu einem Spieler | teleportsuite.tp | -| /tphere | Teleportiere einen Spieler zu dir | teleportsuite.tphere | -| /tpa | Sende eine Teleportanfrage | teleportsuite.tpa | -| /tpaccept | Akzeptiere eine Teleportanfrage | teleportsuite.tpaccept | -| /tpdeny | Lehne eine Teleportanfrage ab | teleportsuite.tpdeny | -| /back | Teleportiere zur letzten Position | teleportsuite.back | -| /deathback | Teleportiere zum letzten Todesort | teleportsuite.deathback | -| /sethome [name] | Setze ein Home | teleportsuite.sethome | -| /home [name] | Teleportiere zu einem Home | teleportsuite.home | -| /delhome | Lösche ein Home | teleportsuite.delhome | -| /homes | Liste alle Homes auf | teleportsuite.home | -| /setwarp | Setze einen Warp | teleportsuite.setwarp | -| /warp | Teleportiere zu einem Warp | teleportsuite.warp | -| /delwarp | Lösche einen Warp | teleportsuite.delwarp | -| /warps | Liste alle Warps auf | teleportsuite.warp | -| /setportal | Erstelle ein Portal | teleportsuite.setportal | -| /delportal | Lösche ein Portal | teleportsuite.delportal | -| /portals | Liste alle Portale auf | teleportsuite.portals | -| /setsavepoint [name] | Setze einen Savepoint | teleportsuite.savepoint | -| /savepoint [name] | Teleportiere zu einem Savepoint | teleportsuite.savepoint | -| /setspawn | Setze den Spawn | teleportsuite.setspawn | -| /spawn | Teleportiere zum Spawn | teleportsuite.spawn | -| /setfirstspawn | Setze den FirstSpawn | teleportsuite.setfirstspawn | -| /tppos [world] | Teleportiere zu Koordinaten | teleportsuite.tppos | -| /tpall | Teleportiere alle Spieler zu dir | teleportsuite.tpall | -| /tpworld | Teleportiere in eine Welt | teleportsuite.tpworld | -| /entitytransport | Transportiere ein Entity | teleportsuite.entitytransport | +|---|---|---| +| `/tp ` | Teleportiere zu einem Spieler | `teleportsuite.tp` | +| `/tphere ` | Teleportiere einen Spieler zu dir | `teleportsuite.tphere` | +| `/tpa ` | Sende eine Teleportanfrage | `teleportsuite.tpa` | +| `/tpaccept` | Akzeptiere eine Teleportanfrage | `teleportsuite.tpaccept` | +| `/tpdeny` | Lehne eine Teleportanfrage ab | `teleportsuite.tpdeny` | +| `/back` | Teleportiere zur letzten Position | `teleportsuite.back` | +| `/deathback` | Teleportiere zum letzten Todesort | `teleportsuite.deathback` | +| `/sethome [name]` | Setze ein Home | `teleportsuite.sethome` | +| `/home [name]` | Teleportiere zu einem Home | `teleportsuite.home` | +| `/delhome ` | Lösche ein Home | `teleportsuite.delhome` | +| `/homes` | Liste alle Homes auf | `teleportsuite.home` | +| `/setwarp ` | Setze einen Warp | `teleportsuite.setwarp` | +| `/warp ` | Teleportiere zu einem Warp | `teleportsuite.warp` | +| `/delwarp ` | Lösche einen Warp | `teleportsuite.delwarp` | +| `/warps` | Liste alle Warps auf | `teleportsuite.warp` | +| `/setportal ` | Erstelle ein Portal | `teleportsuite.setportal` | +| `/delportal ` | Lösche ein Portal | `teleportsuite.delportal` | +| `/portals` | Liste alle Portale auf | `teleportsuite.portals` | +| `/setsavepoint [name]` | Setze einen Savepoint | `teleportsuite.savepoint` | +| `/savepoint [name]` | Teleportiere zu einem Savepoint | `teleportsuite.savepoint` | +| `/setspawn` | Setze den Spawn | `teleportsuite.setspawn` | +| `/spawn` | Teleportiere zum Spawn | `teleportsuite.spawn` | +| `/setfirstspawn` | Setze den FirstSpawn (für neue Spieler) | `teleportsuite.setfirstspawn` | +| `/tppos [welt]` | Teleportiere zu Koordinaten | `teleportsuite.tppos` | +| `/tpall` | Teleportiere alle Spieler zu dir | `teleportsuite.tpall` | +| `/tpworld ` | Teleportiere in eine Welt | `teleportsuite.tpworld` | +| `/entitytransport ` | Transportiere ein Entity | `teleportsuite.entitytransport` | + +--- ## Permissions -### Sammelrechte +| Permission | Beschreibung | +|---|---| +| `teleportsuite.*` | Alle Rechte des Plugins | +| `teleportsuite.home.unlimited` | Unbegrenzte Homes (Standard: nur OPs) | +| `teleportsuite.nodelay` | Kein Teleport-Warmup | +| `teleportsuite.nocooldown` | Kein Teleport-Cooldown | +| `teleportsuite.admin` | Andere Spieler teleportieren (`/tp `) | -- `teleportsuite.*` - Alle Rechte des Plugins -- `teleportsuite.home.unlimited` - Unbegrenzte Homes, standardmäßig nur für OPs +Alle weiteren Einzelrechte entsprechen dem jeweiligen Command-Namen, z.B. `teleportsuite.tp`, `teleportsuite.home`, `teleportsuite.warp` usw. -### Wichtige Einzelrechte +--- -- `teleportsuite.tp` -- `teleportsuite.tphere` -- `teleportsuite.tpa` -- `teleportsuite.tpaccept` -- `teleportsuite.tpdeny` -- `teleportsuite.back` -- `teleportsuite.deathback` -- `teleportsuite.sethome` -- `teleportsuite.home` -- `teleportsuite.delhome` -- `teleportsuite.setwarp` -- `teleportsuite.warp` -- `teleportsuite.delwarp` -- `teleportsuite.setportal` -- `teleportsuite.delportal` -- `teleportsuite.portals` -- `teleportsuite.savepoint` -- `teleportsuite.setspawn` -- `teleportsuite.spawn` -- `teleportsuite.setfirstspawn` -- `teleportsuite.tppos` -- `teleportsuite.tpall` -- `teleportsuite.tpworld` -- `teleportsuite.entitytransport` +## Häufige Probleme + +**„Spieler XY nicht gefunden" beim serverübergreifenden `/tp`** +→ `bungee.enabled` in der `config.yml` steht auf `false`. Auf `true` setzen und neu starten. + +**Spieler landet am Spawn statt beim Zielspieler** +→ `server-name` in der `config.yml` stimmt nicht mit dem Namen in der BungeeCord `config.yml` überein. + +**TPA-Nachrichten kommen nicht an** +→ Das Plugin läuft nicht auf dem BungeeCord-Proxy. Die JAR muss auch in den `plugins`-Ordner des Proxys. + +**Homes/Warps sind auf anderen Servern nicht verfügbar** +→ Alle Server müssen dieselbe MySQL-Datenbank verwenden. SQLite funktioniert nur lokal auf einem Server. + +--- ## Support -Wenn du Probleme, Wünsche oder Fehlerberichte hast, eröffne ein Issue auf GitHub und füge wenn möglich den vollständigen Server-Log sowie deine `config.yml` bei. +Probleme, Wünsche oder Fehlerberichte bitte als Issue auf GitHub melden. Füge wenn möglich den vollständigen Server-Log sowie deine `config.yml` bei. \ No newline at end of file