# NexusLobby

NexusLobby

Ein umfassendes, modulares Lobby-Plugin für Minecraft Server (Paper/Spigot 1.21+) mit High-End NPC-System, umfangreichen Sicherheitsfunktionen, Soccer-Modul, Parkour-System und voller Konfigurierbarkeit. ![Minecraft](https://img.shields.io/badge/Minecraft-1.21+-green) ![Java](https://img.shields.io/badge/Java-21+-orange) ![License](https://img.shields.io/badge/License-Proprietary-red) ![Version](https://img.shields.io/badge/Version-1.1.0-blue) --- ## 🎯 Lizenz und Nutzungsbedingungen **ALLE RECHTE VORBEHALTEN** Dieses Plugin ist urheberrechtlich geschützt. Es gelten folgende Bedingungen: - Die Nutzung ist ausschließlich für den persönlichen Gebrauch gestattet. - Die Weitergabe, Verbreitung oder Veröffentlichung des Plugins ist **strengstens untersagt**. - Jegliche Änderung, Modifikation oder Dekompilierung des Codes ist **verboten**. - Das Plugin darf nicht verkauft, vermietet oder anderweitig kommerziell genutzt werden. - Eine Weitergabe an Dritte ist ohne ausdrückliche schriftliche Genehmigung nicht gestattet. Bei Verstoß gegen diese Bedingungen behalten wir uns rechtliche Schritte vor. --- ## ✨ Features ### 🤖 High-End NPC & ArmorStand System - **Conversation Manager** - Komplexe Dialoge zwischen NPCs mit Sprechblasen und Sound-Effekten - **Dynamic KI** - NPCs reagieren auf Tageszeit (Fackel nachts) und ziehen bei Annäherung von Spielern das Schwert - **LookAt-Logik** - NPCs verfolgen flüssig die Kopfbewegungen von Spielern in der Nähe - **Command Binding** - Binde Spieler-, Konsolen- oder Bungee-Befehle an NPC-Slots (0-9) - **Status-Backup** - Automatisches Speichern von NPC-Namen via PersistentDataContainer & Tags ### ⚽ Soccer/Fußball-System - **Interaktiver Soccer-Ball** - Physics-basierter Ball mit realistischer Physik - **Dribbling** - Ball folgt Spielern automatisch in der Nähe - **Kick-Mechanik** - Schieße den Ball durch Schlagen oder Angriff - **Wall-Bounce** - Realistische Wand-Abpraller mit Sound-Effekten - **Partikel-System** - Geschwindigkeits-abhängige Partikel (SONIC_BOOM, CRIT, SMOKE) - **Auto-Respawn** - Automatischer Respawn bei Inaktivität oder Void-Fall - **Anti-Duplikat-System** - Verhindert mehrfache Ball-Instanzen ### 🏃 Parkour-System - **Unsichtbare Checkpoints** - Partikel-basierte Checkpoint-Markierungen - **Timer-System** - Präzise Zeitmessung mit ActionBar-Anzeige - **Bestenliste** - Persistente Top-10 Bestzeiten-Speicherung - **NPC-Trainer** - Interaktive NPCs zum Starten des Parkours - **Fail-Safe** - Teleport zum letzten Checkpoint bei Fehler ### 🌍 Lobby-Management - **Spawn-System** - Automatischer Teleport zum Spawn bei Join/Respawn - **Portal-System** - BungeeCord-Portale für nahtlose Server-Wechsel mit Partikel-Effekten - **Build-Modus** - Schnelles Umschalten zwischen Bau- und Spielmodus - **Double-Jump** - Konfigurierbarer Doppelsprung mit Cooldown und Partikeln - **Worldborder** - Unsichtbare Lobby-Begrenzung (Circle/Square) - **Intro-Tour** - Cinematic Kamera-Tour für neue Spieler ### 🛡️ Sicherheit & Protection - **VPN-Blocker** - Blockiert VPN/Proxy-Verbindungen via proxycheck.io API - **Country-Blocker** - Geo-IP Filter (Whitelist/Blacklist für Länder) - **Maintenance-Modus** - Vollständiger Wartungsmodus mit Whitelist-Funktion - **World-Protection** - Schutz vor Griefing, Hunger, Fallschaden und PvP - **Anti-Grief** - Verhindert Block-Break, Item-Drop und Explosionen - **Security-Module** - Umfassende Sicherheitsprüfungen beim Join ### 📊 Visuelle Elemente - **Scoreboard** - Vollständig animiert mit PlaceholderAPI-Support - **Tablist** - Dynamische Header/Footer mit Permissions-Anzeige - **BossBar** - Rotierende Nachrichten mit Farb-Effekten - **ActionBar** - Typewriter-Effekt für permanente Status-Anzeigen - **Hologramme** - Text-Displays mit flexibler Positionierung - **MapArt** - Bild-Generator für Item-Frames aus URLs ### 🎮 Item-System - **Compass** - Server-Switcher GUI - **Player-Hider** - Sichtbarkeits-Toggle für andere Spieler - **Gadgets** - Konfigurierbares Item-System mit Custom-Slots - **Player-Inspector** - Detaillierte Spieler-Informationen per Click --- ## 📋 Befehle ### Haupt-Commands | Befehl | Beschreibung | Berechtigung | |--------|--------------|--------------| | `/nexuslobby reload` | Lädt das Plugin neu | `nexuslobby.admin` | | `/nexuslobby setspawn` | Setzt den Lobby-Spawn | `nexuslobby.admin` | | `/nexuslobby silentjoin ` | Versteckter Join/Quit | `nexuslobby.admin` | | `/nexuslobby sb ` | Scoreboard-Kontrolle | `nexuslobby.admin` | | `/spawn` | Teleport zum Spawn | `nexuslobby.spawn` | ### NPC & ArmorStand | Befehl | Beschreibung | Berechtigung | |--------|--------------|--------------| | `/nexustools` | NPC Editor GUI (Rotation, KI) | `nexuslobby.armorstand.use` | | `/nexuscmd add [cmd]` | Bindet Command an NPC | `nexuslobby.armorstand.cmd` | | `/nexuscmd remove ` | Entfernt Commands | `nexuslobby.armorstand.cmd` | | `/nexuscmd conv select1-4` | Wählt NPCs für Dialog | `nexuslobby.armorstand.cmd` | | `/nexuscmd conv link ` | Verknüpft Dialog | `nexuslobby.armorstand.cmd` | | `/nexuscmd say ` | NPC-Sprechblase | `nexuslobby.armorstand.cmd` | ### Parkour | Befehl | Beschreibung | Berechtigung | |--------|--------------|--------------| | `/nexuslobby parkour setstart` | Markiert Start-NPC | `nexuslobby.admin` | | `/nexuslobby parkour setcheckpoint ` | Setzt Checkpoint | `nexuslobby.admin` | | `/nexuslobby parkour setfinish` | Setzt Ziel | `nexuslobby.admin` | | `/nexuslobby parkour reset` | Löscht eigene Zeit | `nexuslobby.admin` | | `/nexuslobby parkour clear` | Löscht alle Zeiten | `nexuslobby.admin` | | `/setstart` | Alias für setstart | `nexuslobby.admin` | | `/setcheckpoint` | Alias für setcheckpoint | `nexuslobby.admin` | | `/setfinish` | Alias für setfinish | `nexuslobby.admin` | ### Soccer/Fußball | Befehl | Beschreibung | Berechtigung | |--------|--------------|--------------| | `/nexuslobby ball setspawn` | Setzt Ball-Spawn | `nexuslobby.admin` | | `/nexuslobby ball respawn` | Spawnt Ball neu | `nexuslobby.admin` | | `/nexuslobby ball remove` | Entfernt Ball | `nexuslobby.admin` | ### Portal & Server | Befehl | Beschreibung | Berechtigung | |--------|--------------|--------------| | `/portal create ` | Erstellt Portal | `nexuslobby.portal` | | `/portal delete ` | Löscht Portal | `nexuslobby.portal` | | `/portal list` | Zeigt alle Portale | `nexuslobby.portal` | | `/giveportalwand` | Portal-Werkzeug | `nexuslobby.portal.give` | | `/serverswitcher` | Öffnet Server-GUI | `nexuslobby.serverswitcher` | ### Sonstiges | Befehl | Beschreibung | Berechtigung | |--------|--------------|--------------| | `/build` | Build-Modus toggle | `nexuslobby.build` | | `/maintenance ` | Wartungsmodus | `nexuslobby.maintenance` | | `/settings` | Lobby-Einstellungen (Gamerules) | `nexuslobby.admin` | | `/holo create [text]` | Erstellt Hologramm | `nexuslobby.hologram` | | `/holo delete ` | Löscht Hologramm | `nexuslobby.hologram` | | `/mapart ` | Erstellt MapArt | `nexuslobby.mapart` | | `/intro ` | Intro-Tour-Verwaltung | `nexuslobby.admin` | | `/border ` | Worldborder-Setup | `nexuslobby.admin` | --- ## ⚙️ Konfiguration ### config.yml (Auszug) ```yaml # Spawn-Einstellungen spawn: world: "world" x: 0.5 y: 64.0 z: 0.5 yaw: 0.0 pitch: 0.0 # Lobby-Einstellungen lobby: allow-fly: false pvp-enabled: false build-enabled: false default-gamemode: Adventure clear-inventory-on-join: true # Server-Mapping (für Status-Check) servers: survival: ip: "127.0.0.1" port: 25566 skyblock: ip: "127.0.0.1" port: 25567 # Ball/Soccer-Einstellungen ball: respawn_delay: 60 # Sekunden bis Auto-Respawn # Worldborder worldborder: enabled: true type: "SQUARE" # SQUARE oder CIRCLE radius: 50.0 ``` ### conversations.yml ```yaml conversations: willkommen: dialogue: - "&eWächter: &7Willkommen auf dem Server!" - "&aBürger: &7Schön, dass du da bist!" - "&eWächter: &7Viel Spaß beim Erkunden!" quest_dialog: dialogue: - "&6Quest-Geber: &7Hast du meine Quest erledigt?" - "&aHeld: &7Ja, ich habe alle Monster besiegt!" links: # UUID des ersten NPCs "550e8400-e29b-41d4-a716-446655440000": partner: "550e8400-e29b-41d4-a716-446655440001" # UUID des zweiten NPCs dialog: willkommen automated: true # Startet automatisch ``` ### visuals.yml (Auszug) ```yaml # ActionBar-Nachrichten actionbar: enabled: true speed: 3 messages: - "&6&lWillkommen &8» &eauf unserem Server!" - "&b&lViel Spaß &8» &7in der Lobby!" # BossBar bossbar: enabled: true interval: 40 messages: - text: "&6&lNexusLobby &8» &eVersion 1.1.0" color: "YELLOW" ``` --- ## 🌐 Mehrsprachigkeit & Texte Alle Nachrichten, Hilfetexte und Fehler werden zentral über die Datei `lang.yml` im Ordner `src/main/resources` verwaltet. Dort kannst du für jede Sprache (z.B. Deutsch und Englisch) die Texte pflegen und beliebig erweitern. **Beispiel für lang.yml:** ```yaml welcome: de: "Willkommen auf dem Server!" en: "Welcome to the server!" no_permission: de: "§cKeine Berechtigung." en: "§cNo permission." ``` **Sprache umstellen:** Im Code kann die Sprache mit `LangManager.setLanguage("en")` gewechselt werden. Standard ist Deutsch (`de`). **Texte ingame nutzen:** Alle Texte werden im Plugin mit `LangManager.get("key")` abgerufen und sind direkt ingame sichtbar. Änderungen in der lang.yml wirken nach einem Reload sofort. --- ## 🔐 Berechtigungen ### Admin-Berechtigungen | Berechtigung | Beschreibung | |--------------|--------------| | `nexuslobby.admin` | Voller Zugriff auf alle System-Einstellungen | | `nexuslobby.armorstand.cmd` | NPCs konfigurieren und Dialoge verknüpfen | | `nexuslobby.armorstand.use` | Zugriff auf die ArmorStand-Editor GUI | | `nexuslobby.build` | Berechtigung für den Baumodus | | `nexuslobby.portal` | Portale erstellen und löschen | | `nexuslobby.portal.give` | Portal-Werkzeug erhalten | | `nexuslobby.hologram` | Hologramme verwalten | | `nexuslobby.mapart` | MapArt erstellen | | `nexuslobby.maintenance` | Wartungsmodus togglen | ### Spieler-Berechtigungen | Berechtigung | Beschreibung | |--------------|--------------| | `nexuslobby.spawn` | Spawn-Command nutzen | | `nexuslobby.serverswitcher` | Server-Switcher GUI öffnen | | `nexuslobby.scoreboard.admin` | Admin-Scoreboard sehen | ### Bypass-Berechtigungen | Berechtigung | Beschreibung | |--------------|--------------| | `nexuslobby.bypass.maintenance` | Server trotz Wartungsmodus betreten | | `nexuslobby.bypass.vpn` | VPN-Check überspringen | | `nexuslobby.bypass.country` | Country-Check überspringen | --- ## 🔧 Technische Details ### Systemanforderungen - **Minecraft**: Paper/Spigot 1.21+ (Spigot-kompatibel, Paper empfohlen) - **Java**: Java 21 oder höher - **Dependencies**: LuckPerms, PlaceholderAPI (optional) ### Verwendete Technologien - **Build-Tool**: Maven 3.9+ - **JSON-Library**: Gson 2.10.1 (gegenüber json-simple 1.1.1 aktualisiert) - **BungeeCord API**: Für Server-Wechsel und Messaging - **PlaceholderAPI**: Für dynamische Platzhalter ### Code-Qualität - ✅ Moderne Java 21 Features (Switch-Expressions, Pattern Matching) - ✅ Proper Error-Handling (Logger statt printStackTrace) - ✅ Memory-Management (Tasks & Listeners werden sauber disposed) - ✅ Config-Validierung mit Default-Werten - ✅ Optimiertes JSON-Parsing mit Gson - ✅ Spigot-kompatible BungeeCord Chat API ### Performance-Optimierungen - **Async-Processing** für API-Calls (Update-Check, VPN-Check) - **Caching** für Spieler-Daten und Config-Werte - **Optimierte Entity-Queries** (nur relevante Welten) - **Effiziente Scheduler-Nutzung** (Tasks werden gecancelt) --- ## 📦 Installation 1. **Download** der neuesten `NexusLobby-1.1.0.jar` aus den [Releases](../../releases) 2. **Upload** der JAR-Datei in den `/plugins/` Ordner 3. **Server-Neustart** durchführen 4. **Konfiguration** anpassen (`config.yml`, `visuals.yml`, etc.) 5. **Permissions** mit LuckPerms oder einem anderen Permissions-Plugin setzen 6. **(Optional)** PlaceholderAPI installieren für erweiterte Platzhalter --- ## 🐛 Bekannte Issues & Lösungen ### Ball spawnt mehrfach - **Lösung**: Nutze `/nexuslobby ball remove` gefolgt von `/nexuslobby ball setspawn` - Das Anti-Duplikat-System sollte dies automatisch verhindern ### NPCs schauen nicht zu Spielern - **Lösung**: Stelle sicher, dass der NPC mit `/nexustools` das LookAt-Feature aktiviert hat - Prüfe, ob `ArmorStandLookAtModule` in den Logs geladen wird ### Server-Checker zeigt falsche Status - **Lösung**: Überprüfe die IP/Port-Einstellungen in `config.yml` unter `servers:` - Stelle sicher, dass die Server erreichbar sind (Firewall, Ports) --- ## 📚 Support & Dokumentation - **Wiki**: Ausführliche Dokumentation im [Wiki](../../wiki) - **Bug-Reports**: Erstelle ein [Issue](../../issues) bei technischen Problemen - **Feature-Requests**: Vorschläge über [Issues](../../issues) mit Label "enhancement" --- ## 📝 Changelog ### Version 1.1.0 (Februar 2026) - ✨ Soccer/Fußball-System mit realistischer Physik - ✨ Parkour-System mit Bestenliste und Checkpoints - ✨ Player-Inspector Modul - ✨ Config-Validierung mit Auto-Defaults - 🔧 JSON-Library auf Gson 2.10.1 aktualisiert - 🔧 Alle printStackTrace() durch Logger ersetzt - 🔧 Memory-Management verbessert (Tasks & Listeners) - 🔧 UpdateChecker mit proper JSON-Parsing - 🐛 Diverse Bug-Fixes und Performance-Optimierungen --- **Copyright © 2026 - M_Viper - Alle Rechte vorbehalten** Die unbefugte Vervielfältigung, Verbreitung oder Weitergabe dieses Plugins ist strafbar und wird rechtlich verfolgt.