Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c493f18efa | ||
|
|
d387424e0f | ||
|
|
01205de952 | ||
|
|
b3b0ae042b | ||
|
|
876b9cd005 | ||
|
|
d71f15086d | ||
|
|
1409fe5e21 | ||
|
|
f03c10f785 | ||
|
|
9834a9d6da | ||
|
|
902f8ed43c | ||
|
|
d6ed6544db | ||
|
|
30427f7bb3 | ||
|
|
798abcc0f2 | ||
|
|
6df2548399 | ||
|
|
d1618d45c8 | ||
|
|
c25050b88a | ||
|
|
b7f689c726 | ||
|
|
d11fef0032 | ||
|
|
f5b14ffd6f | ||
|
|
8e28d518c3 | ||
|
|
2c3602f271 | ||
|
|
4ff55a3736 | ||
|
|
10f5fb03a7 | ||
|
|
f7b274a794 | ||
|
|
9f9d064139 | ||
|
|
f571c9e8f8 | ||
|
|
a7134aaaba | ||
|
|
ebdd4e22bc | ||
|
|
738f6d0218 | ||
|
|
da3dfd717a | ||
|
|
38c51a9beb | ||
|
|
3ba519b53d | ||
|
|
25a3f62b06 | ||
|
|
eeb5b5e74f | ||
|
|
47915c6dd8 | ||
|
|
b398a706fe | ||
|
|
15b875a723 | ||
|
|
de97f3dea7 | ||
|
|
42b0cf8279 | ||
|
|
1c39ab5557 | ||
|
|
38c7327291 | ||
|
|
ff9336c8d1 |
@@ -6,21 +6,29 @@
|
||||
|
||||
<groupId>de.mviper</groupId>
|
||||
<artifactId>IngameShopSpigot</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.2</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>IngameShopSpigot</name>
|
||||
|
||||
<repositories>
|
||||
<!-- PaperMC Repository -->
|
||||
<repository>
|
||||
<id>papermc</id>
|
||||
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<!-- Spigot API -->
|
||||
<!-- Paper API (enthält Spigot + Adventure + Paper-Events) -->
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.20.1-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Vault fEconomy -->
|
||||
<!-- Vault Economy -->
|
||||
<dependency>
|
||||
<groupId>net.milkbowl.vault</groupId>
|
||||
<artifactId>VaultAPI</artifactId>
|
||||
@@ -42,7 +50,7 @@
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Shade Plugin optional fAbh-->
|
||||
<!-- Shade Plugin -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,15 +1,74 @@
|
||||
# Hier nur die Domain eingeben (ohne /wp-json am Ende)
|
||||
wordpress-url: "<Wordpress URL>"
|
||||
# IngameShopSpigot v6.4 Konfiguration
|
||||
# ==========================================
|
||||
|
||||
# WICHTIG: Der Name des Servers, wie er in WordPress hinterlegt ist (Slug).
|
||||
# Damit wird verhindert, dass ein Spieler auf Lobby etwas für Survival kauft und es dort erhält.
|
||||
server-name: "Lobby"
|
||||
# Deine WordPress-URL (kein abschließendes /)
|
||||
wordpress-url: "https://deine-domain.de"
|
||||
|
||||
# Name der Währung (ersetze Coins durch deinen Namen, z.B. Dollar, Points, etc.)
|
||||
currency-name: "Euro"
|
||||
# API-Key aus den WordPress-Einstellungen:
|
||||
# Ingame Shop → Einstellungen → 🔑 Spigot API-Key → Kopieren
|
||||
api-key: "HIER_DEN_KEY_AUS_WORDPRESS_EINTRAGEN"
|
||||
|
||||
# Alle wie viel Sekunden (ticks) nach neuen Bestellungen gesucht werden soll (Standard: 10 Sekunden)
|
||||
check-interval: 5
|
||||
# Name dieses Servers (muss mit dem Server-Slug in WordPress übereinstimmen)
|
||||
server-name: "survival"
|
||||
|
||||
# Debug Modus (true/false)
|
||||
debug-mode: true
|
||||
# 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
|
||||
# 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
|
||||
@@ -1,25 +1,152 @@
|
||||
name: IngameShopSpigot
|
||||
version: 1.2
|
||||
main: de.mviper.spigot.IngameShopSpigot
|
||||
version: 1.0
|
||||
api-version: "1.20"
|
||||
api-version: 1.19
|
||||
depend: [Vault]
|
||||
softdepend: [BCEconomy, NexEco]
|
||||
description: Verbindet den WP Ingame Shop Pro mit dem Spigot-Server
|
||||
author: M_Viper
|
||||
description: Ingame-Shop Plugin (Spigot) empfPlugin-Messages vom Bungee und vergibt Items / zieht Geld via Vault.
|
||||
|
||||
# Vault ist optional, daher softdepend
|
||||
softdepend:
|
||||
- Vault
|
||||
|
||||
# Beispiel-Command (optional, kann in Java implementiert werden)
|
||||
commands:
|
||||
ingameshop:
|
||||
description: oder testet den IngameShop (Admin/Debug)
|
||||
usage: /ingameshop
|
||||
orders:
|
||||
description: Zeigt deine letzten Bestellungen im Shop an
|
||||
usage: /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
|
||||
|
||||
# Beispiel-Permissions (anpassbar)
|
||||
permissions:
|
||||
ingameshop.admin:
|
||||
description: Zugriff auf Admin-Funktionen des IngameShops
|
||||
ingameshop.orders:
|
||||
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.use:
|
||||
description: Basisrecht, um Shop-Features zu nutzen
|
||||
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
|
||||
@@ -1,7 +1,7 @@
|
||||
# WP Ingame Shop Pro
|
||||
|
||||
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.
|
||||
|
||||
@@ -14,10 +14,10 @@ Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und
|
||||
Eine Bestellung = eine saubere Datenbankzeile mit JSON-Details.
|
||||
|
||||
- ⚡ **Mehrfachbearbeitung (Bulk Edit)**
|
||||
Hunderte Items gleichzeitig bearbeiten (Preis, Server, Kategorie, Status).
|
||||
Hunderte Items gleichzeitig bearbeiten (Preis, Server, Kategorie, Status, **Ankauf**).
|
||||
|
||||
- 💰 **Eigene Währung**
|
||||
„Coins“, „Tokens“ oder beliebige virtuelle Währungen.
|
||||
„Coins", „Tokens" oder beliebige virtuelle Währungen.
|
||||
|
||||
- 🖼️ **Automatische Bildzuweisung**
|
||||
`minecraft:diamond` → `minecraft_diamond.png`
|
||||
@@ -28,6 +28,18 @@ Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und
|
||||
- 🎫 **Smart Coupons**
|
||||
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**
|
||||
|
||||
- 📊 **Top-Spender & Umsatzstatistik**
|
||||
@@ -36,9 +48,13 @@ Dieses Plugin nutzt eine eigene Datenbankstruktur für maximale Performance und
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### WordPress Plugin
|
||||
|
||||
1. Ordner `wp-ingame-shop-pro` nach:
|
||||
|
||||
```
|
||||
wp-content/plugins/
|
||||
```
|
||||
|
||||
2. Plugin im WordPress Backend aktivieren.
|
||||
3. Fertig.
|
||||
@@ -48,6 +64,291 @@ Bei Aktivierung werden automatisch erstellt:
|
||||
- Datenbanktabellen (`wp_wis_*`)
|
||||
- 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)
|
||||
@@ -134,28 +435,44 @@ Ideal für:
|
||||
### Einzelbearbeitung
|
||||
|
||||
- Item ID (`minecraft:diamond`)
|
||||
- Typ: Minecraft Item | ✈ Fly-Gutschein | 👑 Rang (LuckPerms) | ✈ Fly-Abo | 📦 Plot-Slots (einmalig) | 📦 Plot-Abo (monatlich)
|
||||
- Preis
|
||||
- Angebotspreis
|
||||
- Server-Zuweisung
|
||||
- Kategorie
|
||||
- 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)
|
||||
|
||||
Beispiel: 100 Items einem Server zuweisen.
|
||||
Beispiel: 100 Items auf Ankauf konfigurieren.
|
||||
|
||||
1. Items anhaken
|
||||
2. „Massenaktionen“ wählen:
|
||||
2. „Massenaktionen" wählen:
|
||||
- Server zuweisen
|
||||
- Preis ändern
|
||||
- Angebot ändern
|
||||
- Kategorie setzen
|
||||
- Status ändern
|
||||
- **Ankauf konfigurieren**
|
||||
3. Anwenden
|
||||
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
|
||||
Waffen
|
||||
Rüstung
|
||||
R�stung
|
||||
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
|
||||
|
||||
## `wp_wis_items`
|
||||
@@ -311,6 +679,9 @@ POST /wis/v1/validate_coupon
|
||||
| servers | JSON Array |
|
||||
| categories | JSON Array |
|
||||
| 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`
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
Autor: M_Viper
|
||||
Lizenz: GPL-2.0-or-later
|
||||
Die unbefugte Vervielfältigung, Verbreitung oder Weitergabe dieses Plugins ist strafbar und wird rechtlich verfolgt.
|
||||
+667
-667
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user