Files
WP-Ingame-Shop-Pro/README.md
2026-04-25 21:07:27 +00:00

571 lines
10 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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, 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.
---
## ✨ Highlights
- 🛒 **Warenkorb-System**
Mehrere Items pro Bestellung.
Eine Bestellung = eine saubere Datenbankzeile mit JSON-Details.
-**Mehrfachbearbeitung (Bulk Edit)**
Hunderte Items gleichzeitig bearbeiten (Preis, Server, Kategorie, Status, **Ankauf**).
- 💰 **Eigene Währung**
„Coins", „Tokens" oder beliebige virtuelle Währungen.
- 🖼️ **Automatische Bildzuweisung**
`minecraft:diamond``minecraft_diamond.png`
Ideal für große Bildsammlungen (1500+ Dateien).
- 🔥 **Daily Deal & Sale-System**
- 🎫 **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).
- 🌐 **REST API ohne RCON**
- 📊 **Top-Spender & Umsatzstatistik**
---
## 🚀 Installation
### WordPress Plugin
1. Ordner `wp-ingame-shop-pro` nach:
```
wp-content/plugins/
```
2. Plugin im WordPress Backend aktivieren.
3. Fertig.
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 und Rang-Sessions)
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
```
---
# 🎮 Ingame-Befehle
## 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` |
## 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) |
---
# 🖼️ Bilder-Konfiguration (Gitea Raw)
## 📂 Basis-URL für alle Item-Bilder
```
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/images/
```
### 🔧 Eintragen im Plugin
**Ingame Shop → Einstellungen → Bilder Basis-URL**
Eintragen:
```
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/images/
```
---
## 📌 Automatische Bildlogik
Item-ID im Shop:
```
minecraft:diamond
```
Automatisch geladen wird:
```
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/images/minecraft_diamond.png
```
Regeln:
- `:` wird zu `_`
- Dateiendung = `.png`
- Keine manuelle Bildzuweisung notwendig
---
# 📥 Quick JSON Import (Direkt von Gitea)
## 🔗 Import-URL
```
https://git.viper.ipv64.net/M_Viper/WP-Ingame-Shop-Pro/raw/branch/main/items.json
```
---
## 🛠️ Import durchführen
1. **Ingame Shop → JSON Tools**
2. **Import**
3. URL einfügen
4. Import starten
Ideal für:
- Kompletten Shop-Aufbau in Sekunden
- Regelmäßige Synchronisation
- Kombination mit Bulk Edit
---
# 🛠️ Admin-Bereich
## 1⃣ Einstellungen
- Shop Header Text
- Währungsname (z.B. Coins)
- Bilder Basis-URL
- Daily Deal (% Rabatt)
- Gutscheine auf Sale-Items erlauben / verbieten
---
## 2⃣ Items Verwaltung
### Einzelbearbeitung
- Item ID (`minecraft:diamond`)
- 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 auf Ankauf konfigurieren.
1. Items anhaken
2. „Massenaktionen" wählen:
- Server zuweisen
- Preis ändern
- Angebot ändern
- Kategorie setzen
- Status ändern
- **Ankauf konfigurieren**
3. Anwenden
4. Änderungen speichern
Bei **Ankauf konfigurieren** siehst du pro Item:
- Checkbox zum Aktivieren/Deaktivieren
- Modus-Auswahl (%, minus, fix)
- Wert-Eingabe
- Live-Vorschau des Ankaufspreises
---
## 3⃣ Weitere Bereiche
### 📦 Bestellungen
- Bestellungen anzeigen
- Manuell abschließen
- Stornieren
Status:
```
pending
processing
completed
cancelled
```
---
### 🌐 Server
Beispiel:
```
lobby
survival
skyblock
```
Frontend-Filter werden automatisch generiert.
---
### 📂 Kategorien
Beispiel:
```
Blöcke
Waffen
Rüstung
Ranks
```
---
### 🎫 Gutscheine
- `fixed` (Festbetrag)
- `percent` (Prozent)
- Ablaufdatum
- Nutzungslimit
- Ausschluss bei Angeboten
---
### 📊 Top Spender
Automatische Auswertung der Bestellungen.
---
# 🎮 Frontend Nutzung
Shortcode:
```
[ingame_shop_form]
```
---
## Spieler-Funktionen
- Suche
- Server-Filter
- Kategorie-Tabs
- Warenkorb
- Gutschein-Eingabe
- Server-Validierung beim Checkout
---
# 📡 REST API
Basis:
```
/wp-json/wis/v1/
```
---
## Bestellung erstellen
```
POST /wis/v1/order
```
```json
{
"player": "Name",
"server": "survival",
"cart": [
{ "id": "item_id", "quantity": 1 }
],
"coupon_code": "CODE"
}
```
---
## Offene Bestellungen abrufen
```
GET /wis/v1/pending_orders?player=Name
```
---
## Status ändern
```
POST /wis/v1/execute_order
POST /wis/v1/complete_order
POST /wis/v1/cancel_order
```
---
## Gutschein validieren
```
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`
| Feld | Beschreibung |
|------|-------------|
| item_id | minecraft:diamond |
| name | Anzeigename |
| price | Standardpreis |
| offer_price | Angebotspreis |
| is_offer | 0 / 1 |
| 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 |
---
## `wp_wis_orders`
| Feld | Beschreibung |
|------|-------------|
| player_name | Minecraft Name |
| server | Zielserver |
| item_title | Zusammenfassung |
| price | Gesamtpreis |
| response | JSON |
| status | pending / processing / completed / cancelled |
---
## `wp_wis_coupons`
| Feld | Beschreibung |
|------|-------------|
| code | Gutschein |
| type | fixed / percent |
| value | Rabattwert |
| usage_limit | Limit |
| used_count | Nutzung |
---
## `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 |
---
## `wp_wis_servers`
Serverdefinitionen
---
## `wp_wis_categories`
Kategoriedefinitionen
---
# ⚡ Performance Empfehlung
Bei 1500+ PNG-Dateien:
- CDN empfohlen
- PNG verlustfrei komprimieren
- Gitea Caching aktivieren
- Optional WebP-Versionen erstellen
---
# 🔐 Sicherheitshinweis
Aktuell sind API-Endpunkte öffentlich (`__return_true`).
Für Produktion empfohlen:
- API-Key Header
- Bearer Token
- IP Whitelisting
- Nonce/Signature System
---
**Copyright © 2026 - M_Viper - Alle Rechte vorbehalten**
Die unbefugte Vervielfältigung, Verbreitung oder Weitergabe dieses Plugins ist strafbar und wird rechtlich verfolgt.