README.md aktualisiert

This commit is contained in:
2026-02-27 10:51:49 +00:00
parent 1c70dba0cd
commit 425035cb64

308
README.md
View File

@@ -1,12 +1,12 @@
# ⚽ Fußball Plugin — Vollständiges Minecraft Fußball-Minigame
Ein professionelles Fußball-Plugin für Spigot/Paper 1.21+
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** benötigt
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
@@ -18,23 +18,35 @@ Ein professionelles Fußball-Plugin für Spigot/Paper 1.21+
| Feature | Beschreibung |
|---|---|
| ⚽ Echter Ball | ArmorStand mit Fußball-Textur, echten Physics & Reibung |
| ⚽ Echter Ball | ArmorStand mit Fußball-Textur, Physik & Reibung |
| 👥 Teams | Automatische Team-Zuweisung mit Auto-Balance (Rot vs. Blau) |
| 🥅 Tor-Erkennung | Region-basierte Tore mit Trajectory-Check |
| 👕 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, Team-Farbnamen |
| 🔴 BossBar | Timer mit Farbwechsel (grün→gelb→rot) + Spielstand |
| ⏸ Halbzeit | 30s Pause nach der 1. Halbzeit, danach 2. Halbzeit |
| ⏰ Verlängerung | 10 Minuten extra bei Unentschieden nach regulärer Zeit |
| 🥊 Elfmeterschießen | 5 Runden pro Team, Early-Termination, Sudden-Death |
| 📊 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 |
| 💬 Team-Chat | Nachrichten nur ans eigene Team, Zuschauer sehen alles |
| 👀 Zuschauer-Modus | Spiele zuschauen im Spectator-Mode mit BossBar & Scoreboard |
| 🏆 MVP-System | Bester Torschütze wird am Ende gekrönt |
| 📈 Persistente Stats | Tore, Schüsse, Siege, Niederlagen, Siegquote — serverübergreifend gespeichert |
| 🔢 Warteschlange | Automatische Queue wenn Arena voll |
| 🔁 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 |
| 🚪 Schilder | Join-Schilder mit Live-Status für jede Arena |
| 🛡 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 |
@@ -70,26 +82,41 @@ Gehe jeweils an die gewünschte Stelle und führe den Befehl aus:
/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ß).
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. Spieler-Einstellungen anpassen *(optional)*
### 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. 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)
```
### 6. Setup überprüfen
### 7. 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)
---
## 📋 Alle Commands
@@ -100,9 +127,12 @@ Alle Pflichtfelder müssen **§a✔** zeigen. Erst dann ist die Arena spielberei
| `/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 |
| `/fb top [goals\|wins]` | Bestenliste der Top-Torschützen oder Top-Sieger |
| `/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`)*
@@ -111,9 +141,11 @@ Alle Pflichtfelder müssen **§a✔** zeigen. Erst dann ist die Arena spielberei
| `/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 anzeigen |
| `/fb setup <arena> info` | Alle gesetzten Positionen und Status anzeigen |
| `/fb stop <arena>` | Laufendes Spiel sofort beenden |
| `/fb debug <arena>` | Tor-/Feld-Regionen und Ball-Position debuggen |
| `/fb debug <arena>` | Tor-/Feld-Regionen, Ball-Position und Aus-Seite debuggen |
Alle Commands unterstützen **Tab-Completion** für Arena-Namen und Optionen.
---
@@ -121,36 +153,41 @@ Alle Pflichtfelder müssen **§a✔** zeigen. Erst dann ist die Arena spielberei
```
Spieler joinen per Schild oder /fb join
→ Countdown startet (10 Sek.)
→ Countdown startet (10 Sek.) bricht ab bei zu wenig Spielern
→ Spieler teleportieren zu Team-Spawns
Fußball erscheint in der Mitte
5-Sekunden-Countdown mit Positions-Aufforderung
→ Fußball erscheint in der Mitte, Schonfrist von 3s
── 1. HALBZEIT ──────────────────────────────────────────
Spieler rennen gegen den Ball → automatischer Kick
Spieler laufen gegen den Ball → automatischer Kick
Shift halten → Schuss lädt auf → loslassen = Powerschuss
Ball ins Tor → Punkt! (Feuerwerk + Pause + Neuaufstellung)
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, Spieler bleiben auf dem Feld
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.) ──────────────
Wer zuerst trifft, gewinnt (Golden Goal)
Golden Goal: Wer zuerst trifft, gewinnt sofort
Bei weiterem Gleichstand...
── ELFMETER-SCHIEßEN ────────────────────────────────────
5 Schüsse pro Team (abwechselnd)
5 Schüsse pro Team (abwechselnd, beginnend mit Rot)
Schütze hat 15 Sekunden pro Versuch
Early-Termination wenn Ergebnis feststeht
Dann: Sudden Death (je 1 Schuss) bis Entscheidung
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
Alle zurück zur Lobby (nach 5 Sek.)
```
---
@@ -161,7 +198,8 @@ Spieler joinen per Schild oder /fb join
|---|---|
| Rechtsklick auf Ball | Normaler Schuss |
| Linksklick auf Ball | Normaler Schuss |
| **Shift halten** (max 1.5s) | Schuss lädt auf |
| 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 |
@@ -169,7 +207,82 @@ Die Action-Bar zeigt den Ladefortschritt:
```
⚽ Schuss-Power: ████████░░ 80%
```
Ab 70% Ladung erscheinen Feuer-Partikel am Ball. Volle Ladung = 3.8× normale Kraft + mehr Loft.
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).
**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.
---
@@ -178,20 +291,23 @@ Ab 70% Ladung erscheinen Feuer-Partikel am Ball. Volle Ladung = 3.8× normale Kr
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)
- **`!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
2. In die erste Zeile **`[Fussball]`** schreiben (benötigt `fussball.admin`)
3. In die zweite Zeile den Arena-Namen schreiben
4. Rechtsklick auf das Schild → Spiel beitreten
4. Rechtsklick auf das fertige Schild → Spiel beitreten
Das Schild zeigt automatisch den aktuellen Status:
Das Schild wird automatisch formatiert und aktualisiert:
```
[⚽]
StadionXL
@@ -199,7 +315,17 @@ StadionXL
Klick zum Joinen
```
Farb-Legende: `§a●` = Wartet · `§e●` = Startet · `§c●` = Läuft · `§d●` = Elfmeter · `§7●` = Endet
**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.
---
@@ -209,13 +335,25 @@ Farb-Legende: `§a●` = Wartet · `§e●` = Startet · `§c●` = Läuft · `
/fb stats → Eigene Statistiken
/fb stats Notch → Statistiken von "Notch"
/fb top goals → Top 10 Torschützen
/fb top wins → Top 10 nach Siegen
/fb top wins → Top 10 nach Siegen (inkl. Siegquote)
/fb top kicks → Top 10 nach Anzahl Schüssen
```
Gespeicherte Werte pro Spieler:
- ⚽ Tore · 👟 Schüsse · 🏆 Siege · ❌ Niederlagen · Unentschieden · 📊 Gespielte Spiele · 📈 Siegquote %
**Gespeicherte Werte pro Spieler:**
Alle Daten werden in `plugins/Fussball/stats.yml` dauerhaft gespeichert.
| 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.
---
@@ -242,8 +380,56 @@ Wenn PlaceholderAPI installiert ist, sind folgende Platzhalter verfügbar:
| Permission | Beschreibung | Standard |
|---|---|---|
| `fussball.admin` | Alle Admin-Commands | OP |
| `fussball.play` | Spielen, Zuschauen, Stats | Alle |
| `fussball.admin` | Alle Admin-Commands (create, delete, setup, stop, 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}`.
---
@@ -251,7 +437,7 @@ Wenn PlaceholderAPI installiert ist, sind folgende Platzhalter verfügbar:
```
plugins/Fussball/
├── config.yml → Plugin-Einstellungen (Ball-Power, Defaults)
├── 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)
@@ -262,11 +448,24 @@ plugins/Fussball/
## 🏟 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)
- **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 keinen Aus-Befehl (Einwurf/Ecke/Abstoß)
- **`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
---
## 📣 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)
---
@@ -278,16 +477,19 @@ plugins/Fussball/
| Java | **21+** |
| PlaceholderAPI | optional, jede Version |
Mehrere Arenen gleichzeitig möglich. Jede Arena läuft komplett unabhängig.
Mehrere Arenen können gleichzeitig laufen und arbeiten vollständig unabhängig voneinander.
---
## 🐛 Bekannte Eigenheiten
- Der Ball ist ein **ArmorStand** er kann durch enge Durchgänge (< 1 Block) stecken bleiben. Tore daher mindestens **2 Blöcke breit** bauen.
- Spieler müssen **Adventure-Mode** haben Commands die den Spielmodus ändern (z.B. durch andere Plugins) können das Spiel stören.
- Die Halbzeit teilt die `duration`-Einstellung in zwei Hälften. Wer 5 Minuten Gesamtspielzeit will, setzt `duration 300`.
- 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.
- **Torwart-Zuweisung:** Der erste Spieler jedes Teams (nach Join-Reihenfolge) wird Torwart. Eine manuelle Zuweisung per Command existiert aktuell nicht.
- **Abseits** erfordert `fieldmin`/`fieldmax` **nicht**, aber die Feld-Achse wird aus den Tor-Koordinaten berechnet. Ohne korrekt platzierte Tore ist Abseits deaktiviert.
- **Strafraum-Elfmeter:** Der Elfmeter wird aktuell vom Ball-Spawn-Punkt (Feldmitte) ausgeführt, nicht von einem separaten Elfmeterpunkt. Ein dedizierter Elfmeterpunkt kann in einer zukünftigen Version hinzugefügt werden.
---
*Erstellt mit ❤️ von M_Viper — viel Spaß beim Fußballspielen!*
*Erstellt mit ❤️ von M_Viper — viel Spaß beim Fußballspielen! 🏆*