Upload via GUI (85 Dateien)

This commit is contained in:
2026-11-11 00:38:31 +00:00
parent 3ec1d905dc
commit 7cc38d7c0f
3 changed files with 698 additions and 401 deletions
+98
View File
@@ -0,0 +1,98 @@
# NexusLobby Smoke-Test Checkliste
Datum: 2026-02-05
## Build
- [ ] `mvn -q -DskipTests package` ausfuehren und Build-Erfolg bestaetigen.
## Start
- [ ] Server starten und pruefen, dass das Plugin ohne Errors enabled.
- [ ] Pruefen, dass die Standard-Configs vorhanden sind (config.yml, settings.yml, visuals.yml).
## Join-Flow
- [ ] Als normaler Spieler joinen; Join-Message ist sichtbar.
- [ ] `/nexus silentjoin` ausfuehren (Toggle an).
- [ ] Reconnect; Join-Message ist fuer diesen Spieler unterdrueckt.
- [ ] `/nexus silentjoin` erneut ausfuehren (Toggle aus).
- [ ] Reconnect; Join-Message ist wieder sichtbar.
## Gamemode Default
- [ ] In config.yml `lobby.default-gamemode` auf einen validen Wert setzen (z. B. Adventure).
- [ ] Reconnect; Spieler ist im konfigurierten Gamemode.
- [ ] Auf einen invaliden Wert setzen; Reconnect -> Spieler landet in Adventure.
## Parkour Commands
- [ ] `/setstart` an einer Position ausfuehren und Rueckmeldung pruefen.
- [ ] `/setcheckpoint` ausfuehren und Rueckmeldung pruefen.
- [ ] `/setfinish` ausfuehren und Rueckmeldung pruefen.
## Server Switcher
- [ ] `/serverswitcher` mit Permission ausfuehren; GUI oeffnet sich.
- [ ] Permission `nexuslobby.serverswitcher` entfernen; Kommando zeigt No-Perm Message.
## Maintenance Mode
- [ ] `/maintenance on`; Non-OP ohne `nexuslobby.join.maintenance` wird beim Login gekickt.
- [ ] `nexuslobby.join.maintenance` geben; Login waehrend Wartung erlaubt.
- [ ] `/maintenance off`; normaler Login wieder erlaubt.
## Portal Command (Basis)
- [ ] `/portal list` ausfuehren und pruefen, dass das Kommando funktioniert.
- [ ] `/portal create test server` ausfuehren und pruefen, dass es registriert wird.
## Player Hider
- [ ] In config.yml `hider.enabled: true` setzen.
- [ ] Joinen und pruefen, dass das Item im Slot `hider.slot` liegt.
- [ ] Rechtsklick auf das Item -> alle Spieler werden versteckt.
- [ ] Erneuter Rechtsklick -> alle Spieler werden wieder angezeigt.
## Worldborder (Square)
- [ ] Mit Portalwand zwei Punkte markieren.
- [ ] `/border square` ausfuehren und dann den Bereich verlassen -> Teleport zur Lobby.
- [ ] Permission `nexuslobby.border.bypass` geben -> Bereich verlassen ohne Teleport.
## PlaceholderAPI (optional)
- [ ] Ohne PlaceholderAPI starten -> keine Errors in Konsole.
- [ ] Mit PlaceholderAPI starten -> Scoreboard/PlayerInspect zeigen Prefixe korrekt an.
## Wrap Up
- [ ] Konsole auf Warnings/Errors pruefen.
## Testdaten (Beispiele)
### Beispiel-Config Snippets
```yaml
# config.yml
lobby:
default-gamemode: Adventure
clear-inventory-on-join: true
maintenance:
enabled: false
kick_message: "&cServer im Wartungsmodus! Du darfst nicht joinen."
compass:
title: "&eServer Switcher"
size: 27
servers:
pvp:
name: "&cPvP Arena"
material: "DIAMOND_SWORD"
command: "server pvp"
slot: 11
survival:
name: "&aSurvival"
material: "GRASS_BLOCK"
command: "server survival"
slot: 13
```
### Permissions (Beispiele)
- `nexuslobby.admin`
- `nexuslobby.serverswitcher`
- `nexuslobby.join.maintenance`
- `nexuslobby.scoreboard.admin`
### Test-Accounts
- Admin-Account mit `nexuslobby.admin`
- Normaler Spieler ohne Sonderrechte
+1 -1
View File
@@ -6,7 +6,7 @@
<groupId>de.nexuslobby</groupId> <groupId>de.nexuslobby</groupId>
<artifactId>NexusLobby</artifactId> <artifactId>NexusLobby</artifactId>
<version>2.0</version> <version>2.1</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>NexusLobby</name> <name>NexusLobby</name>
+522 -323
View File
@@ -1,400 +1,599 @@
## 🌐 Mehrsprachigkeit & Texte # 🌐 NexusLobby
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.
**Chat-Prefix anpassen:**
Der Prefix vor Plugin-Nachrichten wird in der Server-`config.yml` über `prefix` festgelegt. Farben können mit `&`-Codes angegeben werden:
```yaml
prefix: "&8[&6Nexus&8] "
```
Ändere den Text und die Farben nach Wunsch und lade das Plugin anschließend neu.
---
# NexusLobby
<p align="center"> <p align="center">
<img src="https://m-viper.de/img/NexusLobby.png" width="500" alt="NexusLobby"> <img src="https://m-viper.de/img/NexusLobby.png" width="500" alt="NexusLobby">
</p> </p>
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. **NexusLobby** macht aus einer leeren Welt eine fertige Minecraft-Lobby. Du bekommst Spawn, Scoreboard, Portale zu anderen Servern, einen Parkour, Fußball, sprechende NPCs, Wartungsmodus, VPN-Sperre und vieles mehr. Alles in einem einzigen Plugin und ohne Programmierkenntnisse.
![Minecraft](https://img.shields.io/badge/Minecraft-1.21+-green) ![Minecraft](https://img.shields.io/badge/Minecraft-1.21+-green)
![Java](https://img.shields.io/badge/Java-21+-orange) ![Java](https://img.shields.io/badge/Java-21+-orange)
![Version](https://img.shields.io/badge/Version-2.1-blue)
![License](https://img.shields.io/badge/License-Proprietary-red) ![License](https://img.shields.io/badge/License-Proprietary-red)
![Version](https://img.shields.io/badge/Version-1.1.0-blue)
--- ---
## 🎯 Lizenz und Nutzungsbedingungen ## 📖 Inhaltsverzeichnis
**ALLE RECHTE VORBEHALTEN** 1. [Was brauche ich?](#-was-brauche-ich)
2. [Installation in 6 Schritten](#-installation-in-6-schritten)
3. [Die ersten 5 Minuten](#-die-ersten-5-minuten)
4. [Wo steht was? Die wichtigen Dateien](#-wo-steht-was-die-wichtigen-dateien)
5. [Funktionen und wie du sie einrichtest](#-funktionen-und-wie-du-sie-einrichtest)
6. [Alle Befehle](#-alle-befehle)
7. [Rechte vergeben](#-rechte-vergeben)
8. [Probleme und Lösungen](#-probleme-und-lösungen)
9. [Änderungen in Version 2.1](#-änderungen-in-version-21)
10. [Hilfe und Lizenz](#-hilfe-und-lizenz)
Dieses Plugin ist urheberrechtlich geschützt. Es gelten folgende Bedingungen: ---
# Scoreboard ausblenden (Opt-out) ## ✅ Was brauche ich?
Spieler können das Scoreboard per Befehl ein-/ausblenden. Standardmäßig wird das Scoreboard beim Join angezeigt. Über die Option | Was | Wofür | Pflicht? |
|-----|-------|----------|
| Ein **Paper-Server** ab Version **1.21** (Spigot geht auch, Paper ist besser) | Der Server, auf dem das Plugin läuft | **Ja** |
| **Java 21** oder neuer | Damit der Server startet | **Ja** |
| **LuckPerms** | Rechte vergeben und Prefixe im Scoreboard | Empfohlen |
| **PlaceholderAPI** | Damit Platzhalter wie `%luckperms_prefix%` im Scoreboard Text statt Code zeigen | Empfohlen |
| **BungeeCord** (oder ein kompatibler Proxy) | Nur, wenn du Spieler zwischen mehreren Servern schicken willst | Optional |
---
## 📦 Installation in 6 Schritten
1. **Server stoppen.**
2. Die Datei `NexusLobby-2.1.jar` in den Ordner `plugins` deines Servers legen.
3. **Eine alte NexusLobby-Datei löschen**, falls dort schon eine liegt. Sonst werden zwei Versionen geladen.
4. **Server starten.** Das Plugin legt jetzt seinen eigenen Ordner `plugins/NexusLobby/` mit allen Einstellungsdateien an.
5. **Server noch einmal neu starten**, damit alles sauber geladen ist.
6. Ingame (oder in der Konsole) `/nexus reload` eingeben, wenn du später etwas an den Dateien änderst.
> 💡 **Wichtig:** Ein Plugin ersetzt du immer mit einem **Neustart**. `/nexus reload` lädt nur die Einstellungen neu, nicht die Jar-Datei.
---
## 🚀 Die ersten 5 Minuten
Mach das als Erstes, in dieser Reihenfolge:
1. **Spawn setzen.** Stell dich dorthin, wo Spieler ankommen sollen, und gib ein:
```
/nexus setspawn
```
2. **Rechte vergeben.** Ohne Rechte darf niemand außer OPs etwas. Siehe [Rechte vergeben](#-rechte-vergeben).
3. **Scoreboard prüfen.** Zeigt es Text wie `%luckperms_prefix%` an? Dann fehlt PlaceholderAPI. Siehe [Probleme und Lösungen](#-probleme-und-lösungen).
4. **Lobby-Schutz prüfen.** Spieler können standardmäßig nicht bauen, nicht kämpfen und keine Items droppen. Das ist so gewollt.
5. **Deine Grenze setzen** (optional): `/border circle 50` macht einen runden Bereich mit 50 Blöcken Radius um dich.
---
## 📁 Wo steht was? Die wichtigen Dateien
Alle Dateien liegen auf dem Server in `plugins/NexusLobby/`.
| Datei | Was steht dort? | Wann ändere ich sie? |
|-------|-----------------|----------------------|
| `config.yml` | Spawn, Sprache, Chat-Prefix, Tablist, Kompass-Menü, Doppelsprung, Void-Schutz, Fußball, Wartungsmodus | Für fast alle Grundeinstellungen |
| `settings.yml` | Lobby-Regeln (PvP, Bauen, Items droppen …) und **VPN- und Länder-Sperre** | Wenn du Regeln oder die Sperre ändern willst |
| `visuals.yml` | Scoreboard, BossBar, ActionBar | Wenn du Texte oben, unten oder rechts ändern willst |
| `lang.yml` | Alle Nachrichten des Plugins auf Deutsch und Englisch | Wenn du eine Nachricht umformulieren willst |
| `conversations.yml` | Die Gespräche der NPCs | Wenn du eigene Dialoge schreiben willst |
| `parkour.yml` | Strecken, Checkpoints und Bestzeiten | **Nicht von Hand ändern.** Das machst du per Befehl |
| `portals.yml` | Deine Portale | **Nicht von Hand ändern.** Das machst du per Befehl |
| `armorstands.yml` | Gespeicherte NPC-Daten | **Nicht ändern** |
### So bearbeitest du eine Datei
1. Server-Dateien öffnen (FTP oder das Panel deines Hosters).
2. Die Datei bearbeiten und **speichern**.
3. Ingame `/nexus reload` eingeben.
### Farben im Text
Überall, wo Text steht, gehen Farbcodes mit dem `&`-Zeichen:
| Code | Farbe | Code | Farbe |
|------|-------|------|-------|
| `&a` | Grün | `&c` | Rot |
| `&e` | Gelb | `&6` | Gold |
| `&b` | Türkis | `&9` | Blau |
| `&7` | Grau | `&f` | Weiß |
| `&l` | **Fett** | `&r` | Zurücksetzen |
Beispiel: `&6&lWillkommen &7auf der Lobby` ergibt einen fetten goldenen Text, dann einen grauen.
> ⚠️ **Achtung bei YAML-Dateien:** Die Einrückung (Leerzeichen am Zeilenanfang) ist wichtig. Lösche oder füge sie nicht aus Versehen hinzu. Nimm **keine Tabs**, nur Leerzeichen.
---
## 🧩 Funktionen und wie du sie einrichtest
### 🏠 Spawn
Spieler landen beim Joinen und nach dem Tod am Spawn.
- Setzen: `/nexus setspawn`
- Hinkommen: `/spawn` (auch `/l` und `/hub`)
### 📊 Scoreboard (die Anzeige rechts)
Die Texte stehen in `visuals.yml` unter `scoreboard:`. Dort gibt es einen Titel und Zeilen für normale Spieler (`default`) und für Admins (`owner`).
- Ein- und ausschalten für dich: `/nexus sb on` und `/nexus sb off`
- Admin-Version zeigen: `/nexus sb admin`
- Spieler-Version zeigen: `/nexus sb spieler`
- Soll es für neue Spieler **standardmäßig ausgeblendet** sein? In `config.yml`: `scoreboard-default-visible: false`
- Wie oft es sich aktualisiert, steht in `visuals.yml` bei `update_ticks` (20 = jede Sekunde).
> 💡 Damit Platzhalter wie `%luckperms_prefix%` oder `%bungee_total%` funktionieren, brauchst du **PlaceholderAPI**. Siehe [Probleme und Lösungen](#-probleme-und-lösungen).
### 📋 Tablist (die Liste mit der TAB-Taste)
In `config.yml` unter `tablist:`. Dort stellst du Kopfzeile (`header`), Fußzeile (`footer`) und das Aktualisierungsintervall ein.
### 🚧 Lobby-Grenze (Border)
Eine **unsichtbare** Grenze, die Spieler nicht überschreiten dürfen. Wer sie überschreitet, wird zum Spawn zurückgeschickt.
**Rund (Kreis):**
1. Stell dich in die **Mitte** der Lobby.
2. Gib ein: `/border circle 50` (50 ist der Radius in Blöcken).
**Eckig (Rechteck):**
1. Hol dir das Werkzeug mit `/giveportalwand`.
2. **Linksklick** auf eine Ecke und **Rechtsklick** auf die gegenüberliegende Ecke.
3. Gib ein: `/border square`
**Ausschalten:** `/border disable`
> ⚠️ **Zum Testen:** Wer das Recht `nexuslobby.admin` oder `nexuslobby.border.bypass` hat, wird **nicht** zurückgeschickt. Teste mit einem normalen Account.
### 🌀 Portale
Portale schicken Spieler auf einen anderen Server oder an einen anderen Ort.
**So erstellst du ein Portal (der Ablauf ist wichtig):**
1. **Werkzeug holen:** `/giveportalwand` (du bekommst einen Blaze Rod).
2. **Zwei Ecken markieren:** **Linksklick** auf einen Block = Position 1, **Rechtsklick** auf einen Block = Position 2. Du musst einen Block anklicken, nicht in die Luft.
3. **Portal erstellen:**
```
/portal create <Name> <server|world>
```
- `server` = auf einen anderen Server (über BungeeCord)
- `world` = an einen anderen Ort auf diesem Server
4. **Ziel setzen (nicht vergessen!):**
```
/portal setdest <Name> <Ziel>
```
**Beispiele für das Ziel:**
| Portal-Typ | Befehl | Bedeutung |
|------------|--------|-----------|
| Server | `/portal setdest Survival survival` | Schickt zum BungeeCord-Server `survival` |
| Welt, zum Spawn | `/portal setdest Hub SPAWN` | Schickt zum Lobby-Spawn |
| Welt, Koordinaten | `/portal setdest Mini world_mini 0 64 0` | Schickt zu diesen Koordinaten |
> ⚠️ **Ohne `setdest` steht beim Betreten „Verbinde zum Server: null“.** Dann hat das Portal kein Ziel. Der Servername muss genau so heißen wie in deiner BungeeCord-Config. Er ist derselbe wie bei `/server survival`.
**Weitere Portal-Befehle:**
| Befehl | Was er macht |
|--------|--------------|
| `/portal setparticle <Name> <Partikel>` | Ändert den Partikel, z. B. `END_ROD`, `FLAME`, `HEART`, `HAPPY_VILLAGER` |
| `/portal setspawn <Name>` | Setzt, wo der Spieler vor dem Server-Wechsel steht. Stell dich davor, er wird 2 Blöcke hinter dich gesetzt |
| `/portal list` | Zeigt alle Portale |
| `/portal delete <Name>` | Löscht ein Portal |
> 💡 Schreibe den Portalnamen **genau so**, wie du ihn beim Erstellen geschrieben hast (Groß- und Kleinschreibung).
### 🏃 Parkour
Ein Parkour mit Zeitmessung, Checkpoints, Bestenliste und Trainer-NPC. Es gibt **zwei Strecken** (1 und 2). Beim Start wird zufällig eine gewählt.
**Einrichten (Beispiel Strecke 1):**
1. **Start:** Stell dich an den Start und gib `/nexus parkour setstart 1` ein. Schaust du dabei einen ArmorStand (den Trainer) an, wird er automatisch zum Start-NPC.
2. **Checkpoints:** Geh zu jedem Checkpoint **in der richtigen Reihenfolge** und gib dort `/nexus parkour setcheckpoint 1` ein.
3. **Ziel:** Stell dich ins Ziel und gib `/nexus parkour setfinish 1` ein.
4. **Prüfen:** `/nexus parkour info`
Für Strecke 2 machst du dasselbe mit der `2` am Ende.
> 💡 **Beide Strecken sollten gleich viele Checkpoints haben.** Sonst steht eine Warnung in der Konsole, und die Strecken sind unterschiedlich lang.
**Bestenliste als Hologramm:** Stell dich dorthin, wo sie stehen soll, und gib `/nexus parkour holo 1` ein. Das braucht PlaceholderAPI.
**Weitere Parkour-Befehle:**
| Befehl | Was er macht |
|--------|--------------|
| `/nexus parkour reset` | Bricht deinen eigenen Lauf ab (das darf jeder) |
| `/nexus parkour clear` | Löscht alle Bestzeiten |
| `/nexus parkour removeall` | Löscht die komplette Strecke |
**Sturz-Höhe einstellen (wichtig):**
Wer unter eine bestimmte Höhe fällt, kommt zum letzten Checkpoint zurück. Standard ist **Höhe Y = 50**. Liegt dein Parkour oder der Trainer **unter 50**, wirst du bei jedem Schritt zurückgesetzt, und der Chat läuft mit „Abgestürzt!“ voll.
Die Lösung: In `plugins/NexusLobby/config.yml` (nicht in `parkour.yml`) fügst du ein:
```yaml ```yaml
scoreboard-default-visible: true parkour:
fall_y: 40
``` ```
in der `config.yml` kann festgelegt werden, ob das Scoreboard für neue Spieler standardmäßig sichtbar ist. Bei `false` ist es für alle Spieler nach dem Join ausgeblendet, bis sie es selbst aktivieren. Der Wert muss **unter dem tiefsten Punkt** liegen, an dem Spieler stehen. Deine Höhe siehst du mit **F3** bei `XYZ` (die mittlere Zahl).
- Die Weitergabe, Verbreitung oder Veröffentlichung des Plugins ist **strengstens untersagt**. ### ⚽ Fußball
- 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. Ein Ball, den Spieler schießen und dribbeln können. Mit Toren und Teams.
--- | Befehl | Was er macht |
|--------|--------------|
| `/nexus ball setspawn` | Setzt, wo der Ball erscheint |
| `/nexus ball respawn` | Holt den Ball neu |
| `/nexus ball remove` | Entfernt den Ball |
## ✨ Features **Tor einrichten:**
1. Geh zur **inneren Ecke** des Tors und gib `/nexus ball goal pos1` ein.
2. Geh zur **gegenüberliegenden Ecke** (auch 1 bis 2 Blöcke hinter das Tor) und gib `/nexus ball goal pos2` ein.
3. Speichern: `/nexus ball goal save torBlau 1` (Team 1 = Blau, Team 2 = Rot).
### 🤖 High-End NPC & ArmorStand System Die Box muss mindestens **3 Blöcke hoch** und **1,5 Blöcke tief** sein. Mit `/nexus ball goal show` machst du sie sichtbar. Mit `/nexus ball goal debug` siehst du die Ball-Position live.
- **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 Wenn der Ball nichts tut, prüfe in `config.yml` unter `ball:`, ob `enabled: true` steht.
- **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 ### 🤖 NPCs und Gespräche
- **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 Mit ArmorStands baust du NPCs. Die können Gespräche führen, dir mit dem Blick folgen und Befehle ausführen.
- **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 **NPC bearbeiten:** Schau einen ArmorStand an und gib `/nexustools` ein (auch `/nt`). Es öffnet sich ein Menü.
- **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 **Befehle:**
- **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 | Befehl | Was er macht |
- **Compass** - Server-Switcher GUI |--------|--------------|
- **Player-Hider** - Sichtbarkeits-Toggle für andere Spieler | `/nexuscmd lookat` | Der NPC schaut Spielern nach (an und aus) |
- **Gadgets** - Konfigurierbares Item-System mit Custom-Slots | `/nexuscmd name <Text>` | Gibt dem NPC einen Namen. `none` entfernt ihn |
- **Player-Inspector** - Detaillierte Spieler-Informationen per Click | `/nexuscmd say <Text>` | Der NPC sagt etwas in einer Sprechblase |
--- Du musst dabei den NPC **anschauen**.
## 📋 Befehle **Gespräch zwischen NPCs einrichten:**
### Haupt-Commands 1. Schau den ersten NPC an: `/nexuscmd conv select1`
2. Schau den zweiten NPC an: `/nexuscmd conv select2`
3. Optional: `select3` und `select4` für bis zu vier NPCs
4. Verknüpfen: `/nexuscmd conv link <Gespräch-ID>`
5. Testen: `/nexuscmd conv start <Gespräch-ID>`
6. Wieder lösen: Schau den NPC an und gib `/nexuscmd conv unlink` ein.
| Befehl | Beschreibung | Berechtigung | Du brauchst **mindestens zwei NPCs**, auch wenn im Text nur einer spricht.
|--------|--------------|--------------|
| `/nexuslobby reload` | Lädt das Plugin neu | `nexuslobby.admin` |
| `/nexuslobby setspawn` | Setzt den Lobby-Spawn | `nexuslobby.admin` |
| `/nexuslobby silentjoin <on\|off>` | Versteckter Join/Quit | `nexuslobby.admin` |
| `/nexuslobby sb <on\|off\|admin\|spieler>` | Scoreboard-Kontrolle | `nexuslobby.admin` |
| `/spawn` | Teleport zum Spawn | `nexuslobby.spawn` |
### NPC & ArmorStand **Eigene Gespräche schreiben:** In `conversations.yml`. Jedes Gespräch hat drei Tageszeiten (`morgens`, `mittags`, `abends`) mit je einer Liste von Zeilen:
| Befehl | Beschreibung | Berechtigung |
|--------|--------------|--------------|
| `/nexustools` | NPC Editor GUI (Rotation, KI) | `nexuslobby.armorstand.use` |
| `/nexuscmd add <slot> <prio> <type> [cmd]` | Bindet Command an NPC | `nexuslobby.armorstand.cmd` |
| `/nexuscmd remove <slot\|all>` | Entfernt Commands | `nexuslobby.armorstand.cmd` |
| `/nexuscmd conv select1-4` | Wählt NPCs für Dialog | `nexuslobby.armorstand.cmd` |
| `/nexuscmd conv link <id>` | Verknüpft Dialog | `nexuslobby.armorstand.cmd` |
| `/nexuscmd say <text>` | NPC-Sprechblase | `nexuslobby.armorstand.cmd` |
### Parkour
| Befehl | Beschreibung | Berechtigung |
|--------|--------------|--------------|
| `/nexuslobby parkour setstart` | Markiert Start-NPC | `nexuslobby.admin` |
| `/nexuslobby parkour setcheckpoint <n>` | 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 <name> <type>` | Erstellt Portal | `nexuslobby.portal` |
| `/portal delete <name>` | 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 <on\|off>` | Wartungsmodus | `nexuslobby.maintenance` |
| `/settings` | Lobby-Einstellungen (Gamerules) | `nexuslobby.admin` |
| `/holo create <id> [text]` | Erstellt Hologramm | `nexuslobby.hologram` |
| `/holo delete <id>` | Löscht Hologramm | `nexuslobby.hologram` |
| `/mapart <URL> <BxH>` | Erstellt MapArt | `nexuslobby.mapart` |
| `/intro <add\|clear\|start>` | Intro-Tour-Verwaltung | `nexuslobby.admin` |
| `/border <circle\|square\|disable>` | 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 ```yaml
conversations: conversations:
willkommen: mein_gespraech:
dialogue: morgens:
- "&eWächter: &7Willkommen auf dem Server!" dialogue:
- "&aBürger: &7Schön, dass du da bist!" - '&eWächter: &7Guten Morgen!'
- "&eWächter: &7Viel Spaß beim Erkunden!" - '&aBürger: &7Dir auch!'
mittags:
quest_dialog: dialogue:
dialogue: - '&eWächter: &7Schöner Tag heute.'
- "&6Quest-Geber: &7Hast du meine Quest erledigt?" abends:
- "&aHeld: &7Ja, ich habe alle Monster besiegt!" dialogue:
- '&eWächter: &7Gute Nacht!'
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) Danach `/nexus reload`. Das Gespräch kannst du dann mit `mein_gespraech` verknüpfen.
> 💡 Schon dabei sind unter anderem `parkour_begruessung`, `owner_besuch`, `fussball_match`, `baum_drama` und `familien_spaziergang`.
### 🔤 Hologramme
Schwebende Texte.
- Erstellen: `/holo create <ID> <Text>`
- Löschen: `/holo delete <ID>`
### 🖼️ MapArt
Ein Bild aus dem Internet als Wandbild aus Item-Frames.
```
/mapart <Bild-URL> <Breite>x<Höhe>
```
Beispiel: `/mapart https://example.com/bild.png 3x2`
### 🎬 Intro-Tour
Eine Kamerafahrt für neue Spieler.
| Befehl | Was er macht |
|--------|--------------|
| `/intro add` | Fügt einen Kamerapunkt an deiner Position hinzu |
| `/intro clear` | Löscht alle Punkte |
| `/intro start` | Startet die Tour zum Testen |
### 🔨 Baumodus
Normale Spieler dürfen in der Lobby nichts bauen. Mit `/build` schaltest du den **Baumodus** für dich ein und aus. Du brauchst dafür das Recht `nexuslobby.build`.
### 🔧 Wartungsmodus
Sperrt den Server für normale Spieler, während du daran arbeitest.
- Einschalten: `/maintenance on`
- Ausschalten: `/maintenance off`
- Wer trotzdem joinen darf, braucht das Recht `nexuslobby.join.maintenance`.
- Die Kick-Nachricht steht in `config.yml` unter `maintenance:`.
### 🛡️ VPN- und Länder-Sperre
Schließt Spieler mit VPN oder Proxy und Spieler aus bestimmten Ländern aus.
**Die Einstellungen stehen in `settings.yml`:**
```yaml ```yaml
# ActionBar-Nachrichten security:
actionbar: vpn-blocker:
enabled: true enabled: false # true = VPN und Proxy sperren
speed: 3 kick-message: "&cVPN und Proxies sind auf diesem Server nicht erlaubt!"
messages:
- "&6&lWillkommen &8» &eauf unserem Server!"
- "&b&lViel Spaß &8» &7in der Lobby!"
# BossBar country-blocker:
bossbar: enabled: false # true = nur bestimmte Länder erlauben
enabled: true allowed-countries:
interval: 40 - "DE"
messages: - "AT"
- text: "&6&lNexusLobby &8» &eVersion 1.1.0" - "CH"
color: "YELLOW" kick-message: "&cZugriff aus deinem Land (%country%) ist leider nicht gestattet."
``` ```
- `enabled: false` heißt: Die Sperre ist **aus**. Das ist der Standard, wenn nichts eingetragen ist.
- Wer das Recht `nexuslobby.security.bypass` hat, wird nie gesperrt. Dafür muss **LuckPerms** installiert sein.
- Die Prüfung nutzt den kostenlosen Dienst `ip-api.com`. Mobilfunk- und Hoster-IPs werden dort manchmal fälschlich als VPN erkannt. Wenn jemand zu Unrecht gekickt wird, gib ihm das Bypass-Recht.
### 🦘 Doppelsprung, Void-Schutz und mehr
Alle diese Funktionen schaltest du in `config.yml` mit `enabled: true` oder `false` ein und aus:
| Funktion | Bereich in `config.yml` | Was sie macht |
|----------|-------------------------|---------------|
| **Doppelsprung** | `doublejump:` | In der Luft nochmal springen. Mit `velocity` stellst du die Höhe ein |
| **Void-Schutz** | `void_protection:` | Wer in die Leere fällt, kommt zum Spawn |
| **Spieler verstecken** | `hider:` | Ein Item, mit dem Spieler andere ausblenden |
| **Kompass-Menü** | `compass:` und `items:` | Menü zum Server-Wechsel |
| **Server-Status** | `servers:` | Zeigt an ArmorStands, ob ein Server online ist |
| **Spieler-Info** | `player_inspect:` | Rechtsklick auf einen Spieler zeigt dessen Statistiken |
**Lobby-Regeln** (PvP, Bauen, Items droppen, Explosionen, Fallschaden …) stehen in `settings.yml`. Ingame öffnest du sie mit `/settings`, ein Klick-Menü.
--- ---
## 🔐 Berechtigungen ## 📋 Alle Befehle
### Admin-Berechtigungen `<…>` bedeutet: Du musst etwas eintragen. `[…]` bedeutet: optional.
| Berechtigung | Beschreibung | ### Allgemein
|--------------|--------------|
| `nexuslobby.admin` | Voller Zugriff auf alle System-Einstellungen | | Befehl | Was er macht | Recht |
| `nexuslobby.armorstand.cmd` | NPCs konfigurieren und Dialoge verknüpfen | |--------|--------------|-------|
| `nexuslobby.armorstand.use` | Zugriff auf die ArmorStand-Editor GUI | | `/spawn` (auch `/l`, `/hub`) | Zum Spawn | alle |
| `nexuslobby.build` | Berechtigung für den Baumodus | | `/serverswitcher` | Server-Menü öffnen | `nexuslobby.serverswitcher` |
| `/build` | Baumodus ein/aus | `nexuslobby.build` |
| `/settings` | Lobby-Regeln ändern | `nexuslobby.admin` |
| `/maintenance <on\|off>` | Wartungsmodus | `nexuslobby.maintenance` |
### Verwaltung (`/nexus`, auch `/nexuslobby` und `/lobby`)
| Befehl | Was er macht | Recht |
|--------|--------------|-------|
| `/nexus reload` | Einstellungen neu laden | `nexuslobby.admin` |
| `/nexus setspawn` | Spawn setzen | `nexuslobby.admin` |
| `/nexus silentjoin <on\|off>` | Join und Quit unsichtbar | `nexuslobby.admin` |
| `/nexus sb <on\|off\|admin\|spieler>` | Scoreboard steuern | `nexuslobby.admin` |
### Parkour
| Befehl | Was er macht |
|--------|--------------|
| `/nexus parkour setstart <1\|2>` | Start setzen |
| `/nexus parkour setcheckpoint <1\|2>` | Checkpoint setzen |
| `/nexus parkour setfinish <1\|2>` | Ziel setzen |
| `/nexus parkour holo <1\|2>` | Bestenlisten-Hologramm |
| `/nexus parkour info` | Zeigt die Strecken |
| `/nexus parkour reset` | Eigenen Lauf abbrechen |
| `/nexus parkour clear` | Bestzeiten löschen |
| `/nexus parkour removeall` | Strecke löschen |
Recht: `nexuslobby.admin` (nur `reset` darf jeder).
### Fußball
| Befehl | Was er macht |
|--------|--------------|
| `/nexus ball setspawn` | Ball-Spawn setzen |
| `/nexus ball respawn` | Ball neu holen |
| `/nexus ball remove` | Ball entfernen |
| `/nexus ball goal pos1`, `pos2`, `save <Name> <Team>`, `show`, `debug` | Tore einrichten |
### Portale und Grenze
| Befehl | Was er macht | Recht |
|--------|--------------|-------|
| `/giveportalwand` | Portal-Werkzeug | `nexuslobby.portal.give` |
| `/portal create <Name> <server\|world>` | Portal erstellen | `nexuslobby.portal` |
| `/portal setdest <Name> <Ziel>` | Ziel setzen | `nexuslobby.portal` |
| `/portal setparticle <Name> <Partikel>` | Partikel ändern | `nexuslobby.portal` |
| `/portal setspawn <Name>` | Ankunftspunkt setzen | `nexuslobby.portal` |
| `/portal list` | Alle Portale | `nexuslobby.portal` |
| `/portal delete <Name>` | Portal löschen | `nexuslobby.portal` |
| `/border circle <Radius>` | Runde Grenze | `nexuslobby.admin` |
| `/border square` | Eckige Grenze | `nexuslobby.admin` |
| `/border disable` | Grenze aus | `nexuslobby.admin` |
### NPCs und Extras
| Befehl | Was er macht | Recht |
|--------|--------------|-------|
| `/nexustools` (auch `/nt`) | NPC-Editor | `nexuslobby.armorstand.use` |
| `/nexuscmd …` (auch `/ncmd`, `/conv`) | NPC-Befehle und Gespräche | `nexuslobby.armorstand.cmd` |
| `/holo create <ID> <Text>` | Hologramm erstellen | `nexuslobby.hologram` |
| `/holo delete <ID>` | Hologramm löschen | `nexuslobby.hologram` |
| `/mapart <URL> <BxH>` | MapArt erstellen | `nexuslobby.mapart` |
| `/intro <add\|clear\|start>` | Intro-Tour | `nexuslobby.admin` |
---
## 🔐 Rechte vergeben
Rechte steuerst du am einfachsten mit **LuckPerms**. Ein Recht gibst du so:
```
/lp user <Spielername> permission set <Recht> true
```
Für eine ganze Gruppe (z. B. alle Admins):
```
/lp group admin permission set <Recht> true
```
**Beispiel:** Dem Spieler `M_Viper` das Recht zum Bauen geben:
```
/lp user M_Viper permission set nexuslobby.build true
```
### Die wichtigsten Rechte
| Recht | Was es erlaubt |
|-------|----------------|
| `nexuslobby.admin` | Fast alles: Reload, Spawn, Border, Parkour, Einstellungen |
| `nexuslobby.build` | Baumodus nutzen |
| `nexuslobby.portal` | Portale erstellen und löschen | | `nexuslobby.portal` | Portale erstellen und löschen |
| `nexuslobby.portal.give` | Portal-Werkzeug erhalten | | `nexuslobby.portal.give` | Portal-Werkzeug bekommen |
| `nexuslobby.maintenance` | Wartungsmodus schalten |
| `nexuslobby.armorstand.use` | NPC-Editor öffnen |
| `nexuslobby.armorstand.cmd` | NPC-Befehle und Gespräche |
| `nexuslobby.hologram` | Hologramme verwalten | | `nexuslobby.hologram` | Hologramme verwalten |
| `nexuslobby.mapart` | MapArt erstellen | | `nexuslobby.mapart` | MapArt erstellen |
| `nexuslobby.maintenance` | Wartungsmodus togglen | | `nexuslobby.serverswitcher` | Server-Menü öffnen (**alle Spieler haben es standardmäßig**) |
### Spieler-Berechtigungen
| Berechtigung | Beschreibung |
|--------------|--------------|
| `nexuslobby.spawn` | Spawn-Command nutzen |
| `nexuslobby.serverswitcher` | Server-Switcher GUI öffnen |
| `nexuslobby.scoreboard.admin` | Admin-Scoreboard sehen | | `nexuslobby.scoreboard.admin` | Admin-Scoreboard sehen |
### Bypass-Berechtigungen ### Ausnahmen (Bypass)
| Berechtigung | Beschreibung | | Recht | Was es umgeht |
|--------------|--------------| |-------|---------------|
| `nexuslobby.bypass.maintenance` | Server trotz Wartungsmodus betreten | | `nexuslobby.security.bypass` | VPN- und Länder-Sperre |
| `nexuslobby.bypass.vpn` | VPN-Check überspringen | | `nexuslobby.join.maintenance` | Wartungsmodus (darf trotzdem joinen) |
| `nexuslobby.bypass.country` | Country-Check überspringen | | `nexuslobby.border.bypass` | Die Lobby-Grenze |
> 💡 Alle diese Rechte haben **OPs** automatisch. Normale Spieler bekommen nur `nexuslobby.serverswitcher` von selbst.
--- ---
## 🔧 Technische Details ## 🛠️ Probleme und Lösungen
### Systemanforderungen ### Im Scoreboard steht `%luckperms_prefix%` oder `%bungee_total%`
- **Minecraft**: Paper/Spigot 1.21+ (Spigot-kompatibel, Paper empfohlen)
- **Java**: Java 21 oder höher
- **Dependencies**: LuckPerms, PlaceholderAPI (optional)
### Verwendete Technologien **Ursache:** PlaceholderAPI fehlt oder ihm fehlen die Erweiterungen.
- **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 **Lösung:** PlaceholderAPI installieren. Dann in der Server-Konsole:
- ✅ 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) /papi ecloud download LuckPerms
- **Caching** für Spieler-Daten und Config-Werte /papi ecloud download Bungee
- **Optimierte Entity-Queries** (nur relevante Welten) /papi reload
- **Effiziente Scheduler-Nutzung** (Tasks werden gecancelt) ```
### Ich werde mit „Abgestürzt! Zurück zum Checkpoint.“ im Dauerfeuer zugespammt
**Ursache:** Dein Trainer-NPC oder Parkour liegt tiefer als die Sturz-Höhe (Standard Y = 50).
**Lösung:** In `config.yml` einen niedrigeren Wert setzen. Siehe [Parkour](#-parkour), Abschnitt „Sturz-Höhe“.
### Beim Portal steht „Verbinde zum Server: null“
**Ursache:** Dem Portal fehlt das Ziel.
**Lösung:** `/portal setdest <Name> <Servername>`. Siehe [Portale](#-portale).
### „Bitte markiere erst zwei Punkte mit dem Portal-Werkzeug!“
**Ursache:** Du hast `/portal create` benutzt, ohne vorher zwei Ecken zu markieren.
**Lösung:** Erst `/giveportalwand`, dann Links- und Rechtsklick auf zwei Blöcke, dann `/portal create`.
### Ich werde beim Joinen gekickt, obwohl der VPN-Blocker aus ist
**Ursache:** Bis Version 2.0 las das Plugin die Sperre aus der falschen Datei.
**Lösung:** Auf **Version 2.1** aktualisieren und in `settings.yml` prüfen, dass `enabled: false` steht. Danach Server neu starten. Wenn es weiter passiert, steht der Grund in der Server-Konsole. Es könnte auch der Wartungsmodus sein.
### Das Scoreboard flackert
**Ursache:** In Version 2.0 und älter wurde es jede Sekunde komplett neu aufgebaut.
**Lösung:** Auf **Version 2.1** aktualisieren. Wenn es danach noch flackert, läuft ein zweites Scoreboard- oder Tab-Plugin (z. B. TAB). Schalte eines davon aus.
### Ich werde an der Grenze nicht zurückgeschickt
**Ursache:** Du bist OP oder hast `nexuslobby.border.bypass`.
**Lösung:** Teste mit einem normalen Account.
### Der Ball erscheint mehrfach
**Lösung:** `/nexus ball remove`, danach `/nexus ball setspawn`.
### NPCs schauen den Spielern nicht nach
**Lösung:** Schau den NPC an und gib `/nexuscmd lookat` ein. Es schaltet um. Wenn es an war, ist es jetzt aus, gib den Befehl dann noch einmal ein.
### Der Server-Status am NPC stimmt nicht
**Lösung:** Prüfe in `config.yml` unter `servers:` die IP und den Port. Der Name muss genau dem BungeeCord-Servernamen entsprechen. Der Server muss erreichbar sein (Firewall, Ports).
### Nach einer Änderung passiert nichts
**Lösung:** Hast du die Datei gespeichert? Dann `/nexus reload`. Bei einer neuen Jar-Datei brauchst du einen **Neustart**.
--- ---
## 📦 Installation ## 🆕 Änderungen in Version 2.1
1. **Download** der neuesten `NexusLobby-1.1.0.jar` aus den [Releases](../../releases) - 🐛 **Scoreboard flackert nicht mehr.** Es wird nur noch aktualisiert, was sich wirklich ändert.
2. **Upload** der JAR-Datei in den `/plugins/` Ordner - 🐛 **VPN- und Länder-Sperre** lesen jetzt die `settings.yml`. Vorher wurde dein Wert ignoriert, und Spieler wurden trotz `enabled: false` gekickt.
3. **Server-Neustart** durchführen - 🐛 **Die Kick-Nachricht ist nie mehr leer.** Es gibt einen Standardtext.
4. **Konfiguration** anpassen (`config.yml`, `visuals.yml`, etc.) - 🔧 Ist keine Sperre eingetragen, ist sie **aus** (vorher an).
5. **Permissions** mit LuckPerms oder einem anderen Permissions-Plugin setzen - 🔧 Die Sperre stürzt nicht mehr ab, wenn der Prüfdienst unvollständig antwortet.
6. **(Optional)** PlaceholderAPI installieren für erweiterte Platzhalter
--- ---
## 🐛 Bekannte Issues & Lösungen ## 💬 Hilfe und Lizenz
### Ball spawnt mehrfach - 🌐 Webseite: https://m-viper.de
- **Lösung**: Nutze `/nexuslobby ball remove` gefolgt von `/nexuslobby ball setspawn` - 📚 Dokumentation: https://viper-network.de/wiki/NexusLobby/
- Das Anti-Duplikat-System sollte dies automatisch verhindern - 💬 Discord: https://discord.com/invite/FdRs4BRd8D
### NPCs schauen nicht zu Spielern **Wenn du Hilfe brauchst:** Schreib im Discord, welche **Version** du hast, was du **gemacht** hast und was **passiert ist**. Ein Screenshot oder die Fehlerzeile aus der Server-Konsole hilft sehr.
- **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 ### Lizenz und Nutzungsbedingungen
- **Lösung**: Überprüfe die IP/Port-Einstellungen in `config.yml` unter `servers:`
- Stelle sicher, dass die Server erreichbar sind (Firewall, Ports)
--- **ALLE RECHTE VORBEHALTEN.** Dieses Plugin ist urheberrechtlich geschützt.
## 📚 Support & Dokumentation - Die Weitergabe, Verbreitung oder Veröffentlichung ist **untersagt**.
- Änderungen, Modifikation oder Dekompilierung des Codes sind **verboten**.
- Das Plugin darf nicht verkauft, vermietet oder kommerziell genutzt werden.
- Eine Weitergabe an Dritte ist ohne ausdrückliche schriftliche Genehmigung nicht gestattet.
- **Wiki**: Ausführliche Dokumentation im [Wiki](../../wiki) Bei Verstößen behalten wir uns rechtliche Schritte vor.
- **Bug-Reports**: Erstelle ein [Issue](../../issues) bei technischen Problemen
- **Feature-Requests**: Vorschläge über [Issues](../../issues) mit Label "enhancement"
--- **Copyright © 2026 – M_Viper – Alle Rechte vorbehalten**
## 📝 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.