diff --git a/README.md b/README.md index dd74318..b339d5f 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,10 @@ Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und Spieler können Items direkt ingame an den Shop verkaufen. Ankaufspreis pro Item konfigurierbar (% vom VK, Festpreis oder VK minus Betrag). +- ✈️ **Fly-Abo-System** + Zeitbasiertes Fly-Abonnement mit tägl. Stunden-Limit (Standard: 6h). + Kauf im Shop, Verwaltung & Kündigung vollständig ingame. + - 🌐 **REST API ohne RCON** - 📊 **Top-Spender & Umsatzstatistik** @@ -94,7 +98,7 @@ fly-redeem-disabled: false # Spieler der die Einnahmen aus dem Shop erhält (Vault-Konto) income-receiver: "" -# MySQL-Verbindung (für Fly-Code-System und Rang-Sessions) +# MySQL-Verbindung (für Fly-Code-System, Rang-Sessions und Fly-Abo) mysql: host: "localhost" port: "3306" @@ -108,6 +112,11 @@ sell: # Preiskorrektur relativ zum WP-Ankaufspreis (in Prozent) # 0.0 = exakt WP-Preis | -10.0 = 10 % weniger | +5.0 = 5 % mehr price-offset: 0.0 + +# Fly-Abo-Einstellungen +fly-abo: + # Maximale Fly-Zeit pro Tag in Stunden (Standard: 6) + max-daily-hours: 6 ``` --- @@ -130,6 +139,14 @@ sell: | `/flygive [Label]` | Gibt einem Spieler einen Fly-Code (Admin) | `ingameshop.flygive` | | `/flypause` | Pausiert oder setzt die aktive Fly-Zeit fort | `ingameshop.flypause` | +## Fly-Abo + +| Befehl | Beschreibung | Berechtigung | +|--------|-------------|--------------| +| `/flyabo` | Zeigt Abo-Status, Ablaufdatum und heutiges Tageslimit | `ingameshop.flyabo` | +| `/flyabocancel [confirm]` | Kündigt das Abo zum Ablaufdatum (bleibt bis dahin aktiv) | `ingameshop.flyabocancel` | +| `/flyabogive [Label]` | Vergibt ein Fly-Abo manuell (Admin) | `ingameshop.flyabogive` (OP) | + ## Ränge | Befehl | Beschreibung | Berechtigung | @@ -157,6 +174,47 @@ sell: --- +# ✈️ Fly-Abo-System + +Das Fly-Abo ermöglicht es Spielern, ein zeitbasiertes Abonnement im Shop zu kaufen, das ihnen täglich eine konfigurierbare Menge an Fly-Zeit gewährt. + +## Funktionsweise + +- Spieler kaufen das Abo im Shop (WordPress-Frontend) +- Das Abo wird automatisch beim Login aktiviert +- Täglich stehen bis zu `max-daily-hours` Stunden Fly zur Verfügung (Standard: 6h) +- Der Tagesverbrauch wird um Mitternacht zurückgesetzt +- Mehrfachkauf verlängert das bestehende Abo kumulativ (z.B. 2x 30 Tage = 60 Tage) +- Verwaltung und Kündigung erfolgen ausschließlich ingame + +## BossBar + +Beim aktiven Fly-Abo wird eine **grüne BossBar** angezeigt: + +``` +✈ Fly-Abo: 5h 30min / 6h +``` + +Warnungen bei: 1h, 30min, 10min, 5min, 1min, 30s, 10s verbleibend. + +## Shop-Artikel anlegen (WordPress) + +1. **Ingame Shop → Items → Neu** +2. Typ: **„✈ Fly-Abo (tägl. Limit)"** auswählen +3. Laufzeit in Tagen eintragen (z.B. `30`) +4. Preis setzen, Name vergeben → Speichern + +Die Item-ID wird automatisch als `fly_abo_30` gespeichert. + +## Datenbanktabellen + +| Tabelle | Inhalt | +|---------|--------| +| `wis_fly_abos` | Aktive Abos pro Spieler (Label, Ablaufdatum, Kündigungs-Flag) | +| `wis_fly_abo_usage` | Tagesverbrauch pro Spieler (wird täglich neu erfasst) | + +--- + # 🖼️ Bilder-Konfiguration (Gitea Raw) ## 📂 Basis-URL für alle Item-Bilder @@ -241,6 +299,7 @@ Ideal für: ### Einzelbearbeitung - Item ID (`minecraft:diamond`) +- Typ: Minecraft Item | ✈ Fly-Gutschein | 👑 Rang (LuckPerms) | ✈ Fly-Abo (tägl. Limit) - Preis - Angebotspreis - Server-Zuweisung @@ -530,6 +589,28 @@ Antwort: --- +## `wis_fly_abos` *(Spigot MySQL)* + +| Feld | Beschreibung | +|------|-------------| +| player_name | Minecraft Name | +| label | Anzeigename des Pakets | +| cancelled | 0 / 1 – Kündigung vorgemerkt? | +| expires_at | Ablaufdatum | +| granted_at | Aktivierungszeitpunkt | + +--- + +## `wis_fly_abo_usage` *(Spigot MySQL)* + +| Feld | Beschreibung | +|------|-------------| +| player_name | Minecraft Name | +| usage_date | Datum (täglich) | +| used_sec | Verbrauchte Sekunden an diesem Tag | + +--- + ## `wp_wis_servers` Serverdefinitionen