36 Commits
Author SHA1 Message Date
Git Manager GUI c493f18efa Upload folder via GUI - src 2026-05-14 22:10:33 +02:00
Git Manager GUI d387424e0f Upload via Git Manager GUI 2026-05-12 23:24:09 +02:00
Git Manager GUI 01205de952 Upload folder via GUI - src 2026-05-12 23:19:51 +02:00
Git Manager GUI b3b0ae042b Upload folder via GUI - src 2026-05-11 12:01:12 +02:00
Git Manager GUI 876b9cd005 Upload via Git Manager GUI 2026-05-11 12:00:52 +02:00
Git Manager GUI d71f15086d Upload folder via GUI - src 2026-05-05 21:08:18 +02:00
Git Manager GUI 1409fe5e21 Upload via Git Manager GUI 2026-05-05 21:05:34 +02:00
M_Viper f03c10f785 README.md aktualisiert 2026-05-05 10:07:00 +00:00
M_Viper 9834a9d6da wp-ingame-shop/wp-ingame-shop-pro.php aktualisiert 2026-05-02 12:11:23 +00:00
Git Manager GUI 902f8ed43c Upload folder via GUI - src 2026-04-30 09:34:22 +02:00
Git Manager GUI d6ed6544db Upload via Git Manager GUI 2026-04-30 09:33:35 +02:00
Git Manager GUI 30427f7bb3 Upload via Git Manager GUI 2026-04-29 21:06:12 +02:00
Git Manager GUI 798abcc0f2 Upload via Git Manager GUI 2026-04-29 19:15:39 +02:00
Git Manager GUI 6df2548399 Upload folder via GUI - src 2026-04-29 19:14:58 +02:00
Git Manager GUI d1618d45c8 Upload folder via GUI - src 2026-04-29 16:55:46 +02:00
Git Manager GUI c25050b88a Upload via Git Manager GUI 2026-04-29 16:55:43 +02:00
M_Viper b7f689c726 README.md aktualisiert 2026-04-29 14:51:15 +00:00
Git Manager GUI d11fef0032 Upload via Git Manager GUI 2026-04-29 16:41:51 +02:00
Git Manager GUI f5b14ffd6f Upload folder via GUI - src 2026-04-29 16:40:53 +02:00
Git Manager GUI 8e28d518c3 Upload via Git Manager GUI 2026-04-28 22:39:27 +02:00
M_Viper 2c3602f271 Edit wp-ingame-shop/wp-ingame-shop-pro.php via Git Manager GUI 2026-04-28 20:39:14 +00:00
Git Manager GUI 4ff55a3736 Upload folder via GUI - src 2026-04-28 22:17:42 +02:00
Git Manager GUI 10f5fb03a7 Upload via Git Manager GUI 2026-04-28 22:17:25 +02:00
M_Viper f7b274a794 README.md aktualisiert 2026-04-28 20:13:05 +00:00
Git Manager GUI 9f9d064139 Upload folder via GUI - src 2026-04-28 21:46:16 +02:00
Git Manager GUI f571c9e8f8 Upload via Git Manager GUI 2026-04-28 21:45:56 +02:00
M_Viper a7134aaaba README.md aktualisiert 2026-04-28 19:41:46 +00:00
M_Viper ebdd4e22bc README.md aktualisiert 2026-04-25 21:07:27 +00:00
Git Manager GUI 738f6d0218 Upload folder via GUI - src 2026-04-25 21:53:13 +02:00
Git Manager GUI da3dfd717a Upload via Git Manager GUI 2026-04-24 09:13:06 +02:00
Git Manager GUI 38c51a9beb Upload folder via GUI - src 2026-04-24 09:13:04 +02:00
Git Manager GUI 3ba519b53d Upload via Git Manager GUI 2026-04-24 09:12:43 +02:00
M_Viper 25a3f62b06 wp-ingame-shop/wp-ingame-shop.php gelöscht 2026-04-10 06:04:19 +00:00
Git Manager GUI eeb5b5e74f Upload via Git Manager GUI 2026-04-10 08:02:01 +02:00
M_Viper 47915c6dd8 wp-ingame-shop/wp-ingame-shop.php aktualisiert 2026-04-02 19:50:12 +00:00
M_Viper b398a706fe README.md aktualisiert 2026-03-01 11:17:02 +00:00
7 changed files with 13384 additions and 3619 deletions
+15 -7
View File
@@ -6,21 +6,29 @@
<groupId>de.mviper</groupId> <groupId>de.mviper</groupId>
<artifactId>IngameShopSpigot</artifactId> <artifactId>IngameShopSpigot</artifactId>
<version>1.0</version> <version>1.2</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>IngameShopSpigot</name> <name>IngameShopSpigot</name>
<repositories>
<!-- PaperMC Repository -->
<repository>
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
</repositories>
<dependencies> <dependencies>
<!-- Spigot API --> <!-- Paper API (enthält Spigot + Adventure + Paper-Events) -->
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>io.papermc.paper</groupId>
<artifactId>spigot-api</artifactId> <artifactId>paper-api</artifactId>
<version>1.20.1-R0.1-SNAPSHOT</version> <version>1.20.1-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Vault fEconomy --> <!-- Vault Economy -->
<dependency> <dependency>
<groupId>net.milkbowl.vault</groupId> <groupId>net.milkbowl.vault</groupId>
<artifactId>VaultAPI</artifactId> <artifactId>VaultAPI</artifactId>
@@ -42,7 +50,7 @@
</configuration> </configuration>
</plugin> </plugin>
<!-- Shade Plugin optional fAbh--> <!-- Shade Plugin -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
@@ -61,4 +69,4 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</project> </project>
File diff suppressed because it is too large Load Diff
+56 -3
View File
@@ -1,4 +1,4 @@
# IngameShopSpigot v6.3 Konfiguration # IngameShopSpigot v6.4 Konfiguration
# ========================================== # ==========================================
# Deine WordPress-URL (kein abschließendes /) # Deine WordPress-URL (kein abschließendes /)
@@ -12,10 +12,63 @@ api-key: "HIER_DEN_KEY_AUS_WORDPRESS_EINTRAGEN"
server-name: "survival" server-name: "survival"
# Währungsname (muss mit WordPress-Einstellung übereinstimmen) # Währungsname (muss mit WordPress-Einstellung übereinstimmen)
currency-name: "Coins" currency-name: "$"
# Wie oft (in Sekunden) nach ausstehenden Bestellungen gesucht wird # Wie oft (in Sekunden) nach ausstehenden Bestellungen gesucht wird
check-interval: 10 check-interval: 10
# Debug-Modus (ausführliche Logs in der Konsole) # Debug-Modus (ausführliche Logs in der Konsole)
debug-mode: false debug-mode: false
# Fly-Code-Einlösung auf diesem Server deaktivieren
# true = Codes können hier NICHT eingelöst werden (z.B. Lobby, Hub, Event-Server)
# false = Codes können normal eingelöst werden (Standard)
fly-redeem-disabled: false
# Spieler der die Einnahmen aus dem Shop erhält (Vault-Konto)
# Leer lassen ("") wenn niemand die Einnahmen erhalten soll
income-receiver: ""
# MySQL-Verbindung (für Fly-Code-System, Rang-Sessions, Fly-Abo und Plot-Slots)
mysql:
host: "localhost"
port: "3306"
database: "minecraft"
username: "root"
password: "DEIN_PASSWORT"
# ──────────────────────────────────────────────
# Ankauf-Einstellungen (Spieler verkaufen Items)
# ──────────────────────────────────────────────
sell:
# Ankauf auf diesem Server aktivieren
enabled: true
# Preiskorrektur relativ zum WP-Ankaufspreis (in Prozent)
# Beispiele:
# 0.0 → exakt den WP-Ankaufspreis zahlen
# -10.0 → 10 % weniger als der WP-Ankaufspreis
# +5.0 → 5 % mehr als der WP-Ankaufspreis
price-offset: -10.0
# ──────────────────────────────────────────────
# Fly-Abo Einstellungen
# ──────────────────────────────────────────────
fly-abo:
# Maximale Fly-Zeit pro Tag in Stunden (Standard: 6)
max-daily-hours: 6
# ──────────────────────────────────────────────
# Plot-Slot Einstellungen (nur Citybuild)
# ──────────────────────────────────────────────
plot-slots:
# Auf welchem Server greift das Plot-Slot-System?
# Muss mit server-name des Citybuild-Servers übereinstimmen
server: "citybuild"
# Standard-Plot-Slots pro LuckPerms-Gruppe
# LuckPerms Meta "plotlimit" wird automatisch gesetzt und von
# PlotSquared über die Option "max-plots-per-player: -1" + Meta gelesen
rank-defaults:
member: 2
vip: 3
scout: 4
primo: 5
+135 -1
View File
@@ -1,8 +1,9 @@
name: IngameShopSpigot name: IngameShopSpigot
version: 6.3 version: 1.2
main: de.mviper.spigot.IngameShopSpigot main: de.mviper.spigot.IngameShopSpigot
api-version: 1.19 api-version: 1.19
depend: [Vault] depend: [Vault]
softdepend: [BCEconomy, NexEco]
description: Verbindet den WP Ingame Shop Pro mit dem Spigot-Server description: Verbindet den WP Ingame Shop Pro mit dem Spigot-Server
author: M_Viper author: M_Viper
@@ -11,8 +12,141 @@ commands:
description: Zeigt deine letzten Bestellungen im Shop an description: Zeigt deine letzten Bestellungen im Shop an
usage: /orders usage: /orders
permission: ingameshop.orders permission: ingameshop.orders
flytime:
description: Zeigt deine aktive verbleibende Fly-Zeit an
usage: /flytime
permission: ingameshop.flytime
flyredeem:
description: Löst einen Fly-Gutschein-Code ein
usage: /flyredeem <Code>
permission: ingameshop.flyredeem
flycodes:
description: Öffnet ein GUI mit deinen ungenutzten Fly-Gutscheinen
usage: /flycodes
permission: ingameshop.flycodes
flygive:
description: Gibt einem Spieler einen Fly-Gutschein-Code (Admin)
usage: /flygive <Spieler> <Sekunden> [Label]
permission: ingameshop.flygive
flypause:
description: Pausiert oder setzt die aktive Fly-Zeit fort
usage: /flypause
permission: ingameshop.flypause
rankinfo:
description: Zeigt deine aktiven zeitbasierten Ränge an
usage: /rankinfo
permission: ingameshop.rankinfo
sell:
description: Verkauft Items an den Shop (GUI, /sell hand, /sell all)
usage: /sell [hand|all]
permission: ingameshop.sell
wpis:
description: IngameShop Admin-Befehle
usage: /wpis <reload>
permission: ingameshop.reload
abo:
description: Zeigt eine Übersicht aller deiner laufenden Abonnements
usage: /abo
permission: ingameshop.abo
flyabo:
description: Zeigt deinen Fly-Abo Status und heutiges Tageslimit
usage: /flyabo
permission: ingameshop.flyabo
flyabocancel:
description: Kündigt dein Fly-Abo zum Monatsende
usage: /flyabocancel [confirm]
permission: ingameshop.flyabocancel
flyabogive:
description: Gibt einem Spieler ein Fly-Abo manuell (Admin)
usage: /flyabogive <Spieler> <Monatspreis> [Label]
permission: ingameshop.flyabogive
plotslots:
description: Zeigt deine aktuellen Plot-Slots (Basis + Extra + Abo)
usage: /plotslots
permission: ingameshop.plotslots
plotabo:
description: Zeigt deinen Plot-Abo Status
usage: /plotabo
permission: ingameshop.plotabo
plotabocancel:
description: Kündigt dein Plot-Abo zum Monatsende
usage: /plotabocancel [confirm]
permission: ingameshop.plotabocancel
plotabogive:
description: Gibt einem Spieler ein Plot-Abo manuell (Admin)
usage: /plotabogive <Spieler> <Slots> <Monatspreis> [Label]
permission: ingameshop.plotabogive
plotslotsgive:
description: Gibt einem Spieler permanente Plot-Slots (Admin)
usage: /plotslotsgive <Spieler> <Slots> [Label]
permission: ingameshop.plotslotsgive
itemabocancel:
description: Kündigt ein bestimmtes Item-Abo anhand der Nummer aus /abo
usage: /itemabocancel <Nr> [confirm]
permission: ingameshop.itemabocancel
mycoupons:
description: Zeigt deine ungenutzten Gutschein-Karten
usage: /mycoupons
permission: ingameshop.mycoupons
permissions: permissions:
ingameshop.orders: ingameshop.orders:
description: Kann eigene Bestellhistorie einsehen description: Kann eigene Bestellhistorie einsehen
default: true
ingameshop.flytime:
description: Kann aktive Fly-Zeit abfragen
default: true
ingameshop.flyredeem:
description: Kann Fly-Codes einlösen
default: true
ingameshop.flycodes:
description: Kann eigene ungenutzte Fly-Codes auflisten
default: true
ingameshop.flygive:
description: Kann Spielern Fly-Gutscheine geben (Admin)
default: op
ingameshop.flypause:
description: Kann die eigene Fly-Zeit pausieren
default: true
ingameshop.rankinfo:
description: Kann eigene aktive Ränge einsehen
default: true
ingameshop.sell:
description: Kann Items an den Shop verkaufen
default: true
ingameshop.reload:
description: Kann die IngameShop-Config live neu laden
default: op
ingameshop.abo:
description: Kann eigene Abo-Übersicht einsehen
default: true
ingameshop.flyabo:
description: Kann eigenen Fly-Abo-Status einsehen
default: true
ingameshop.flyabocancel:
description: Kann eigenes Fly-Abo kündigen
default: true
ingameshop.flyabogive:
description: Kann Spielern Fly-Abos manuell vergeben (Admin)
default: op
ingameshop.plotslots:
description: Kann eigene Plot-Slot Übersicht einsehen
default: true
ingameshop.plotabo:
description: Kann eigenen Plot-Abo-Status einsehen
default: true
ingameshop.plotabocancel:
description: Kann eigenes Plot-Abo kündigen
default: true
ingameshop.plotabogive:
description: Kann Spielern Plot-Abos manuell vergeben (Admin)
default: op
ingameshop.plotslotsgive:
description: Kann Spielern permanente Plot-Slots vergeben (Admin)
default: op
ingameshop.itemabocancel:
description: Kann eigenes Item-Abo kündigen
default: true
ingameshop.mycoupons:
description: Kann eigene Gutschein-Karten einsehen
default: true default: true
+562 -12
View File
@@ -1,7 +1,7 @@
# WP Ingame Shop Pro # WP Ingame Shop Pro
Ein leistungsstarker, vollständig eigenständiger Ingame-Shop für WordPress, entwickelt für Minecraft-Server (Spigot/Paper). Ein leistungsstarker, vollständig eigenständiger Ingame-Shop für WordPress, entwickelt für Minecraft-Server (Spigot/Paper).
Er bietet ein komfortables Warenkorb-System, Gutscheine, Daily Deals und eine benutzerdefinierte Währung – komplett ohne RCON. Er bietet ein komfortables Warenkorb-System, Gutscheine, Daily Deals, eine benutzerdefinierte Währung und ein **Item-Ankauf-System** – komplett ohne RCON.
Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und vollständige Unabhängigkeit von WordPress-Beiträgen. Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und vollständige Unabhängigkeit von WordPress-Beiträgen.
@@ -14,10 +14,10 @@ Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und
Eine Bestellung = eine saubere Datenbankzeile mit JSON-Details. Eine Bestellung = eine saubere Datenbankzeile mit JSON-Details.
- ⚡ **Mehrfachbearbeitung (Bulk Edit)** - ⚡ **Mehrfachbearbeitung (Bulk Edit)**
Hunderte Items gleichzeitig bearbeiten (Preis, Server, Kategorie, Status). Hunderte Items gleichzeitig bearbeiten (Preis, Server, Kategorie, Status, **Ankauf**).
- 💰 **Eigene Währung** - 💰 **Eigene Währung**
„Coins“, „Tokens“ oder beliebige virtuelle Währungen. „Coins", „Tokens" oder beliebige virtuelle Währungen.
- 🖼️ **Automatische Bildzuweisung** - 🖼️ **Automatische Bildzuweisung**
`minecraft:diamond` → `minecraft_diamond.png` `minecraft:diamond` → `minecraft_diamond.png`
@@ -28,6 +28,18 @@ Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und
- 🎫 **Smart Coupons** - 🎫 **Smart Coupons**
Prozent- oder Festbetrag, optional nicht kombinierbar mit Angeboten. Prozent- oder Festbetrag, optional nicht kombinierbar mit Angeboten.
- 🔄 **Item-Ankauf-System**
Spieler können Items direkt ingame an den Shop verkaufen.
Ankaufspreis pro Item konfigurierbar (% vom VK, Festpreis oder VK minus Betrag).
- ✈️ **Fly-Abo-System**
Monatlich abgebuchtes Abonnement mit tägl. Stunden-Limit (Standard: 6h).
Kauf im Shop, Verwaltung & Kündigung vollständig ingame.
- 📦 **Plot-Slot-System**
Zusätzliche PlotSquared-Slots einmalig kaufen oder monatlich abonnieren.
Integration über LuckPerms (`plots.plot.<n>` Permission), vollautomatisch.
- 🌐 **REST API ohne RCON** - 🌐 **REST API ohne RCON**
- 📊 **Top-Spender & Umsatzstatistik** - 📊 **Top-Spender & Umsatzstatistik**
@@ -36,9 +48,13 @@ Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und
## 🚀 Installation ## 🚀 Installation
### WordPress Plugin
1. Ordner `wp-ingame-shop-pro` nach: 1. Ordner `wp-ingame-shop-pro` nach:
```
wp-content/plugins/ wp-content/plugins/
```
2. Plugin im WordPress Backend aktivieren. 2. Plugin im WordPress Backend aktivieren.
3. Fertig. 3. Fertig.
@@ -48,6 +64,291 @@ Bei Aktivierung werden automatisch erstellt:
- Datenbanktabellen (`wp_wis_*`) - Datenbanktabellen (`wp_wis_*`)
- Cron-Jobs für Daily Deals - Cron-Jobs für Daily Deals
### Spigot/Paper Plugin
1. `IngameShopSpigot.jar` in den `plugins/`-Ordner des Servers legen.
2. Server starten – `config.yml` wird automatisch erstellt.
3. `config.yml` ausfüllen (WordPress-URL, API-Key, Server-Name).
4. `/wpis reload` oder Server neu starten.
**Voraussetzungen:** Vault + ein Economy-Plugin (z.B. EssentialsX)
---
# ⚙️ Spigot Plugin Konfiguration
```yaml
# WordPress-URL (kein abschließendes /)
wordpress-url: "https://deine-domain.de"
# API-Key aus den WordPress-Einstellungen
api-key: "HIER_DEN_KEY_AUS_WORDPRESS_EINTRAGEN"
# Name dieses Servers (muss mit dem Server-Slug in WordPress übereinstimmen)
server-name: "survival"
# Währungsname (muss mit WordPress-Einstellung übereinstimmen)
currency-name: "$"
# Wie oft (in Sekunden) nach ausstehenden Bestellungen gesucht wird
check-interval: 10
# Debug-Modus (ausführliche Logs in der Konsole)
debug-mode: false
# Fly-Code-Einlösung auf diesem Server deaktivieren
fly-redeem-disabled: false
# Spieler der die Einnahmen aus dem Shop erhält (Vault-Konto)
income-receiver: ""
# MySQL-Verbindung (für Fly-Code-System, Rang-Sessions, Fly-Abo und Plot-Slots)
mysql:
host: "localhost"
port: "3306"
database: "minecraft"
username: "root"
password: "DEIN_PASSWORT"
# Ankauf-Einstellungen
sell:
enabled: true
# 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
# Plot-Slot Einstellungen (nur Citybuild)
plot-slots:
# Auf welchem Server greift das Plot-Slot-System?
server: "citybuild"
# Standard-Plot-Slots pro LuckPerms-Gruppe
rank-defaults:
member: 2
vip: 3
scout: 4
primo: 5
```
---
# 🎮 Ingame-Befehle
## Übersicht
| Befehl | Beschreibung | Berechtigung |
|--------|-------------|--------------|
| `/abo` | Zeigt alle laufenden Abonnements in einer Übersicht | `ingameshop.abo` |
## Shop / Bestellungen
| Befehl | Beschreibung | Berechtigung |
|--------|-------------|--------------|
| `/orders` | Zeigt deine letzten Bestellungen | `ingameshop.orders` |
## Fly-Gutscheine
| Befehl | Beschreibung | Berechtigung |
|--------|-------------|--------------|
| `/flytime` | Zeigt deine aktive verbleibende Fly-Zeit | `ingameshop.flytime` |
| `/flyredeem <Code>` | Löst einen Fly-Gutschein-Code ein | `ingameshop.flyredeem` |
| `/flycodes` | GUI mit deinen ungenutzten Fly-Codes (einlösen / weitergeben) | `ingameshop.flycodes` |
| `/flygive <Spieler> <Sekunden> [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 Monatsende (bleibt bis dahin aktiv) | `ingameshop.flyabocancel` |
| `/flyabogive <Spieler> <Monatspreis> [Label]` | Vergibt ein Fly-Abo manuell (Admin) | `ingameshop.flyabogive` (OP) |
## Plot-Slots
| Befehl | Beschreibung | Berechtigung |
|--------|-------------|--------------|
| `/plotslots` | Zeigt eigene Slot-Übersicht (Basis / Einmalig / Abo / Gesamt) | `ingameshop.plotslots` |
| `/plotabo` | Zeigt Plot-Abo-Status, Slots, Preis und Ablaufdatum | `ingameshop.plotabo` |
| `/plotabocancel confirm` | Kündigt das Plot-Abo zum Monatsende | `ingameshop.plotabocancel` |
| `/plotabogive <Spieler> <Slots> <Preis> [Label]` | Vergibt ein Plot-Abo manuell (Admin) | `ingameshop.plotabogive` (OP) |
| `/plotslotsgive <Spieler> <Slots> [Label]` | Vergibt permanente Plot-Slots (Admin) | `ingameshop.plotslotsgive` (OP) |
## Ränge
| Befehl | Beschreibung | Berechtigung |
|--------|-------------|--------------|
| `/rankinfo` | Zeigt deine aktiven zeitbasierten Ränge | `ingameshop.rankinfo` |
## Item-Ankauf
| Befehl | Beschreibung | Berechtigung |
|--------|-------------|--------------|
| `/sell` | Öffnet das Ankauf-GUI mit allen ankaufbaren Items | `ingameshop.sell` |
| `/sell hand` | Verkauft den Stack in der Hand direkt | `ingameshop.sell` |
| `/sell all` | Verkauft alle ankaufbaren Items aus dem Inventar | `ingameshop.sell` |
### Ankauf-GUI
- **Linksklick** auf ein Item → verkauft alle davon im Inventar
- **Rechtsklick** auf ein Item → verkauft genau 1 Stack (max. 64)
- Items werden alle 5 Minuten automatisch aus WordPress aktualisiert
## Admin
| Befehl | Beschreibung | Berechtigung |
|--------|-------------|--------------|
| `/wpis reload` | Lädt config.yml und Ankaufliste live neu | `ingameshop.reload` (OP) |
---
# ✈️ Fly-Abo-System
Das Fly-Abo ermöglicht es Spielern, ein monatlich abgebuchtes Abonnement im Shop zu kaufen, das ihnen täglich eine konfigurierbare Menge an Fly-Zeit gewährt.
## Funktionsweise
- Spieler kaufen das Abo einmalig im Shop – der **Artikelpreis** ist gleichzeitig der monatliche Beitrag
- Das Abo ist sofort aktiv und gilt bis zum letzten Tag des laufenden Monats
- Täglich stehen bis zu `max-daily-hours` Stunden Fly zur Verfügung (Standard: 6h)
- Der Tagesverbrauch wird täglich zurückgesetzt
- Am **1. jedes Monats** wird der Monatsbeitrag automatisch per Vault abgebucht und das Abo verlängert
- Kann der Spieler nicht zahlen, wird das Abo **automatisch zum Monatsende gekündigt**
- Kündigung jederzeit ingame möglich – das Abo läuft bis **Ende des laufenden Monats** weiter
- 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. **Preis setzen** – dieser Betrag wird monatlich per Vault abgebucht
4. Name vergeben → Speichern
Die Item-ID wird automatisch als `fly_abo` gespeichert.
> **Hinweis:** Es gibt nur einen Fly-Abo-Artikel. Der Preis im Shop = monatlicher Beitrag.
## Billing-Übersicht
| Zeitpunkt | Was passiert |
|-----------|-------------|
| Kauf im Shop | Vault-Abzug, Abo sofort aktiv bis Monatsende |
| 1. des Monats | Automatische Vault-Abbuchung, Abo verlängert sich |
| Zahlung fehlgeschlagen | Abo läuft bis Monatsende, danach automatisch beendet |
| `/flyabocancel confirm` | Kündigung vorgemerkt, Abo läuft bis Monatsende weiter |
---
# 📦 Plot-Slot-System
Spieler können zusätzliche Plot-Slots auf dem Citybuild-Server kaufen – entweder **einmalig permanent** oder als **monatliches Abo**.
## Standard-Limits pro Rang
| Rang | Standard-Slots |
|------|---------------|
| Member | 2 |
| VIP | 3 |
| Scout | 4 |
| Primo | 5 |
## Gesamtlimit-Berechnung
```
Gesamt = Rang-Basis + einmalig gekaufte Slots + Abo-Slots
```
Das Plugin setzt automatisch die LuckPerms-Permission `plots.plot.<n>` – PlotSquared liest diese direkt aus.
## PlotSquared Voraussetzung
In `plugins/PlotSquared/config/worlds.yml` muss für jede Welt gesetzt sein:
```yaml
worlds:
citybuild:
plot:
max_plots_per_player: -1
```
## Shop-Artikel anlegen (WordPress)
**Einmaliger Kauf (permanent):**
1. Typ: **„📦 Plot-Slots (einmalig)"** auswählen
2. Anzahl der zusätzlichen Slots eingeben
3. Preis setzen → Speichern
Item-ID: `plot_slots_2` (z.B. +2 Slots permanent)
**Monatliches Abo:**
1. Typ: **„📦 Plot-Abo (monatlich)"** auswählen
2. Anzahl der Abo-Slots eingeben
3. Preis setzen (= monatlicher Beitrag) → Speichern
Item-ID: `plot_abo_2` (z.B. +2 Slots monatlich)
## Billing-Übersicht
| Zeitpunkt | Was passiert |
|-----------|-------------|
| Kauf im Shop | Vault-Abzug, Slots sofort aktiv, LuckPerms Permission gesetzt |
| 1. des Monats | Automatische Vault-Abbuchung, Abo-Slots bleiben aktiv |
| Zahlung fehlgeschlagen | Abo-Slots verfallen, überzählige Plots eingefroren |
| `/plotabocancel confirm` | Kündigung vorgemerkt, läuft bis Monatsende weiter |
## Einfrieren bei Zahlungsausfall
Wenn nach Zahlungsausfall der Spieler mehr Plots besitzt als das neue Limit erlaubt, werden die überzähligen Plots eingefroren (kein Bauen möglich) bis das Abo erneuert wird.
---
# 📋 /abo – Abo-Übersicht
Der Befehl `/abo` zeigt alle laufenden Abonnements eines Spielers in einer kompakten Übersicht:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 Meine Abonnements
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✈ Fly-Abo
┌ Paket: Fly-Abo Monat
├ Preis: 50 $ / Monat
├ Status: ✔ Aktiv
├ Aktiv bis: 30.04.2026
├ Nächste Abbuchung: 01.05.2026
├ Heute: 1h 30min / 6h (noch: 4h 30min)
└ Kündigen: /flyabocancel confirm
📦 Plot-Abo
┌ Paket: Plot-Abo +2 Slots
├ Slots: +2 Plot-Slots
├ Preis: 30 $ / Monat
├ Status: ✔ Aktiv
├ Aktiv bis: 30.04.2026
├ Nächste Abbuchung: 01.05.2026
└ Kündigen: /plotabocancel confirm
📦 Plot-Slots
┌ Rang-Basis: 2
├ Einmalig: +1
├ Abo: +2
└ Gesamt: 5 Slots
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
Die Plot-Slots-Übersicht wird immer angezeigt. Hat der Spieler kein Abo, erscheint ein Hinweis mit dem Shop-Link.
--- ---
# 🖼️ Bilder-Konfiguration (Gitea Raw) # 🖼️ Bilder-Konfiguration (Gitea Raw)
@@ -134,28 +435,44 @@ Ideal für:
### Einzelbearbeitung ### Einzelbearbeitung
- Item ID (`minecraft:diamond`) - Item ID (`minecraft:diamond`)
- Typ: Minecraft Item | ✈ Fly-Gutschein | 👑 Rang (LuckPerms) | ✈ Fly-Abo | 📦 Plot-Slots (einmalig) | 📦 Plot-Abo (monatlich)
- Preis - Preis
- Angebotspreis - Angebotspreis
- Server-Zuweisung - Server-Zuweisung
- Kategorie - Kategorie
- Status (`publish` / `draft`) - Status (`publish` / `draft`)
- **Ankauf aktivieren** (mit Preismodus und Live-Vorschau)
### Ankauf-Preismodi (pro Item)
| Modus | Beispiel | Ergebnis bei VK 100 |
|-------|---------|---------------------|
| `% vom VK` | 80 | 80 Coins |
| `VK minus` | 10 | 90 Coins |
| `Fixpreis` | 15 | immer 15 Coins |
--- ---
## 🔄 Bulk Edit (Mehrfachbearbeitung) ## 🔄 Bulk Edit (Mehrfachbearbeitung)
Beispiel: 100 Items einem Server zuweisen. Beispiel: 100 Items auf Ankauf konfigurieren.
1. Items anhaken 1. Items anhaken
2. „Massenaktionen“ wählen: 2. „Massenaktionen" wählen:
- Server zuweisen - Server zuweisen
- Preis ändern - Preis ändern
- Angebot ändern
- Kategorie setzen - Kategorie setzen
- Status ändern - Status ändern
- **Ankauf konfigurieren**
3. Anwenden 3. Anwenden
4. Änderungen speichern 4. Änderungen speichern
Überschreibt bestehende Server-/Kategorie-Zuweisungen. Bei **Ankauf konfigurieren** siehst du pro Item:
- Checkbox zum Aktivieren/Deaktivieren
- Modus-Auswahl (%, minus, fix)
- Wert-Eingabe
- Live-Vorschau des Ankaufspreises
--- ---
@@ -199,7 +516,7 @@ Beispiel:
``` ```
Blöcke Blöcke
Waffen Waffen
Rüstung R�stung
Ranks Ranks
``` ```
@@ -297,6 +614,57 @@ POST /wis/v1/validate_coupon
--- ---
## Ankauf – Items abrufen
```
GET /wis/v1/sell_items?server=survival
```
Antwort:
```json
{
"items": [
{
"item_id": "minecraft:diamond",
"name": "Diamant",
"buy_price": 100,
"sell_price": 80
}
],
"currency": "Coins"
}
```
---
## Ankauf – Item verkaufen
```
POST /wis/v1/sell_item
```
```json
{
"player": "Steve",
"server": "survival",
"item_id": "minecraft:diamond",
"quantity": 5
}
```
Antwort:
```json
{
"success": true,
"item_name": "Diamant",
"quantity": 5,
"price_per_item": 80.00,
"total": 400.00
}
```
---
# 💾 Datenbank-Struktur # 💾 Datenbank-Struktur
## `wp_wis_items` ## `wp_wis_items`
@@ -311,6 +679,9 @@ POST /wis/v1/validate_coupon
| servers | JSON Array | | servers | JSON Array |
| categories | JSON Array | | categories | JSON Array |
| status | publish / draft | | status | publish / draft |
| sell_enabled | 0 / 1 – Ankauf aktiv? |
| sell_price_mode | percent / fixed / minus |
| sell_price_value | Wert passend zum Modus |
--- ---
@@ -339,6 +710,73 @@ POST /wis/v1/validate_coupon
--- ---
## `wp_wis_sell_log`
| Feld | Beschreibung |
|------|-------------|
| player_name | Minecraft Name |
| server | Server-Slug |
| item_id | minecraft:diamond |
| item_name | Anzeigename |
| quantity | Verkaufte Menge |
| price_per_item | Ankaufspreis pro Stück |
| total_paid | Ausgezahlter Gesamtbetrag |
| sold_at | Zeitstempel |
---
## `wis_fly_abos` *(Spigot MySQL)*
| Feld | Beschreibung |
|------|-------------|
| player_name | Minecraft Name |
| label | Anzeigename des Pakets |
| monthly_price | Monatlicher Beitrag (Vault) |
| cancelled | 0 / 1 – Kündigung vorgemerkt? |
| cancellation_reason | `user` oder `payment_failed` |
| next_billing_date | Datum der nächsten Abbuchung (immer 1. des Monats) |
| period_end | Letzter Tag der aktuellen Abo-Periode (Monatsende) |
| 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 |
---
## `wis_plot_extra_slots` *(Spigot MySQL)*
| Feld | Beschreibung |
|------|-------------|
| player_name | Minecraft Name |
| extra_slots | Dauerhaft gekaufte Zusatz-Slots |
| last_perm | Zuletzt gesetzter `plots.plot.<n>` Wert (für sauberes LP-Update) |
| granted_at | Zeitstempel der letzten Vergabe |
---
## `wis_plot_abos` *(Spigot MySQL)*
| Feld | Beschreibung |
|------|-------------|
| player_name | Minecraft Name |
| label | Anzeigename des Pakets |
| abo_slots | Anzahl der Abo-Slots |
| monthly_price | Monatlicher Beitrag (Vault) |
| cancelled | 0 / 1 – Kündigung vorgemerkt? |
| cancellation_reason | `user` oder `payment_failed` |
| next_billing_date | Datum der nächsten Abbuchung (immer 1. des Monats) |
| period_end | Letzter Tag der aktuellen Abo-Periode (Monatsende) |
| granted_at | Aktivierungszeitpunkt |
---
## `wp_wis_servers` ## `wp_wis_servers`
Serverdefinitionen Serverdefinitionen
@@ -362,6 +800,120 @@ Bei 1500+ PNG-Dateien:
--- ---
# 🗿 ArmorStand-Editor (SurvivalPlus)
## Übersicht
Der ArmorStand-Editor ermöglicht das vollständige Bearbeiten von ArmorStands direkt ingame – ohne externe Tools.
| Aktion | Beschreibung |
|--------|-------------|
| **Shift+Rechtsklick** auf einen ArmorStand | Editor öffnen |
| **Rechtsklick** auf einen ArmorStand | Hinterlegten BungeeCord-Command / Server-Switch ausführen |
| **Shift+Linksklick** auf einen ArmorStand | ArmorStand löschen |
**Benötigte Permissions:**
| Permission | Beschreibung | Standard |
|------------|-------------|---------|
| `survivalplus.armorstand.edit` | Editor öffnen, Ausrüstung & Pose bearbeiten | op |
| `survivalplus.armorstand.destroy` | ArmorStand per Shift+Linksklick löschen | op |
---
## Haupt-GUI
Öffnet sich per Shift+Rechtsklick oder `/asedit`.
| Slot | Funktion |
|------|---------|
| Sichtbarkeit | Sichtbar / Unsichtbar umschalten |
| Arme | Arme ein-/ausblenden |
| Basisplatte | Basisplatte ein-/ausblenden |
| Schwerkraft | Schwerkraft ein-/ausschalten |
| Größe | Normal / Klein umschalten |
| Unverletzlichkeit | Unverletzlich / Verletzlich umschalten |
| Namens-Anzeige | Customname ein-/ausblenden |
| Namen setzen | Namen per Chat eingeben (Farbcodes mit `&` möglich, `remove` zum Löschen) |
| Kopf / Körper / Arme / Beine | Pose-Sub-GUI öffnen |
| **Ausrüstung** | Ausrüstungs-GUI öffnen |
| **BungeeCord-Command** | BungeeCord-GUI öffnen |
| Pose zurücksetzen | Alle Winkel auf 0° setzen |
| Editor schließen | GUI schließen |
---
## Ausrüstungs-GUI
Öffnet sich über „Ausrüstung" im Haupt-GUI.
**Items setzen:**
- **Shift-Klick** auf ein Item im eigenen Inventar → wird automatisch in den richtigen Slot gesetzt (Helm, Brust, Beine, Schuhe, Mainhand)
- **Item auf Cursor nehmen** (normaler Klick im Inventar) und dann auf einen Ausrüstungs-Slot klicken → setzt das Item; altes Item kommt auf den Cursor zurück
**Items entfernen:**
- Auf einen besetzten Slot klicken **ohne** Cursor-Item → Item geht zurück ins Inventar
| Slot | Ausrüstungsplatz |
|------|----------------|
| 10 | Helm |
| 12 | Brustteil |
| 14 | Beinteil |
| 16 | Schuhe |
| 11 | Mainhand |
| 13 | Offhand |
**Automatische Slot-Erkennung beim Shift-Klick:**
| Item-Typ | Ziel-Slot |
|----------|----------|
| `*_HELMET`, `*_SKULL`, `*_HEAD`, Kürbis, Spielerkopf | Helm |
| `*_CHESTPLATE`, Elytra | Brust |
| `*_LEGGINGS` | Beine |
| `*_BOOTS` | Schuhe |
| Alles andere | Mainhand |
---
## Pose-GUI
Öffnet sich für Kopf, Körper, linken Arm, rechten Arm, linkes Bein oder rechtes Bein.
- Rotation auf **X-, Y- und Z-Achse** je in Schritten von **±5°** (fein) oder **±15°** (grob)
- Aktueller Winkel wird live angezeigt
- Zurück-Pfeil → Haupt-GUI
---
## BungeeCord-Command-GUI
Öffnet sich über „BungeeCord-Command" im Haupt-GUI.
| Option | Beschreibung |
|--------|-------------|
| **Server-Switch** | Spieler wird beim Rechtsklick auf den Stand zu einem anderen BungeeCord-Server weitergeleitet. Server-Namen im Chat eingeben (z.B. `lobby`). |
| **Command ausführen** | Führt beim Rechtsklick einen Befehl als Spieler aus. Befehl **ohne** `/` im Chat eingeben (z.B. `spawn`). |
| **Entfernen** | Löscht den hinterlegten Command/Server-Switch. |
> Mit `cancel` im Chat wird die Eingabe abgebrochen.
>
> Server-Switch und Command schließen sich gegenseitig aus – es kann nur eines aktiv sein.
Commands und Server-Switch-Daten werden im **Persistent Data Container (PDC)** des ArmorStands gespeichert und überleben Server-Neustarts.
---
## Befehle
| Befehl | Beschreibung | Permission |
|--------|-------------|------------|
| `/asedit` | Öffnet den Editor für den nächsten ArmorStand (≤ 5 Blöcke) | `survivalplus.armorstand.edit` |
| `/ascommand` | Alias für `/asedit` | `survivalplus.armorstand.edit` |
| `/showarmorstands [Radius]` | Macht unsichtbare ArmorStands sichtbar | `survivalplus.showarmorstands` |
| `/cleardebugarmorstands` | Entfernt alle Debug-ArmorStands | `survivalplus.cleardebugarmorstands` |
---
# 🔐 Sicherheitshinweis # 🔐 Sicherheitshinweis
Aktuell sind API-Endpunkte öffentlich (`__return_true`). Aktuell sind API-Endpunkte öffentlich (`__return_true`).
@@ -375,8 +927,6 @@ Für Produktion empfohlen:
--- ---
# 📦 Meta **Copyright © 2026 - M_Viper - Alle Rechte vorbehalten**
Version: 2.1.0 Die unbefugte Vervielfältigung, Verbreitung oder Weitergabe dieses Plugins ist strafbar und wird rechtlich verfolgt.
Autor: M_Viper
Lizenz: GPL-2.0-or-later
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff