diff --git a/README.md b/README.md index 1716f9c..54238f6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,783 @@ -# Lasertec +# ⚡ Lasertec +### Realistisches LaserTag-Minigame Plugin für Minecraft +**Version:** 3.0.0  |  **Minecraft:** Spigot / Paper 1.20.1  |  **Sprache:** Deutsch + +--- + +## 📋 Inhaltsverzeichnis + +1. [Über das Plugin](#über-das-plugin) +2. [Installation](#installation) +3. [Erste Schritte – Arena einrichten](#erste-schritte--arena-einrichten) +4. [Join-Schilder einrichten](#join-schilder-einrichten) +5. [Spielmechanik erklärt](#spielmechanik-erklärt) +6. [Waffen](#waffen) +7. [Punkte-System](#punkte-system) +8. [Anti-Camp System](#anti-camp-system) +9. [Mod-Schutz (Minimap)](#mod-schutz-minimap) +10. [Scoreboard](#scoreboard) +11. [Spieler-Befehle](#spieler-befehle) +12. [Admin-Befehle](#admin-befehle) +13. [Berechtigungen](#berechtigungen) +14. [Vollständige config.yml](#vollständige-configyml) +15. [Nachrichten anpassen](#nachrichten-anpassen) +16. [Gespeicherte Dateien](#gespeicherte-dateien) +17. [Häufige Fragen & Probleme](#häufige-fragen--probleme) + +--- + +## Über das Plugin + +Lasertec ist ein **realistisches LaserTag-Minigame** das den echten LaserTag-Sport nachbildet: + +- Spieler kämpfen in **4 Teams** (Rot, Blau, Grün, Gelb) gegeneinander +- Wer getroffen wird, ist **gesperrt** und muss zur eigenen Basis zurücklaufen +- An der **Basis regeneriert** man sich und kann dann wieder schießen +- Gegnerische **Basen können beschossen** werden um Extra-Punkte zu erhalten +- Das Team mit den meisten Punkten nach Ablauf der Zeit gewinnt + +Das Plugin unterstützt **mehrere Arenen gleichzeitig** — jede Arena läuft als vollständig unabhängige Instanz. + +--- + +## Installation + +1. Lade die Datei `Lasertec-3.0.0.jar` herunter +2. Kopiere sie in den Ordner `plugins/` deines Servers +3. Starte den Server (oder gib `/reload confirm` ein) +4. Das Plugin erstellt automatisch den Ordner `plugins/Lasertec/` mit allen Konfigurationsdateien +5. Richte nun deine erste Arena ein (siehe nächster Abschnitt) + +> **Voraussetzung:** Spigot oder Paper 1.20.1. Keine weiteren Plugins notwendig. + +--- + +## Erste Schritte – Arena einrichten + +Eine Arena braucht für **jedes der vier Teams** mindestens einen Spawn-Punkt und einen Basis-Block. Folge dieser Reihenfolge: + +### Schritt 1 — Arena erstellen + +``` +/ltadmin create MeineArena +``` + +Ersetze `MeineArena` mit dem gewünschten Namen (keine Leerzeichen). Das Plugin bestätigt die Erstellung und zeigt dir die nächsten Schritte an. + +--- + +### Schritt 2 — Spawn-Punkte setzen + +Stelle dich an die gewünschte Startposition und tippe den Befehl. Du kannst pro Team **mehrere Spawn-Punkte** setzen — beim Respawn wird zufällig einer gewählt. + +``` +/ltadmin setspawn MeineArena red +/ltadmin setspawn MeineArena blue +/ltadmin setspawn MeineArena green +/ltadmin setspawn MeineArena yellow +``` + +Wiederhole jeden Befehl so oft du willst um weitere Spawn-Punkte hinzuzufügen. + +--- + +### Schritt 3 — Basen setzen + +Die Basis ist der Regenerationspunkt des Teams **und gleichzeitig** der Block den Gegner anschießen können. Stelle dich direkt **auf den Block** der die Basis werden soll und tippe: + +``` +/ltadmin setbase MeineArena red +/ltadmin setbase MeineArena blue +/ltadmin setbase MeineArena green +/ltadmin setbase MeineArena yellow +``` + +> **Wichtig:** Plane einen freien Block an jeder Basis ein. Beim Spielstart wird dort automatisch ein farbiges Glas-Block platziert (z.B. rotes Glas für Team Rot). Am Spielende wird er wieder entfernt. +> +> Empfehlung: Stelle die Basis mitten in oder direkt vor dem Teambereich, so dass Spieler kurze Wege beim Heilen haben. + +--- + +### Schritt 4 — Lobby setzen + +``` +/ltadmin setlobby +``` + +Hierher werden alle Spieler nach dem Spiel zurückgeführt. Stelle dich an den gewünschten Lobby-Spawn-Punkt. + +--- + +### Schritt 5 — Arena aktivieren + +``` +/ltadmin enable MeineArena +``` + +Das Plugin prüft ob alle Spawns und Basen gesetzt sind. Wenn etwas fehlt, siehst du eine genaue Fehlermeldung. Ist alles korrekt, ist die Arena sofort spielbereit. + +--- + +### Schritt 6 — Status prüfen + +``` +/ltadmin info MeineArena +``` + +Zeigt dir eine Übersicht aller gesetzten Spawns, Basen, den aktuellen Status und die Spieleranzahl. + +--- + +### Weitere Arenen + +Um eine zweite (oder dritte, vierte, ...) Arena hinzuzufügen, wiederhole einfach alle Schritte mit einem anderen Namen. Alle Arenen laufen gleichzeitig und völlig unabhängig voneinander. + +``` +/ltadmin create Arena2 +/ltadmin setspawn Arena2 red +... usw. +``` + +--- + +## Join-Schilder einrichten + +Spieler können Spielen beitreten indem sie ein Schild anklicken. Das Schild aktualisiert sich live mit dem aktuellen Status und der Spieleranzahl. + +### Schild erstellen + +1. Platziere ein normales Holzschild oder Wandschild +2. Schreibe auf **Zeile 1** exakt: `[Lasertec]` +3. Schreibe auf **Zeile 2** den Arenannamen (z.B. `MeineArena`) +4. Zeile 3 und 4 kannst du leer lassen — das Plugin füllt sie automatisch + +Nach dem Platzieren verwandelt das Plugin das Schild automatisch in: + +``` +┌────────────────────┐ +│ [LASERTEC] │ +│ MeineArena │ +│ Wartend │ +│ 0/16 │ +└────────────────────┘ +``` + +### Schild-Status + +| Anzeige | Bedeutung | +|---------|-----------| +| 🟢 Wartend | Spiel wartet auf Spieler, beitreten möglich | +| 🟡 Startet... | Countdown läuft, beitreten noch möglich | +| 🔴 Läuft | Spiel läuft, kein Beitritt mehr möglich | +| ⚫ Voll | Maximale Spieleranzahl erreicht | + +### Schild entfernen + +Einfach den Block abbauen (nur Admins können Lasertec-Schilder entfernen). + +### Mehrere Schilder + +Du kannst beliebig viele Schilder für jede Arena erstellen — zum Beispiel an verschiedenen Orten auf deinem Server. Alle Schilder werden in `signs.yml` gespeichert und funktionieren nach einem Server-Neustart weiter. + +--- + +## Spielmechanik erklärt + +### Ablauf eines Spiels + +``` +Spieler klicken Schild oder tippen /lt join + ↓ +Spieler werden ihren Teams zugewiesen (automatisch ausbalanciert) +Jeder erhält seine Team-Rüstung (farbiges Leder) und alle 4 Waffen + ↓ +Sobald genug Spieler da sind → Countdown (Standard: 10 Sekunden) + ↓ +Spiel startet → Basen-Blöcke erscheinen an den gesetzten Positionen + ↓ +Spieler schießen mit Rechtsklick auf Gegner und Gegner-Basen + ↓ +Nach der Spielzeit (Standard: 5 Minuten) → Ergebnis-Anzeige + ↓ +8 Sekunden Ergebnis → automatischer Reset → nächste Runde +``` + +--- + +### Die Treffer-Mechanik (Kern des Spiels) + +Das ist das Herzstück von Lasertec — genau wie beim echten LaserTag: + +**Wenn ein Spieler getroffen wird:** +- Er kann sofort **nicht mehr schießen** +- Sein Status wechselt zu „☠ GETROFFEN" +- Die Action-Bar zeigt: `☠ GETROFFEN – Zur [Team]-Basis! (XXm)` +- Er muss zu seiner **eigenen Basis** laufen + +**An der Basis:** +- Der Spieler muss sich **innerhalb von 4 Blöcken** um den Basis-Block befinden +- Die Heilung startet automatisch und dauert 2 Sekunden +- Ein Fortschrittsbalken in der Action-Bar zeigt den Heilungsfortschritt +- **Läuft der Spieler weg bevor die Heilung abgeschlossen ist, wird sie abgebrochen!** + +**Nach der Heilung:** +- Der Spieler ist wieder aktiv und kann schießen +- Kurze Unverwundbarkeit (3 Sekunden) schützt vor sofortigem Wiederabschuss + +--- + +### Basen angreifen + +Jede Basis ist durch einen **farbigen Glas-Block** markiert. Gegner können diesen Block mit ihrer Waffe anschießen: + +- Jeder Treffer bringt **60 Punkte** (einstellbar) +- Alle Mitglieder des angegriffenen Teams erhalten eine **Warnung** +- Der Block verändert sich optisch mit zunehmendem Schaden: + - Volle HP: Farbiges **Glas** (z.B. Rotes Glas) + - Halbe HP: **Wolle** in Teamfarbe + - Zerstört: **Obsidian** +- Nach 5 Treffern (einstellbar) ist die Basis **zerstört** → 200 Bonus-Punkte + +--- + +### Teams + +Das Plugin verteilt Spieler automatisch gleichmäßig auf die vier Teams: + +| Team | Rüstungsfarbe | Basis-Block | +|------|--------------|-------------| +| 🔴 Rot | Rotes Leder | Rotes Glas | +| 🔵 Blau | Blaues Leder | Blaues Glas | +| 🟢 Grün | Grünes Leder | Grünes Glas | +| 🟡 Gelb | Gelbes Leder | Gelbes Glas | + +--- + +## Waffen + +Jeder Spieler erhält beim Spielstart **alle vier Waffen** gleichzeitig in der Hotbar. Wechseln per Mausrad, schießen per **Rechtsklick**. + +### Laser-Pistole (Slot 1) +- **Schaden:** 25 pro Treffer (4 Treffer für einen Kill) +- **Reichweite:** 30 Blöcke +- **Cooldown:** 0,3 Sekunden +- **Laserstrahl:** Weißer Partikel-Strahl +- **Ideal für:** Allgemeine Kämpfe, mittlere Distanz + +### Laser-Sniper (Slot 2) +- **Schaden:** 80 pro Treffer (2 Treffer für einen Kill) +- **Reichweite:** 60 Blöcke +- **Cooldown:** 2,0 Sekunden +- **Laserstrahl:** Violetter Partikel-Strahl +- **Ideal für:** Lange Distanzen, Basis-Angriffe aus der Ferne + +### Laser-Shotgun (Slot 3) +- **Schaden:** 20 pro Pellet × 5 Pellets gleichzeitig +- **Reichweite:** 12 Blöcke +- **Cooldown:** 0,9 Sekunden +- **Laserstrahl:** 5 orangene Partikel-Strahlen mit Streuung +- **Ideal für:** Enge Gänge, kurze Distanz + +### Rapid-Fire (Slot 4) +- **Schaden:** 12 pro Treffer (ca. 9 Treffer für einen Kill) +- **Reichweite:** 22 Blöcke +- **Cooldown:** 0,12 Sekunden +- **Laserstrahl:** Grüner Partikel-Strahl +- **Ideal für:** Dauerbeschuss, den Gegner unter Druck setzen + +> Alle Waffen-Werte (Schaden, Reichweite, Cooldown) können in der `config.yml` angepasst werden. + +--- + +## Punkte-System + +### Punkte verdienen + +| Aktion | Punkte | +|--------|--------| +| Gegner treffen (Kill) | +100 | +| Gegner-Basis anschießen | +60 | +| Gegner-Basis zerstören (Bonus) | +200 | +| 3er Kill-Serie Bonus | +50 | +| 5er Kill-Serie Bonus | +100 | +| 10er Kill-Serie Bonus | +250 | + +### Punkte verlieren + +| Aktion | Punkte | +|--------|--------| +| Campen (Anti-Camp Strafe) | −10 pro Sekunde | + +### Kill-Serien + +Wenn du mehrere Gegner hintereinander triffst ohne selbst getroffen zu werden, wird eine Kill-Serie gestartet: + +- **3 in Folge:** `§6TRIPLE KILL!` — Ankündigung an alle + 50 Bonus-Punkte +- **5 in Folge:** `§bPENTA KILL!` — Ankündigung an alle + 100 Bonus-Punkte +- **10 in Folge:** `§5§lGODLIKE!` — Ankündigung an alle + 250 Bonus-Punkte + +Die Serie wird zurückgesetzt wenn man selbst getroffen wird. + +### Spielende + +Das Team mit den meisten **Gesamt-Punkten** (Kills + Basis-Angriffe) gewinnt. Bei Gleichstand wird „Unentschieden" angezeigt. Nach dem Spiel werden die Statistiken dauerhaft in `stats.yml` gespeichert. + +--- + +## Anti-Camp System + +Campen ist verboten. Das Plugin erkennt automatisch Spieler die sich zu lange nicht bewegen und bestraft sie. + +### Wie es funktioniert + +1. Das Plugin prüft jede Sekunde ob ein Spieler sich bewegt hat +2. Hat er sich weniger als **5 Blöcke** (einstellbar) bewegt, gilt das als „still stehen" +3. Nach **5 Sekunden** (einstellbar) Stillstand erscheint eine Warnung +4. Nach **15 Sekunden** (einstellbar) beginnt der Punkte-Abzug: **−10 Punkte pro Sekunde** + +### Ausnahmen (kein Anti-Camp) + +- Spieler die **getroffen wurden** und warten müssen → ausgenommen +- Spieler die sich **an ihrer Basis heilen** (innerhalb von 8 Blöcken) → ausgenommen + +### Einstellbare Modi + +In der `config.yml` unter `anti-camp.action` kannst du das Verhalten wählen: + +| Modus | Beschreibung | +|-------|-------------| +| `WARN_ONLY` | Nur Warnung, kein Punkte-Abzug | +| `WARN_THEN_PUNISH` | Warnung, dann Punkte-Abzug (Standard) | +| `PUNISH_ONLY` | Direkt Punkte-Abzug ohne vorherige Warnung | + +### Action-Bar Anzeige + +Wenn sich ein Spieler lange nicht bewegt, erscheint in der Action-Bar ein roter Fortschrittsbalken: +``` +Kills: 3 Punkte: 300 Team: Rot Zeit: 3:45 | Camp: ████░░ +``` +Der Balken füllt sich bis zur Strafe. + +--- + +## Mod-Schutz (Minimap) + +Das Plugin enthält Maßnahmen gegen Minimap-Mods wie **Xaero's Minimap**, **VoxelMap** und ähnliche. + +### Was das Plugin tut + +**Fog-of-War:** +Spieler die weiter als **48 Blöcke** (einstellbar) entfernt sind, werden für andere Spieler unsichtbar gemacht. Da Minimap-Mods nur sehen können was der Spieler selbst sieht, erscheinen diese Gegner **nicht auf der Karte**. Das eigene Team bleibt immer sichtbar. + +**Nametags verstecken:** +Die Spielernamen über den Köpfen der Gegner werden ausgeblendet. Mods die Spielernamen auf der Minimap anzeigen können diese damit nicht mehr lesen. + +**Tab-Liste anpassen:** +Die echten Spielernamen in der Tab-Liste werden durch Team-Tags ersetzt (z.B. `[R] SpielerName`). Das verhindert dass Mods Positionen über die Tab-Liste auslesen. + +### Was das Plugin nicht verhindern kann + +Ohne externe Bibliotheken (ProtocolLib) ist es technisch nicht möglich: +- Chunk-basierte Karten vollständig zu blockieren +- F3-Koordinaten zu verstecken (das ist clientseitig) +- Die Minimap komplett zu deaktivieren + +Für maximalen Schutz empfehlen wir zusätzlich ein **Anticheat-Plugin** sowie Serverregeln die Minimap-Mods ausdrücklich verbieten. + +### Einstellungen + +Alle Mod-Schutz-Optionen können in der `config.yml` unter `mod-protection` ein- und ausgeschaltet werden. Den aktuellen Status siehst du mit: + +``` +/ltadmin modinfo +``` + +--- + +## Scoreboard + +Das Scoreboard wird während des Spiels rechts im Bildschirm angezeigt und aktualisiert sich jede Sekunde. + +``` +╔═════════════════════╗ +║ ⚡ LASERTEC ║ +║ ─────────────────── ║ +║ ⏰ Zeit: 3:47 ║ +║ ─────────────────── ║ +║ Team-Punkte: ║ +║ ● Rot | 520pts |█████║ +║ ● Blau | 380pts |████░║ +║ ● Grün | 240pts |███░░║ +║ ● Gelb | 100pts |█░░░░║ +║ ─────────────────── ║ +║ Status: ✔ Aktiv ║ +║ Kills: 4 | Tode: 1 ║ +║ Punkte: 460 ║ +║ 🔥 Serie: ×4 ║ +║ ─────────────────── ║ +║ www.lasertec.de ║ +╚═════════════════════╝ +``` + +**Erklärung der Einträge:** + +- **Zeit** — Verbleibende Spielzeit +- **Team-Punkte** — Alle vier Teams sortiert nach Punkten mit Basis-HP-Balken +- **Status** — `✔ Aktiv` wenn spielbereit, `☠ Getroffen` oder `⚕ Heilend` wenn gesperrt +- **Kills / Tode** — Eigene Statistik in dieser Runde +- **Punkte** — Eigene Gesamtpunkte in dieser Runde +- **Serie** — Aktuelle Kill-Serie (erscheint nur ab 3 in Folge) + +--- + +## Spieler-Befehle + +| Befehl | Beschreibung | +|--------|-------------| +| `/lt join` | Tritt dem am besten gefüllten verfügbaren Spiel bei | +| `/lt join ` | Tritt einer bestimmten Arena bei | +| `/lt leave` | Verlässt das aktuelle Spiel | +| `/lt list` | Zeigt alle Arenen mit Status und Spieleranzahl | +| `/lt stats` | Zeigt deine persönlichen Gesamt-Statistiken | +| `/lt top` | Zeigt die Top-10 Spieler nach Gesamtpunkten | +| `/lt help` | Zeigt die Befehlsübersicht | + +**Aliase:** `/lasertec` und `/laser` funktionieren genauso wie `/lt` + +### Statistik-Anzeige (`/lt stats`) + +``` +════════════════════════════ + ⚡ DEINE STATISTIKEN +════════════════════════════ +Spiele gespielt: 47 +Kills gesamt: 312 +Tode gesamt: 198 +K/D-Ratio: 1.58 +Punkte gesamt: 34.750 +Beste Kill-Serie: 8 +Basis-Angriffe: 63 +════════════════════════════ +``` + +--- + +## Admin-Befehle + +Alle Admin-Befehle erfordern die Berechtigung `lasertec.admin` (Standard: OP). + +### Arena-Verwaltung + +| Befehl | Beschreibung | +|--------|-------------| +| `/ltadmin create ` | Erstellt eine neue Arena | +| `/ltadmin delete ` | Löscht eine Arena dauerhaft | +| `/ltadmin enable ` | Aktiviert eine fertig eingerichtete Arena | +| `/ltadmin disable ` | Deaktiviert eine Arena (Spieler können nicht mehr beitreten) | +| `/ltadmin info ` | Zeigt alle Details einer Arena (Spawns, Basen, Status) | + +### Spawn & Basis setzen + +| Befehl | Beschreibung | +|--------|-------------| +| `/ltadmin setspawn ` | Setzt einen Spawn-Punkt an deiner Position (Teams: `red`, `blue`, `green`, `yellow`) | +| `/ltadmin setbase ` | Setzt den Basis-Block an deiner Position | +| `/ltadmin setlobby` | Setzt den Lobby-Spawn an deiner Position | + +### Spiel-Steuerung + +| Befehl | Beschreibung | +|--------|-------------| +| `/ltadmin forcestart ` | Startet den Countdown oder das Spiel sofort | +| `/ltadmin forcestop ` | Beendet das laufende Spiel sofort | + +### Weitere Befehle + +| Befehl | Beschreibung | +|--------|-------------| +| `/ltadmin reload` | Lädt die `config.yml` neu (kein Server-Neustart nötig) | +| `/ltadmin modinfo` | Zeigt den Status des Mod-Schutzes und was er leistet | +| `/ltadmin signs` | Zeigt wie viele Join-Schilder registriert sind | +| `/ltadmin help` | Zeigt alle Admin-Befehle | + +--- + +## Berechtigungen + +| Permission | Standard | Beschreibung | +|-----------|---------|-------------| +| `lasertec.play` | Alle Spieler | Darf Spielen beitreten und Spieler-Befehle nutzen | +| `lasertec.admin` | OP | Darf alle Admin-Befehle nutzen und Schilder erstellen/entfernen | + +Berechtigungen können über jedes Permissions-Plugin (z.B. LuckPerms) vergeben werden: + +``` +# Beispiel LuckPerms — Spieler-Gruppe +/lp group default permission set lasertec.play true + +# Beispiel LuckPerms — Admin-Gruppe +/lp group admin permission set lasertec.admin true +``` + +--- + +## Vollständige config.yml + +Die Datei befindet sich unter `plugins/Lasertec/config.yml`. Nach Änderungen kannst du `/ltadmin reload` nutzen — **kein Server-Neustart erforderlich.** + +```yaml +# ============================================================ +# LASERTEC v3.0 — Vollständige Konfiguration +# Alle Werte hier können ohne Neustart geändert werden: +# /ltadmin reload +# ============================================================ + +# ── Allgemeines ────────────────────────────────────────────── +messages: + prefix: "§8[§b§lLASERTEC§8] §r" + +lobby: + location: null # Wird per /ltadmin setlobby gesetzt + +# ── Spiel-Grundeinstellungen ───────────────────────────────── +game: + game-duration: 300 # Spielzeit in Sekunden + countdown: 10 # Countdown-Sekunden vor Spielstart + min-players: 2 # Mindestspieler (alle Teams zusammen) + max-players-per-team: 4 # Max. Spieler pro Team (×4 = 16 gesamt) + end-display-time: 8 # Sekunden bis Reset nach Spielende + +# ── Respawn / Hit-Mechanik ─────────────────────────────────── +heal: + base-heal-time: 2 # Sekunden an der Basis zum Heilen + base-radius: 4.0 # Radius um Basis-Block zum Heilen (in Blöcken) + invincible-after-heal: true # Kurze Unverwundbarkeit nach Heilung + invincible-duration: 60 # Ticks Unverwundbarkeit (60 Ticks = 3 Sekunden) + +# ── Punkte-System ──────────────────────────────────────────── +scoring: + kill-points: 100 # Punkte für Treffer auf Gegner + base-attack-points: 60 # Punkte für Treffer auf Gegnerbasis + base-destroy-bonus: 200 # Bonus wenn Basis vollständig zerstört wird + streak-3-bonus: 50 # Extra-Punkte bei 3er Kill-Serie + streak-5-bonus: 100 # Extra-Punkte bei 5er Kill-Serie + streak-10-bonus: 250 # Extra-Punkte bei 10er Kill-Serie + +# ── Basen ──────────────────────────────────────────────────── +base: + health: 5 # Treffer bis Basis zerstört + warn-at-hp: 2 # Team warnen wenn Basis-HP auf diesen Wert fällt + regenerate: false # Basis-HP regenerieren während des Spiels? + regenerate-interval: 60 # Sekunden zwischen Regeneration (wenn aktiviert) + +# ── Anti-Camp System ───────────────────────────────────────── +anti-camp: + enabled: true + max-idle-seconds: 15 # Max. Sekunden an gleicher Stelle + idle-radius: 5.0 # Radius in Blöcken: weniger = "steht still" + action: WARN_THEN_PUNISH # WARN_ONLY | WARN_THEN_PUNISH | PUNISH_ONLY + warn-message: "§c⚠ CAMPEN VERBOTEN! Bewege dich oder verliere Punkte!" + score-penalty: 10 # Punkte-Abzug pro Sekunde beim Campen + warn-duration: 5 # Sekunden Warnung bevor Strafe beginnt + exclude-base-radius: 8.0 # Basisbereich von Anti-Camp ausschließen + warn-sound: BLOCK_NOTE_BLOCK_BASS + warn-sound-pitch: 0.5 + +# ── Minimap / Mod-Schutz ───────────────────────────────────── +mod-protection: + enabled: true + fog-of-war: true # Spieler außerhalb Radius unsichtbar machen + fog-radius: 48 # Sichtbarer Radius in Blöcken + arena-barrier: true + hide-coordinates: true + hide-from-tab: true # Spieler aus normaler Tab-Liste entfernen + hide-nametags: true # Spieler-Nametags im Spiel verbergen + strict-invisibility: true + +# ── Join-Schild ────────────────────────────────────────────── +join-sign: + trigger-line: "[Lasertec]" # Erste Zeile des Schilds (exakt so schreiben!) + color-waiting: "§a" # Grün = Wartend + color-starting: "§e" # Gelb = Startet + color-running: "§c" # Rot = Läuft + color-full: "§8" # Grau = Voll + update-interval: 20 # Schild-Update in Ticks (20 = 1 Sekunde) + +# ── Waffen ─────────────────────────────────────────────────── +weapons: + laser-gun: + enabled: true + display-name: "§b⚡ Laser-Pistole" + damage: 25 + range: 30 + cooldown-ms: 300 + pellets: 1 + particle: END_ROD + description: "Standard-Waffe. Zuverlässig & schnell." + + sniper: + enabled: true + display-name: "§5🎯 Laser-Sniper" + damage: 80 + range: 60 + cooldown-ms: 2000 + pellets: 1 + particle: DRAGON_BREATH + description: "Hoher Schaden, lange Reichweite." + + shotgun: + enabled: true + display-name: "§6💥 Laser-Shotgun" + damage: 20 + range: 12 + cooldown-ms: 900 + pellets: 5 + particle: FLAME + description: "5 Pellets gleichzeitig, kurze Reichweite." + + rapid-fire: + enabled: true + display-name: "§a⚡⚡ Rapid-Fire" + damage: 12 + range: 22 + cooldown-ms: 120 + pellets: 1 + particle: CRIT + description: "Niedrig Schaden, sehr hohe Feuerrate." + +# ── Sounds ─────────────────────────────────────────────────── +sounds: + enabled: true # Alle Sounds auf einmal an/aus + shoot: ENTITY_FIREWORK_ROCKET_BLAST + shoot-pitch: 1.8 + shoot-volume: 0.4 + hit-shooter: BLOCK_NOTE_BLOCK_BELL + hit-shooter-pitch: 2.0 + hit-victim: ENTITY_PLAYER_HURT + heal-start: BLOCK_ENCHANTMENT_TABLE_USE + heal-complete: ENTITY_EXPERIENCE_ORB_PICKUP + heal-complete-pitch: 1.5 + base-hit: ENTITY_GENERIC_EXPLODE + game-start: ENTITY_ENDER_DRAGON_GROWL + game-end: UI_TOAST_CHALLENGE_COMPLETE + countdown-tick: BLOCK_NOTE_BLOCK_PLING + warning: BLOCK_NOTE_BLOCK_BASS + streak-3: BLOCK_BELL_USE + streak-5: ENTITY_PLAYER_LEVELUP + streak-10: ENTITY_LIGHTNING_BOLT_THUNDER + +# ── Partikel ───────────────────────────────────────────────── +particles: + enabled: true # Alle Partikel auf einmal an/aus + laser-trail: true # Partikel-Strahl beim Schuss + hit-effect: true # Partikel-Explosion beim Treffer + hit-particle-count: 15 # Anzahl der Treffer-Partikel + base-hit-effect: true # Explosion-Partikel beim Basisangriff + heal-effect: true # Partikel beim Abschluss der Heilung + +# ── Scoreboard ─────────────────────────────────────────────── +scoreboard: + enabled: true + title: "§b§l⚡ LASERTEC" + show-team-scores: true + show-base-health: true + show-kill-streak: true # Nur bei Streak ≥ 3 anzeigen + show-player-status: true + update-interval: 20 # Ticks zwischen Updates +``` + +--- + +## Nachrichten anpassen + +Alle Spieler-Nachrichten können in der `config.yml` unter `text:` angepasst werden. Platzhalter werden automatisch ersetzt. + +| Schlüssel | Platzhalter | Beschreibung | +|-----------|------------|-------------| +| `join` | `{player}`, `{team}` | Wenn ein Spieler beitritt | +| `leave` | `{player}` | Wenn ein Spieler das Spiel verlässt | +| `game-start` | — | Spielstart-Ankündigung | +| `game-end` | `{team}` | Sieger-Ankündigung | +| `game-draw` | — | Bei Unentschieden | +| `hit-shooter` | `{victim}`, `{pts}`, `{streak}` | Nachricht an den Schützen | +| `hit-victim` | `{shooter}` | Nachricht an den Getroffenen | +| `heal-start` | `{secs}` | Heilung gestartet | +| `heal-interrupted` | — | Heilung abgebrochen | +| `heal-complete` | — | Heilung abgeschlossen | +| `base-attacked` | `{hp}`, `{max}` | Basis unter Beschuss | +| `base-destroyed` | `{team}` | Basis zerstört | +| `time-60` / `time-30` / `time-10` | — | Zeitmeldungen | +| `streak-3` / `streak-5` / `streak-10` | `{player}` | Kill-Serien | + +**Farb-Codes** werden mit `§` eingegeben (z.B. `§a` = Grün, `§c` = Rot, `§e` = Gelb, `§b` = Cyan, `§6` = Orange). + +--- + +## Gespeicherte Dateien + +Das Plugin legt folgende Dateien im Ordner `plugins/Lasertec/` an: + +| Datei | Inhalt | Wann bearbeiten | +|-------|--------|----------------| +| `config.yml` | Alle Spieleinstellungen | Jederzeit, dann `/ltadmin reload` | +| `arenas.yml` | Arena-Positionen (Spawns, Basen) | Wird automatisch gespeichert | +| `signs.yml` | Positionen aller Join-Schilder | Wird automatisch gespeichert | +| `stats.yml` | Spieler-Statistiken (dauerhaft) | Wird automatisch gespeichert | + +> **Achtung:** `arenas.yml` und `signs.yml` bitte nicht manuell bearbeiten, da die Positionen in einem speziellen Format gespeichert werden. Nutze stattdessen die Admin-Befehle. + +--- + +## Häufige Fragen & Probleme + +**„Arena nicht bereit" beim Aktivieren** +→ Tippe `/ltadmin info ` — das Plugin zeigt dir genau was noch fehlt. +Häufigste Ursache: Ein oder mehrere Teams haben noch keinen Spawn oder keine Basis gesetzt. + +--- + +**Spieler können der Arena nicht beitreten** +→ Prüfe mit `/lt list` ob die Arena als `✔ Aktiv` angezeigt wird. +→ Stelle sicher dass du `/ltadmin enable ` ausgeführt hast. +→ Prüfe ob die maximale Spieleranzahl bereits erreicht ist. + +--- + +**Der Basis-Block erscheint nicht beim Spielstart** +→ Das ist kein Fehler — der Block erscheint nur wenn das Spiel **aktiv läuft**, nicht beim Setup. +→ Stelle sicher dass der Bereich an der Basis-Position nicht durch andere Blöcke blockiert wird. + +--- + +**Spieler heilen nicht an der Basis** +→ Der Spieler muss sich innerhalb von **4 Blöcken** (einstellbar: `heal.base-radius`) um den gesetzten Basis-Punkt befinden. +→ Prüfe mit `/ltadmin info ` ob die Basis korrekt gesetzt ist. +→ Die Heilung bricht ab wenn der Spieler sich zu weit entfernt — er muss stillhalten. + +--- + +**Anti-Camp bestraft Spieler an der Basis** +→ Erhöhe den Wert `anti-camp.exclude-base-radius` in der `config.yml`. Standard ist 8 Blöcke. Stelle sicher dass dieser Radius größer als `heal.base-radius` ist. + +--- + +**Das Schild wird nicht erkannt** +→ Zeile 1 muss exakt `[Lasertec]` lauten (Groß-/Kleinschreibung egal, aber Klammern und Schreibweise müssen stimmen). +→ Zeile 2 muss exakt den Arenannamen enthalten, wie er mit `/ltadmin create` angelegt wurde. +→ Der Spieler der das Schild erstellt muss die Berechtigung `lasertec.admin` haben. + +--- + +**Änderungen in der config.yml wirken nicht** +→ Führe `/ltadmin reload` aus. Laufende Spiele übernehmen neue Werte erst bei der nächsten Runde. + +--- + +**Spieler verlassen das Spiel nicht richtig (Inventar bleibt)** +→ Das Inventar wird beim Verlassen (`/lt leave`) oder bei Server-Disconnect automatisch wiederhergestellt. +→ Sollte das nicht klappen: `/ltadmin forcestop ` beendet das Spiel für alle Spieler sofort. + +--- + +*Lasertec v1.0.0 — Spigot / Paper 1.20.1* \ No newline at end of file