diff --git a/README.md b/README.md index 287f63c..9e6c37f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,227 @@ # EventEngine +EventEngine ist ein Minecraft-Plugin für Paper 1.21+, mit dem du automatisch oder manuell Server-Events starten, verwalten und rotieren lassen kannst. + +Der Fokus liegt auf: +- vielen eingebauten Event-Typen (100+) +- planbaren Events über Uhrzeit/Wochentage +- zufälliger Event-Rotation mit Gewichtung +- Custom-Events per Ingame-Builder +- schneller Admin-Steuerung per Befehl und GUI + +## Inhalt + +- Features +- Voraussetzungen +- Installation +- Schnellstart +- Befehle +- Berechtigungen +- Konfiguration +- Zeitplan konfigurieren +- Event-Overrides (eingebaute Events anpassen) +- Custom Events +- Rotation und RANDOM +- Typische Abläufe +- Fehlerbehebung + +## Features + +- Event-System mit eingebauten Kategorien (PvP, Survival, Build, Fun, Quiz, Economy, Team uvm.) +- GUI und Commands für schnelle Steuerung +- Zeitplan in `config.yml` mit Tagesfilter und Uhrzeit +- Intervall-Modus (alle X Minuten) +- Event-Rotation mit Gewichtung (`weight`) +- Ingame-Custom-Event-Builder (`/event create `) +- Laufende Events verwalten (join/leave, stop, score) +- Konfigurations-Reload ohne Server-Neustart + +## Voraussetzungen + +- Paper-Server 1.21.x +- Zugriff auf den `plugins`-Ordner + +## Installation + +1. Plugin-JAR in den `plugins`-Ordner kopieren. +2. Server starten oder neu starten. +3. Es werden automatisch Konfigurationsdateien erzeugt: +- `plugins/EventEngine/config.yml` +- `plugins/EventEngine/custom_events.yml` (bzw. anhand des Beispiels) + +## Schnellstart + +1. Liste aller Events anzeigen: +- `/event list` +2. Ein Event sofort starten: +- `/event start random` +3. Aktives Event anzeigen: +- `/event info` +4. Event beenden: +- `/event stop` +5. Änderungen an der Config übernehmen: +- `/event reload` + +## Befehle + +Hauptbefehl: +- `/event` (Aliases: `/ee`, `/events`) + +Verfügbare Subcommands: +- `/event gui` öffnet die Event-GUI +- `/event start ` startet ein Event +- `/event stop [grund]` beendet das laufende Event +- `/event join` nimmt am aktiven Event teil +- `/event leave` verlässt das aktive Event +- `/event info [id]` zeigt Info zum aktiven Event oder zu einer Event-ID +- `/event list [seite]` listet registrierte Events +- `/event schedule` zeigt den aktuellen Zeitplan +- `/event create ` startet den Ingame-Custom-Builder +- `/event delete ` löscht ein Custom-Event +- `/event score ` vergibt Punkte im laufenden Event +- `/event rotation ` aktiviert/deaktiviert Rotation für ein Event +- `/event reload` lädt Config, Registry und Scheduler neu + +## Berechtigungen + +- `eventengine.admin` +- `eventengine.participate` +- `eventengine.notify` + +Empfehlung: +- Admin-Befehle nur an Team-Ränge vergeben. +- Teilnahme/Benachrichtigung an Standard-Spielerrollen vergeben. + +## Konfiguration + +Datei: `plugins/EventEngine/config.yml` + +Wichtige Bereiche: + +- `settings.prefix` +- `settings.log-events` +- `settings.announce-before-seconds` +- `settings.use-interval` +- `settings.interval-minutes` +- `settings.default-event` +- `settings.random-on-interval` +- `schedule` +- `event-overrides` + +### Beispiel: Intervall-Modus aktivieren + +```yml +settings: + use-interval: true + interval-minutes: 60 + default-event: "RANDOM" + random-on-interval: true +``` + +## Zeitplan konfigurieren + +Jeder Zeitplan-Eintrag hat: +- `days`: Liste von Wochentagen (`MONDAY` bis `SUNDAY`), leer = täglich +- `time`: Uhrzeit im 24h-Format `HH:MM` +- `event`: Event-ID oder `RANDOM` + +Beispiel: + +```yml +schedule: + - days: [] + time: "12:00" + event: "RANDOM" + + - days: [FRIDAY, SATURDAY] + time: "20:00" + event: "pvp_hunger_games" +``` + +## Event-Overrides (eingebaute Events anpassen) + +Mit `event-overrides` kannst du Werte einzelner Builtin-Events überschreiben. + +Beispiel: + +```yml +event-overrides: + pvp_deathmatch: + duration-seconds: 600 + min-players: 4 + rewards: + - "eco give %player% 500" + - "give %player% diamond 3" +``` + +## Custom Events + +Custom Events liegen in `custom_events.yml` unter `events:`. + +Du kannst sie: +- per Ingame-Builder erstellen (`/event create `) +- per `/event delete ` entfernen +- manuell in der Datei pflegen + +Wichtige Felder pro Event: +- `display-name` +- `description` +- `category` +- `duration-seconds` +- `min-players` +- `max-players` +- `announcement` +- `in-rotation` +- `weight` +- `start-commands` +- `end-commands` +- `rewards` +- `settings` + +## Rotation und RANDOM + +`RANDOM` wählt aus allen Events mit `in-rotation: true`. + +Die Häufigkeit wird über `weight` gesteuert: +- höheres `weight` = höhere Chance +- `weight: 1` ist Standard + +Rotation verwalten: +- `/event rotation add ` +- `/event rotation remove ` + +## Typische Abläufe + +Custom Event anlegen: + +1. `/event create parkour_night` +2. Builder durchlaufen +3. Mit `/event list` prüfen +4. Optional in Rotation aufnehmen: `/event rotation add parkour_night` + +Geplantes Event testen: + +1. Eintrag in `config.yml` anlegen +2. `/event reload` +3. Mit `/event schedule` prüfen +4. Teststart mit `/event start ` + +## Fehlerbehebung + +Event startet nicht: +- Mit `/event info` prüfen, ob bereits ein Event läuft. +- Mit `/event list` prüfen, ob die ID korrekt ist. +- Prüfen, ob Mindestspielerzahl erreicht ist. + +Zeitplan greift nicht: +- Zeitformat prüfen (`HH:MM`). +- Wochentage prüfen (`MONDAY` ... `SUNDAY`). +- Nach Änderungen immer `/event reload` ausführen. + +RANDOM findet nichts: +- Mindestens ein Event muss in der Rotation aktiv sein (`in-rotation: true`). +- Mit `/event rotation add ` Events hinzufügen. + +## Hinweis + +Die Event-Liste kann je nach Plugin-Version variieren. Verwende `/event list`, um alle aktuell registrierten IDs auf deinem Server zu sehen.