Files
Fussball/README.md
2026-02-27 14:08:20 +00:00

503 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ⚽ Fußball Plugin — Vollständiges Minecraft Fußball-Minigame
Ein professionelles Fußball-Plugin für Spigot/Paper 1.21+ mit echtem Ball-Physics, Spielregeln und persistenten Statistiken.
---
## 📦 Installation
1. **Java 21+** und **Spigot/Paper 1.21.x** wird benötigt
2. Plugin bauen: `mvn package``target/Fussball.jar`
3. JAR in den `/plugins/` Ordner deines Servers kopieren
4. Server (neu)starten
5. *(Optional)* [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) installieren für `%fussball_...%` Platzhalter
---
## 🎮 Features
| Feature | Beschreibung |
|---|---|
| ⚽ Echter Ball | ArmorStand mit Fußball-Textur, Physik & Reibung |
| 👥 Teams | Automatische Team-Zuweisung mit Auto-Balance (Rot vs. Blau) |
| 👕 Team-Rüstung | Spieler erhalten farbige Leder-Rüstung (Rot/Blau), Torwart bekommt orangefarbenes/hellblaues Trikot |
| 🥅 Tor-Erkennung | Region-basierte Tore mit Trajectory-Check (Schritt-für-Schritt Bahnverfolgung) |
| 🎉 Tor-Effekte | Feuerwerk, Titel, Action-Bar Tor-Replay, Sound |
| 📊 Scoreboard | Live-Spielstand, Zeit, Halbzeit-Anzeige, farbige Team-Namen über Kopf |
| 🔴 BossBar | Timer mit Farbwechsel (grün→gelb→rot) + Spielstand, Halbzeit-Label |
| ⏸ Halbzeit | 30s Pause nach der 1. Halbzeit + Seitenwechsel, danach 2. Halbzeit |
| ⏰ Verlängerung | 10 Minuten extra bei Gleichstand (Golden Goal wer zuerst trifft gewinnt) |
| 🥊 Elfmeterschießen | 5 Runden pro Team, Early-Termination, Sudden Death |
| 💪 Aufladbarer Schuss | Shift halten = Power aufbauen (0100%), Action-Bar zeigt Ladestand |
| 🔁 Aus-Erkennung | Einwurf / Ecke / Abstoß je nach Situation und letzter Berührung |
| 🚩 Abseits | Automatische Abseits-Erkennung mit Freistoß-Folge |
| 🤲 Torwart-Mechanik | Ball halten, fallen lassen oder werfen; Rückpass-Regel wird durchgesetzt |
| ⚠️ Foul-Erkennung | PvP-Angriffe = Foul; Gelbe/Rote Karte; Foul im Strafraum = Elfmeter |
| 🎯 Freistoß | Mindestabstand für Gegner wird aktiv durchgesetzt (Schubsen) |
| 🦾 Kopfball | Automatische Erkennung wenn Spieler in der Luft den Ball auf Kopfhöhe berührt |
| 📏 Eigentor-Erkennung | Wird separat gewertet und in Statistik gespeichert |
| 🏅 Assist-Erkennung | Vorlage (zweite Berührung vor dem Tor) wird automatisch erkannt |
| ⏱ Nachspielzeit | Wird bei Toren, Fouls, Karten und Aus-Situationen automatisch angesammelt |
| 🏟 Strafraum | Auto-berechnet aus Tor-Koordinaten oder manuell setzbar |
| 📋 Matchbericht | Minutengenaue Tore, Karten, Fouls und Abseits am Spielende |
| 🏆 MVP-System | Bester Torschütze wird nach dem Spiel bekannt gegeben |
| 📈 Persistente Stats | Tore, Eigentore, Vorlagen, Schüsse, Siege, Niederlagen, Siegquote |
| 🔢 Warteschlange | Automatische Queue wenn Arena voll; nächster Spieler rückt nach |
| 👀 Zuschauer-Modus | Spectator-Mode mit BossBar, Scoreboard und Team-Chat-Empfang |
| 💬 Team-Chat | Nachrichten nur ans eigene Team; Admins können global broadcasten |
| 🚪 Schilder | Join-Schilder mit Live-Status und automatischer Aktualisierung |
| 🏷 PlaceholderAPI | `%fussball_goals%`, `%fussball_wins%` etc. für andere Plugins |
| 🛡 Anti-Grief | Kein Block-Abbauen/-Platzieren, kein Item-Drop/-Pickup im Spiel |
| 💊 God-Mode | Spieler sterben nicht, Hunger eingefroren, Respawn an Team-Spawn |
| 🔧 Debug-Befehl | Region-Visualisierung, Ball-Position, Aus-Seite für Admins |
---
## 🔧 Arena Setup (Schritt für Schritt)
### 1. Arena erstellen
```
/fb create StadionXL
```
### 2. Grundpositionen setzen
Gehe jeweils an die gewünschte Stelle und führe den Befehl aus:
```
/fb setup StadionXL lobby → Lobby-Wartebereich (Spieler landen hier beim Joinen/Verlassen)
/fb setup StadionXL center → Mittelpunkt des Spielfeldes
/fb setup StadionXL ballspawn → Wo der Ball erscheint (Anstoss-Punkt, Mitte)
/fb setup StadionXL redspawn → Startposition rotes Team
/fb setup StadionXL bluespawn → Startposition blaues Team
```
### 3. Tore definieren (je 2 diagonal gegenüberliegende Ecken)
```
# Rotes Tor
/fb setup StadionXL redgoalmin → Untere Ecke des roten Tors
/fb setup StadionXL redgoalmax → Obere gegenüberliegende Ecke
# Blaues Tor
/fb setup StadionXL bluegoalmin → Untere Ecke des blauen Tors
/fb setup StadionXL bluegoalmax → Obere gegenüberliegende Ecke
```
> **Hinweis:** Tor-Erkennung prüft X, Y und Z (3D). Die Tore müssen mindestens so hoch sein wie der Ball (ArmorStand-Helm) fliegen kann mindestens 2 Blöcke Höhe empfohlen.
### 4. Spielfeld-Grenzen setzen *(optional, aber empfohlen)*
Ohne Feldgrenzen gibt es keine Aus-Erkennung (Einwurf/Ecke/Abstoß) und keine Spieler-Grenzkontrolle.
```
/fb setup StadionXL fieldmin → Eine Ecke des Spielfelds
/fb setup StadionXL fieldmax → Die gegenüberliegende Ecke
```
### 5. Strafräume setzen *(optional)*
Wenn nicht gesetzt, werden die Strafräume **automatisch** aus den Tor-Koordinaten berechnet (Tiefe und Rand sind in `config.yml` einstellbar). Für mehr Kontrolle können sie manuell gesetzt werden:
```
/fb setup StadionXL redpenaltymin → Untere Ecke des roten Strafraums
/fb setup StadionXL redpenaltymax → Obere gegenüberliegende Ecke
/fb setup StadionXL bluepenaltymin → Untere Ecke des blauen Strafraums
/fb setup StadionXL bluepenaltymax → Obere gegenüberliegende Ecke
```
### 6. Elfmeter-Punkte setzen *(optional)*
Wenn nicht gesetzt, wird `ballspawn` als Elfmeter-Ausführungsort verwendet. Für realistische Strafstoß-Positionen:
```
/fb setup StadionXL redpenaltyspot → Elfmeter-Punkt vor dem roten Tor
/fb setup StadionXL bluepenaltyspot → Elfmeter-Punkt vor dem blauen Tor
```
### 7. Spieler-Einstellungen anpassen *(optional)*
```
/fb setup StadionXL minplayers 2 → Mindestanzahl zum Starten (Standard: 2)
/fb setup StadionXL maxplayers 10 → Maximale Spielerzahl (Standard: 10)
/fb setup StadionXL duration 300 → Spielzeit in Sekunden, 1. + 2. Halbzeit zusammen (Standard: 300)
```
### 8. Setup überprüfen
```
/fb setup StadionXL info
```
Alle Pflichtfelder müssen **§a✔** zeigen. Erst dann ist die Arena spielbereit.
**Pflichtfelder:** `lobby`, `center`, `ballspawn`, `redspawn`, `bluespawn`, `redgoalmin`, `redgoalmax`, `bluegoalmin`, `bluegoalmax`
**Optionale Felder:** `fieldmin`/`fieldmax` (Aus-Erkennung), `redpenaltymin/max` und `bluepenaltymin/max` (Strafraum), `redpenaltyspot`/`bluepenaltyspot` (Elfmeter-Punkte)
---
## 📋 Alle Commands
### Spieler-Commands
| Command | Beschreibung |
|---|---|
| `/fb join <arena>` | Einem Spiel beitreten (bei voller Arena → Warteschlange) |
| `/fb leave` | Spiel verlassen / Zuschauen beenden / Warteschlange verlassen |
| `/fb spectate <arena>` | Einem laufenden Spiel als Zuschauer beiwohnen |
| `/fb spec <arena>` | Alias für `spectate` |
| `/fb list` | Alle Arenen mit Status und Spieleranzahl anzeigen |
| `/fb stats [spieler]` | Eigene oder fremde Statistiken anzeigen (inkl. laufendes Spiel) |
| `/fb top goals` | Top 10 Torschützen |
| `/fb top wins` | Top 10 nach Siegen (inkl. Siegquote %) |
| `/fb top kicks` | Top 10 nach Anzahl Schüssen |
| `/fb`, `/soccer` | Aliase für `/fussball` |
### Admin-Commands *(Berechtigung: `fussball.admin`)*
| Command | Beschreibung |
|---|---|
| `/fb create <name>` | Neue Arena erstellen |
| `/fb delete <name>` | Arena löschen |
| `/fb setup <arena> <option>` | Arena konfigurieren (siehe Setup-Guide) |
| `/fb setup <arena> info` | Alle gesetzten Positionen und Status anzeigen |
| `/fb stop <arena>` | Laufendes Spiel sofort beenden |
| `/fb setgk <arena> <spieler>` | Torwart eines laufenden Spiels manuell neu zuweisen |
| `/fb debug <arena>` | Tor-/Feld-Regionen, Ball-Position und Aus-Seite debuggen |
Alle Commands unterstützen **Tab-Completion** für Arena-Namen und Optionen.
---
## 🎮 Spielablauf
```
Spieler joinen per Schild oder /fb join
→ Countdown startet (10 Sek.) bricht ab bei zu wenig Spielern
→ Spieler teleportieren zu Team-Spawns
→ 5-Sekunden-Countdown mit Positions-Aufforderung
→ Fußball erscheint in der Mitte, Schonfrist von 3s
── 1. HALBZEIT ──────────────────────────────────────────
Spieler laufen gegen den Ball → automatischer Kick
Shift halten → Schuss lädt auf → loslassen = Powerschuss
Ball ins Tor → Punkt! (Feuerwerk + Pause + Anstoß für gegnerisches Team)
Bei Aus → Einwurf / Ecke / Abstoß je nach Situation
Fouls, Karten, Abseits, Freistöße laufen automatisch
── HALBZEIT-PAUSE (30 Sek.) ─────────────────────────────
Spielstand wird angezeigt
Seiten werden getauscht (Teams spielen in die andere Richtung)
── 2. HALBZEIT ──────────────────────────────────────────
Weitere 5-Sekunden-Countdown, dann Anstoß
Spielzeit läuft ab...
── BEI GLEICHSTAND: VERLÄNGERUNG (10 Min.) ──────────────
Golden Goal: Wer zuerst trifft, gewinnt sofort
Bei weiterem Gleichstand...
── ELFMETER-SCHIEßEN ────────────────────────────────────
5 Schüsse pro Team (abwechselnd, beginnend mit Rot)
Schütze hat 15 Sekunden pro Versuch
Early-Termination wenn Ergebnis mathematisch feststeht
Dann: Sudden Death (je 1 Schuss) bis zur Entscheidung
── SPIELENDE ────────────────────────────────────────────
Matchbericht mit minutengenauen Ereignissen
Sieger + MVP werden bekannt gegeben
Statistiken werden gespeichert
Alle zurück zur Lobby (nach 5 Sek.)
```
---
## 💪 Aufladbarer Schuss
| Aktion | Effekt |
|---|---|
| Rechtsklick auf Ball | Normaler Schuss |
| Linksklick auf Ball | Normaler Schuss |
| Sprinten + Rechtsklick | Schuss mit 1,8× Kraft |
| **Shift halten** (max 1,5s) | Schuss lädt auf |
| Shift loslassen | Schuss mit aufgebauter Power |
| 100% Ladung erreicht | Auto-Fire |
Die Action-Bar zeigt den Ladefortschritt:
```
⚽ Schuss-Power: ████████░░ 80%
```
Ab 70% Ladung erscheinen Feuer-Partikel am Ball. Voller Schuss = 3,8× Kraft + mehr Loft + höherer Ton.
**Power-Schwellwert-Übersicht:**
- < 40% → grüne Balken
- 4080% → gelbe Balken
- > 80% → rote Balken + Feuer-Partikel bei 70%+
---
## 🤲 Torwart-System
Der erste Spieler jedes Teams wird automatisch als Torwart bestimmt und erhält ein spezielles andersfarbiges Trikot (Orange/Hellblau). Admins können den Torwart jederzeit mit `/fb setgk <arena> <spieler>` manuell neu zuweisen.
**Torwart-Aktionen:**
| Aktion | Effekt |
|---|---|
| Rechtsklick auf Ball (nah am Tor) | Ball halten Ball folgt dem TW |
| Zweiter Rechtsklick (Ball gehalten) | Ball werfen |
| Shift loslassen (Ball gehalten) | Ball werfen |
**Regeln:**
- Ball kann nur innerhalb von **2 Blöcken um das eigene Tor** gehalten werden
- Ball kann nur in der **eigenen Hälfte** gehalten werden
- **Rückpass-Regel**: Hat ein Mitspieler den Ball direkt mit dem Fuß zugespielt (kein Kopfball), darf der Torwart den Ball **nicht** mit den Händen nehmen
---
## 🚩 Spielregeln
### Aus-Erkennung
Das Plugin unterscheidet automatisch zwischen den drei Aus-Situationen:
| Situation | Bedingung | Folge |
|---|---|---|
| **Einwurf** | Ball verlässt die Seitenlinie | Gegnerisches Team hat den Einwurf |
| **Ecke** | Verteidigendes Team spielt Ball über die eigene Grundlinie | Angreifendes Team bekommt Ecke |
| **Abstoß** | Angreifendes Team spielt Ball über die gegnerische Grundlinie | Verteidigendes Team bekommt Abstoß |
### Abseits
Automatische Abseits-Erkennung bei jedem Schuss. Ein Spieler steht im Abseits wenn:
- Er sich in der gegnerischen Hälfte befindet
- Er hinter dem vorletzten Verteidiger steht
- Er weiter in Richtung gegnerisches Tor steht als der Ball beim Schuss
Bei Abseits: Sofortige Spielunterbrechung, Freistoß für das verteidigende Team.
### Fouls & Karten
Trifft ein Spieler den Gegner (Angriff oder Projektil), wird dies als Foul gewertet:
| Situation | Folge |
|---|---|
| Normales Foul | Gelbe Karte + Freistoß für das gefoulte Team |
| 2. Gelbe Karte | Gelb-Rot → Disqualifikation |
| Grobes Foulspiel (hoher Schaden ≥ 8♥) | Sofortige Rote Karte + Disqualifikation |
| Foul im Strafraum | Elfmeter für das gefoulte Team |
Kein PvP-Schaden der Angriff wird gecancelt, nur das Regelspiel greift.
### Spielfeldgrenzen
Spieler die das Spielfeld verlassen (über die in `fieldmin/fieldmax` definierte Grenze + Toleranz) erhalten einen Countdown-Alarm. Bei Ablauf des Countdowns werden sie disqualifiziert.
---
## ⏱ Nachspielzeit
Nachspielzeit wird automatisch in folgenden Situationen angesammelt und nach der regulären Spielzeit zur ersten/zweiten Halbzeit angehängt:
| Ereignis | Sekunden |
|---|---|
| Tor | +30s (konfigurierbar) |
| Gelb-Rote / Rote Karte | +15s |
| Foul | +5s |
| Ball im Aus | +3s |
Die angesammelte Nachspielzeit wird als `+N'` in der BossBar und im Scoreboard angezeigt.
---
## 💬 Team-Chat
Spieler im Spiel schreiben automatisch nur ans eigene Team:
```
§c[ROT] §fSpielerName§7: Ich stehe frei links!
§9[BLAU] §fAndereSpieler§7: Auf mich!
```
- **`!Nachricht`** → Global-Broadcast an alle Spieler im Spiel (nur Admins, benötigt `fussball.admin`)
- Zuschauer sehen alle Team-Chats mit `[Zuschauer]`-Label
- Chat wird nur an Team-Mitglieder zugestellt kein Leck zum anderen Team
---
## 🚪 Join-Schilder erstellen
1. Schild platzieren
2. In die erste Zeile **`[Fussball]`** schreiben (benötigt `fussball.admin`)
3. In die zweite Zeile den Arena-Namen schreiben
4. Rechtsklick auf das fertige Schild → Spiel beitreten
Das Schild wird automatisch formatiert und aktualisiert:
```
[⚽]
StadionXL
§c● 4/10
Klick zum Joinen
```
**Status-Farben:**
| Symbol | Bedeutung |
|---|---|
| `§a●` grün | Arena wartet auf Spieler |
| `§e●` gelb | Countdown läuft |
| `§c●` rot | Spiel läuft / Tor-Pause |
| `§6●` orange | Halbzeit / Verlängerung / Elfmeter |
| `§7●` grau | Spiel wird beendet |
Schilder überleben Server-Neustarts (gespeichert in `signs.yml`). Beim Abbauen eines Schilds wird es automatisch aus der Liste entfernt.
---
## 📈 Statistiken & Bestenliste
```
/fb stats → Eigene Statistiken
/fb stats Notch → Statistiken von "Notch"
/fb top goals → Top 10 Torschützen
/fb top wins → Top 10 nach Siegen (inkl. Siegquote)
/fb top kicks → Top 10 nach Anzahl Schüssen
```
**Gespeicherte Werte pro Spieler:**
| Wert | Beschreibung |
|---|---|
| ⚽ Tore | Erzielte Tore gesamt |
| 🅾 Eigentore | Eigentore (separat gewertet) |
| 🎯 Vorlagen | Assists (Ballberührung direkt vor dem Tor) |
| 👟 Schüsse | Alle Ball-Berührungen (Kicks, Kopfbälle etc.) |
| 🏆 Siege | Gewonnene Spiele |
| ❌ Niederlagen | Verlorene Spiele |
| Unentschieden | Unentschiedene Spiele |
| 📊 Gespielte Spiele | Gesamtanzahl Spiele |
| 📈 Siegquote | Siege / Spiele × 100 % |
Alle Daten werden in `plugins/Fussball/stats.yml` dauerhaft gespeichert. Bei `/fb stats` wird der aktuelle Spielstand aus einem laufenden Spiel auch direkt angezeigt.
---
## 🏷 PlaceholderAPI
Wenn PlaceholderAPI installiert ist, sind folgende Platzhalter verfügbar:
| Platzhalter | Wert |
|---|---|
| `%fussball_goals%` | Tore gesamt |
| `%fussball_kicks%` | Schüsse gesamt |
| `%fussball_wins%` | Siege gesamt |
| `%fussball_losses%` | Niederlagen gesamt |
| `%fussball_draws%` | Unentschieden gesamt |
| `%fussball_games%` | Gespielte Spiele |
| `%fussball_winrate%` | Siegquote (z.B. `67.5`) |
| `%fussball_ingame%` | `true` / `false` |
| `%fussball_arena%` | Name der aktuellen Arena oder `` |
| `%fussball_score%` | Aktueller Spielstand z.B. `2 : 1` oder `` |
---
## 🔑 Berechtigungen
| Permission | Beschreibung | Standard |
|---|---|---|
| `fussball.admin` | Alle Admin-Commands (create, delete, setup, stop, setgk, debug, Schilder, Global-Chat) | OP |
| `fussball.play` | Spielen, Zuschauen, Stats anzeigen | Alle |
---
## ⚙ config.yml Alle Einstellungen
```yaml
defaults:
min-players: 2 # Mindestspielerzahl für den Start
max-players: 10 # Maximale Spielerzahl pro Arena
game-duration: 300 # Gesamtspielzeit in Sekunden (beide Halbzeiten zusammen)
ball:
kick-power: 1.1 # Kraft eines normalen Schusses
sprint-kick-power: 1.8 # Kraft beim Sprint-Schuss
kick-vertical: 0.3 # Vertikale Komponente (Loft) beim Schuss
charged-min-power: 1.3 # Minimale Kraft beim aufgeladenen Schuss
charged-max-power: 3.8 # Maximale Kraft beim voll aufgeladenen Schuss
gameplay:
offside-enabled: true # Abseits an/aus
foul-detection-enabled: true # Foul-Erkennung an/aus
freekick-distance: 5.0 # Mindestabstand Gegner beim Freistoß (Blöcke)
freekick-duration: 600 # Ticks bis Freistoß automatisch freigegeben wird
goalkeeper-hold-range: 2.5 # Wie nah der TW am Ball sein muss um ihn zu halten
goalkeeper-throw-power: 1.8 # Wurfstärke des TW
out-of-bounds-tolerance: 2.0 # Toleranz außerhalb Spielfeld (Blöcke) bevor Warnung
out-of-bounds-countdown: 5 # Sekunden bis Disqualifikation bei Feldverlassen
# Strafraum (wenn keine manuellen Punkte gesetzt)
penalty-area-depth: 16 # Tiefe des Strafraums in Richtung Spielfeldmitte
penalty-area-margin: 6 # Seitliche Ausdehnung über die Torpfosten hinaus
# Kopfball
header-range: 1.8 # Max. Abstand Spieler→Ball für Kopfball
header-min-height: 0.8 # Min. Ballhöhe über Spielerfüßen
header-max-height: 2.3 # Max. Ballhöhe über Spielerfüßen
header-power: 1.3 # Kopfball-Stärke
header-cooldown: 10 # Ticks Abklingzeit zwischen zwei Kopfbällen
# Nachspielzeit
injury-time-enabled: true
injury-time-per-goal: 30 # Sekunden Nachspielzeit pro Tor
injury-time-per-card: 15 # Sekunden pro Karte
injury-time-per-foul: 5 # Sekunden pro Foul
injury-time-per-out: 3 # Sekunden pro Aus-Situation
```
Alle `messages`-Einträge in der `config.yml` sind ebenfalls vollständig anpassbar. Verfügbare Platzhalter in Nachrichten: `{player}`, `{team}`, `{score}`, `{time}`, `{reason}`, `{n}`, `{max}`.
---
## 📁 Dateistruktur
```
plugins/Fussball/
├── config.yml → Plugin-Einstellungen, Ball-Power, Nachrichten
├── arenas.yml → Gespeicherte Arenen (auto-generiert)
├── signs.yml → Gespeicherte Join-Schilder (auto-generiert)
└── stats.yml → Spieler-Statistiken (auto-generiert)
```
---
## 🏟 Tipps für ein gutes Spielfeld
- **Feldgröße:** Mindestens **30×20 Blöcke** empfohlen (größer = mehr Spaß)
- **Tore:** Ca. **5 Blöcke breit, 3 Blöcke hoch** genug Platz für den ArmorStand-Ball; mindestens **2 Blöcke breit** da der Ball sonst stecken bleiben kann
- **Tortiefe:** Mindestens **2 Blöcke tief** damit `redgoalmin`/`redgoalmax` ein echtes Volumen ergeben und Tor-Erkennung sauber funktioniert
- **Boden:** Gras, Terrakotta oder Smaragd-Blöcke für Optik
- **Begrenzung:** Zäune, Mauern oder Glas als Spielfeld-Rand
- **`fieldmin/fieldmax` immer setzen!** Sonst gibt es weder Aus-Erkennung noch Spieler-Feldgrenzenkontrolle
- **Lobby außerhalb** des Spielfelds platzieren, damit Spieler nach dem Spiel nicht auf dem Feld stehen
- **`ballspawn` genau in die Mitte** er ist gleichzeitig der Anstoßpunkt und der Spawn nach einem Tor
- **`redpenaltyspot` / `bluepenaltyspot` setzen** für realistische Elfmeter-Positionen ca. 11 Meter vor dem jeweiligen Tor
---
## 📣 Matchbericht
Nach jedem Spiel wird automatisch ein Matchbericht ausgegeben, der minutengenau auflistet:
- **Tore** (mit Torschütze, ggf. Vorlage und Eigentor-Markierung)
- **Karten** (Gelb, Gelb-Rot, Rot mit Grund)
- **Fouls** (Fouler → Geopferter)
- **Abseits-Situationen**
- **MVP** (Spieler mit den meisten Toren)
---
## ⚙ Kompatibilität
| Anforderung | Version |
|---|---|
| Spigot / Paper | **1.21.x** |
| Java | **21+** |
| PlaceholderAPI | optional, jede Version |
Mehrere Arenen können gleichzeitig laufen und arbeiten vollständig unabhängig voneinander.
---
## 🐛 Bekannte Eigenheiten
- Der Ball ist ein **ArmorStand** er kann in engen Durchgängen (< 1 Block) stecken bleiben. Tore daher mindestens **2 Blöcke breit** bauen. Ein automatischer Respawn greift nach 4 Sekunden falls der Ball verschwindet.
- Spieler müssen im **Adventure-Mode** sein externe Plugins die den Spielmodus ändern, können das Spiel stören.
- Die Halbzeit teilt die `duration`-Einstellung in zwei gleiche Hälften. `duration: 300` = 2× 2:30 Minuten.
- **Abseits** erfordert `fieldmin`/`fieldmax` **nicht**, aber die Feld-Achse wird aus den Tor-Koordinaten berechnet. Ohne korrekt platzierte Tore ist Abseits deaktiviert.
- **Strafraum-Elfmeter:** Ohne gesetzte `redpenaltyspot`/`bluepenaltyspot` wird der Elfmeter vom `ballspawn`-Punkt (Feldmitte) ausgeführt. Für realistische Elfmeterpositionen diese Punkte im Setup setzen.
---
*Erstellt mit ❤️ von M_Viper — viel Spaß beim Fußballspielen! 🏆*