Vollständiges Sample-Code-Repository für das modulare Plugin-System
# Vollständige Repository-Struktur anzeigen
cat VERZEICHNIS.md
# Alle Module bauen
mvn clean package- VERZEICHNIS.md - Vollständige Dateistruktur
- SCHNELLSTART.md - 5-Minuten-Einstieg
- FERTIGSTELLUNG.md - Was ist fertig, was fehlt
- CONTRIBUTING.md - Entwicklungsrichtlinien (EN)
| Modul | Status | Beschreibung |
|---|---|---|
| Core | ⚙️ Basis | Provider-System, APIs |
| Storage | 📦 Sprint 3 | Truhen-Verwaltung |
| Merchants | 🤝 Sprint 4-5 | NPC-Handel |
| TravelSystem | 🚢 Sprint 8-9 | Reisende Händler |
| AdminShops | 🏪 Sprint 6-7 | Template-basierte Shops |
Provider-basierte Architektur:
- ✅ Abstraktion von Dependencies (Towny, Vault, Citizens)
- ✅ Sanfter Abbau bei fehlenden Plugins
- ✅ Exception-basiertes Feature-Handling
Modulares Design:
- ✅ Unabhängige Module
- ✅ Klare Interfaces
- ✅ Keine direkten Plugin-Dependencies
KI-optimierte Entwicklung:
- ✅ Sprint-basierte Planung
- ✅ Fokussierte Arbeitspakete
- ✅ Klare Deliverables
- Paper API: 1.21.1
- Java: 21
- Build Tool: Maven
- Datenbank: SQLite / MySQL
Optionale Dependencies:
- Towny (PlotProvider)
- Vault (EconomyProvider)
- Citizens (NPCProvider)
- MMOItems (ItemProvider)
Phase: 📝 Planung / Sample-Entwicklung
Version: 1.0-SNAPSHOT
Fertiggestellt:
- ✅ Architektur-Design
- ✅ Provider-System
- ✅ Sample-Code (Core + Storage)
- ✅ Dokumentation
- ✅ Sprint-Planung
In Arbeit:
- 🔨 Core-Implementierung (Sprint 1)
Core Plugin:
- 7 Provider-Interfaces
- 2 Provider-Implementierungen (Towny, NoOp)
- 5 Core-Klassen
- 2 Config-Dateien
Storage Modul:
- Modul-Hauptklasse
- Register-Command-Beispiel
- Deutsche Haupt-Docs
- Englische Referenz-Docs
- Core README
- Module READMEs
- Parent POM
- .gitignore
# Schnellstart (5 Minuten)
cat SCHNELLSTART.md
# Vollständiges Verzeichnis
cat VERZEICHNIS.md
# Core verstehen
cat core/LIESMICH.md# Provider-Interfaces anschauen
ls -la core/src/main/java/de/fallenstar/core/provider/
# Beispiel-Modul
cat module-storage/src/main/java/de/fallenstar/storage/StorageModule.javaSprint 1: Core Plugin
cd core/
# Fehlende Dateien implementieren:
# - NoOpEconomyProvider.java
# - NoOpNPCProvider.java
# - VaultEconomyProvider.java
# - CitizensNPCProvider.java
# - SQLiteDataStore.javaProblem: Direkte Plugin-Dependencies sind starr
// ❌ SCHLECHT: Direkte Dependency
import com.palmergames.bukkit.towny.*;
TownBlock block = TownyAPI.getTownBlock(loc);Lösung: Provider-Abstraktion
// ✅ GUT: Provider-Interface
PlotProvider provider = registry.getPlotProvider();
if (provider.isAvailable()) {
Plot plot = provider.getPlot(loc);
}Bei fehlendem Plugin:
// NoOp-Provider wirft Exception
public Plot getPlot(Location loc)
throws ProviderFunctionalityNotFoundException {
throw new ProviderFunctionalityNotFoundException(/*...*/);
}
// Modul behandelt es elegant
try {
Plot plot = provider.getPlot(loc);
// Plot-basiertes Feature
} catch (ProviderFunctionalityNotFoundException e) {
// Fallback oder Feature deaktivieren
}Core (Basis)
↑
Storage ← Merchants ← TravelSystem
↑
AdminShops
Regeln:
- Module hängen nur nach oben ab
- Keine zirkulären Dependencies
- Saubere Interfaces
mvn clean packagecd core/
mvn clean packagecp core/target/*.jar /pfad/zum/server/plugins/
cp module-*/target/*.jar /pfad/zum/server/plugins/F: Wo fange ich an?
A: Lies SCHNELLSTART.md, dann VERZEICHNIS.md, dann beginne mit Sprint 1
F: Kann ich das für meinen Server verwenden?
A: Ja! Das ist Sample-Code zum Weiterbauen
F: Was wenn ich Towny/Vault/etc. nicht habe?
A: Kein Problem! NoOp-Provider werden automatisch verwendet
F: Brauche ich alle Module?
A: Nein! Nutze nur was du brauchst. Start mit Core + Storage
F: Wie füge ich ein eigenes Modul hinzu?
A: Kopiere die module-storage Struktur, folge dem Pattern
Dokumentation:
- VERZEICHNIS.md - Vollständige Struktur
- FERTIGSTELLUNG.md - Status & TODOs
- core/LIESMICH.md - Provider-System
- CONTRIBUTING.md - Entwicklungsrichtlinien
Sample-Code:
- Alle Dateien sind umfassend kommentiert
- Folge existierenden Patterns
- Javadoc auf allen public methods
Für detaillierte Informationen siehe VERZEICHNIS.md
Viel Erfolg! 🚀