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

7.3 KiB

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:

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:

# 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:

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:

PremiumUpdateChecker updateChecker = new PremiumUpdateChecker(plugin);
updateChecker.check(); // Asynchron

LicenseManager verwenden / Use LicenseManager:

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