Files
PlayerDataSync/PREMIUM_INTEGRATION.md
DerGamer009 4aa5a2121b #0001
2026-02-08 03:41:09 +01:00

240 lines
7.3 KiB
Markdown

# PlayerDataSync Premium - Integration Guide
## Übersicht / Overview
Dieses Dokument beschreibt, wie die Premium-Komponenten (Lizenz-Validierung und Update-Check) in PlayerDataSync Premium integriert werden.
This document describes how to integrate the premium components (license validation and update check) into PlayerDataSync Premium.
## Komponenten / Components
### 1. LicenseValidator
**Pfad / Path:** `com.example.playerdatasync.premium.api.LicenseValidator`
**Funktion / Function:**
- Validiert Lizenzschlüssel gegen die CraftingStudio Pro API
- Validates license keys against the CraftingStudio Pro API
- Caching von Validierungsergebnissen (30 Minuten)
- Caches validation results (30 minutes)
**API Endpoint:**
```
POST https://craftingstudiopro.de/api/license/validate
Body: { "licenseKey": "YOUR-KEY", "pluginId": "playerdatasync-premium" }
Response: { "valid": boolean, "message": string, "purchase": {...} }
```
### 2. PremiumUpdateChecker
**Pfad / Path:** `com.example.playerdatasync.premium.api.PremiumUpdateChecker`
**Funktion / Function:**
- Prüft auf Updates über die CraftingStudio Pro API
- Checks for updates via CraftingStudio Pro API
- Benachrichtigt OPs über verfügbare Updates
- Notifies OPs about available updates
**API Endpoint:**
```
GET https://craftingstudiopro.de/api/plugins/playerdatasync-premium/latest
Response: { "version": string, "downloadUrl": string, ... }
```
### 3. LicenseManager
**Pfad / Path:** `com.example.playerdatasync.premium.managers.LicenseManager`
**Funktion / Function:**
- Verwaltet Lizenz-Validierung und Caching
- Manages license validation and caching
- Periodische Re-Validierung (alle 24 Stunden)
- Periodic re-validation (every 24 hours)
- Automatische Plugin-Deaktivierung bei ungültiger Lizenz
- Automatic plugin disabling on invalid license
### 4. PremiumIntegration
**Pfad / Path:** `com.example.playerdatasync.premium.PremiumIntegration`
**Funktion / Function:**
- Wrapper-Klasse für einfache Integration
- Wrapper class for easy integration
- Kombiniert LicenseManager und PremiumUpdateChecker
- Combines LicenseManager and PremiumUpdateChecker
## Integration in Hauptklasse / Integration in Main Class
### Beispiel / Example:
```java
package com.example.playerdatasync.premium.core;
import org.bukkit.plugin.java.JavaPlugin;
import com.example.playerdatasync.premium.PremiumIntegration;
public class PlayerDataSyncPremium extends JavaPlugin {
private PremiumIntegration premiumIntegration;
@Override
public void onEnable() {
getLogger().info("Enabling PlayerDataSync Premium...");
// Save default config
saveDefaultConfig();
// Initialize premium features (license validation)
premiumIntegration = new PremiumIntegration(this);
if (!premiumIntegration.initialize()) {
// License validation failed, plugin will be disabled
getLogger().severe("License validation failed. Plugin disabled.");
return;
}
// Only continue if license is valid
if (!premiumIntegration.isLicenseValid()) {
getLogger().severe("Invalid license. Plugin disabled.");
getServer().getPluginManager().disablePlugin(this);
return;
}
// ... rest of your plugin initialization ...
getLogger().info("PlayerDataSync Premium enabled successfully!");
}
@Override
public void onDisable() {
getLogger().info("Disabling PlayerDataSync Premium...");
if (premiumIntegration != null) {
premiumIntegration.shutdown();
}
// ... rest of shutdown code ...
getLogger().info("PlayerDataSync Premium disabled successfully");
}
public PremiumIntegration getPremiumIntegration() {
return premiumIntegration;
}
}
```
## Konfiguration / Configuration
### config.yml Beispiel / Example:
```yaml
# License Configuration
license:
key: YOUR-LICENSE-KEY-HERE # Your license key from CraftingStudio Pro
# Update Checker
update_checker:
enabled: true
notify_ops: true
timeout: 10000
# Premium Features
premium:
revalidation_interval_hours: 24
cache_validation: true
enable_premium_features: true
```
## API Verwendung / API Usage
### Lizenz validieren / Validate License:
```java
LicenseValidator validator = new LicenseValidator(plugin);
// Asynchron
CompletableFuture<LicenseValidationResult> future =
validator.validateLicenseAsync("YOUR-LICENSE-KEY");
future.thenAccept(result -> {
if (result.isValid()) {
// License is valid
PurchaseInfo purchase = result.getPurchase();
// Use purchase information
} else {
// License is invalid
String message = result.getMessage();
}
});
// Synchron (blockiert Thread)
LicenseValidationResult result = validator.validateLicense("YOUR-LICENSE-KEY");
```
### Update prüfen / Check for Updates:
```java
PremiumUpdateChecker updateChecker = new PremiumUpdateChecker(plugin);
updateChecker.check(); // Asynchron
```
### LicenseManager verwenden / Use LicenseManager:
```java
LicenseManager licenseManager = new LicenseManager(plugin);
licenseManager.initialize(); // Validiert Lizenz beim Start
// Prüfen ob Lizenz gültig ist
if (licenseManager.isLicenseValid()) {
// Plugin kann verwendet werden
}
// Lizenz neu validieren
licenseManager.revalidateLicense();
// Neue Lizenz setzen
licenseManager.setLicenseKey("NEW-LICENSE-KEY");
```
## Fehlerbehandlung / Error Handling
### Rate Limiting:
Die API hat ein Rate Limit von 100 Requests pro Stunde pro IP.
The API has a rate limit of 100 requests per hour per IP.
Bei Überschreitung wird ein `429 Too Many Requests` Status Code zurückgegeben.
On exceeding the limit, a `429 Too Many Requests` status code is returned.
### Netzwerk-Fehler / Network Errors:
- `UnknownHostException`: Keine Internetverbindung / No internet connection
- `SocketTimeoutException`: Timeout beim Verbindungsaufbau / Connection timeout
- Alle Fehler werden geloggt / All errors are logged
## Sicherheit / Security
- **Lizenzschlüssel maskieren**: In Logs werden nur die ersten und letzten 4 Zeichen angezeigt
- **License key masking**: Only first and last 4 characters shown in logs
- **Caching**: Validierungsergebnisse werden 30 Minuten gecacht
- **Caching**: Validation results are cached for 30 minutes
- **Re-Validierung**: Automatische Re-Validierung alle 24 Stunden
- **Re-validation**: Automatic re-validation every 24 hours
## Troubleshooting
### Lizenz wird nicht akzeptiert / License not accepted:
1. Prüfen Sie den Lizenzschlüssel in `config.yml`
2. Check license key in `config.yml`
3. Stellen Sie sicher, dass die Lizenz für "playerdatasync-premium" gültig ist
4. Ensure license is valid for "playerdatasync-premium"
5. Prüfen Sie die Logs auf Fehlermeldungen
6. Check logs for error messages
### Update-Check funktioniert nicht / Update check not working:
1. Prüfen Sie die Internetverbindung
2. Check internet connection
3. Prüfen Sie, ob `update_checker.enabled: true` in der Config ist
4. Check if `update_checker.enabled: true` in config
5. Prüfen Sie die Logs auf Rate-Limit-Fehler
6. Check logs for rate limit errors
## API Dokumentation / API Documentation
Vollständige API-Dokumentation: https://www.craftingstudiopro.de/docs/api
Complete API documentation: https://www.craftingstudiopro.de/docs/api