ArmorStands aktualisiert

2026-01-24 15:05:04 +00:00
parent f3c8d07197
commit a535a19186

@@ -1,67 +1,125 @@
# ArmorStand & NPC System # ArmorStand & NPC System
Ein hochoptimiertes Modul für interaktive NPCs, die nicht nur dekorativ sind, sondern intelligent auf Spieler und die Ingame-Zeit reagieren. Ein hochoptimiertes Modul für interaktive NPCs, die nicht nur dekorativ sind, sondern intelligent auf Spieler, die Ingame-Zeit und komplexe Dialogstrukturen reagieren. Das System kombiniert flüssige Animationen mit einem persistenten Datenmanagement.
## 📊 Befehlsübersicht ## 📊 Befehlsübersicht
| Befehl | Beschreibung | Berechtigung | | Befehl | Beschreibung | Berechtigung |
|--------|--------------|--------------| |--------|--------------|--------------|
| `/nexustools` | Öffnet die Editor-GUI für den fokussierten NPC | `nexuslobby.armorstand.use` | | `/nexustools` | Öffnet die Editor-GUI für den fokussierten NPC | `nexuslobby.armorstand.use` |
| `/nexuscmd <cmd>` | Bindet einen Befehl an den NPC (Rechtsklick) | `nexuslobby.armorstand.cmd` | | `/nexuscmd name <Text>` | Setzt einen farbigen Anzeigenamen & erstellt ein Status-Backup | `nexuslobby.armorstand.cmd` |
| `/nexustools dynamic` | Aktiviert/Deaktiviert die KI-Logik (Schwert/Fackel) | `nexuslobby.admin` | | `/nexuscmd lookat` | Schaltet den intelligenten Blickkontakt (KI) zum Spieler um | `nexuslobby.armorstand.lookat` |
| `/nexuscmd add <s1> <s2> <Typ> <Cmd>` | Bindet Befehle an Slots (0-9). Typen: player, console, bungee | `nexuslobby.armorstand.cmd` |
| `/nexuscmd conv` | Öffnet das Menü für das Dialog-System | `nexuslobby.armorstand.cmd` |
| `/nexuscmd clearbubbles` | Entfernt hängengebliebene Sprechblasen im Umkreis | `nexuslobby.armorstand.cmd` |
## 💬 Conversation System (Dialog-Logik)
Das `ConversationManager`-Modul ermöglicht es, zwei NPCs miteinander sprechen zu lassen. Die Dialoge werden visuell über Sprechblasen (Marker-ArmorStands) dargestellt und durch Sounds untermalt.
### Workflow zum Erstellen eines Dialogs
1. **Selektion:** Markiere NPC 1 mit `/nexuscmd conv select1` und NPC 2 mit `/nexuscmd conv select2`.
2. **Verknüpfung:** Nutze `/nexuscmd conv link <Dialog-ID>`, um die NPCs permanent in der `conversations.yml` zu verbinden.
3. **Testen:** Starte den Dialog manuell mit `/nexuscmd conv start <Dialog-ID>`.
4. **Entkoppeln:** Mit `/nexuscmd conv unlink` entfernst du die Verknüpfung und löschst den Eintrag aus der Datenbank.
### Features
* **🔊 Audio-Visuelles Feedback:** Jeder Satz wird durch einen dezenten Sound-Effekt und eine schwebende Text-Bubble (3 Sek. Sichtbarkeit) begleitet.
* **🤖 Automatisierung:** Das System prüft periodisch, ob Spieler in der Nähe (15 Blöcke) sind, und startet Dialoge automatisch, um die Lobby lebendig zu gestalten.
## 🌓 Dynamic ArmorStands (KI-Modul) ## 🌓 Dynamic ArmorStands (KI-Modul)
Das `DynamicArmorStandModule` sorgt für eine lebendige Atmosphäre in der Lobby. Ein markierter NPC nutzt folgende Automatismen: Das `DynamicArmorStandModule` sorgt für eine immersive Atmosphäre durch automatisierte Verhaltensmuster:
* **⚔️ Wachdienst-Modus (Spieler-Nähe):** * **⚔️ Wachdienst-Modus:**
* Erkennt Spieler im Umkreis von 2 Blöcken. * Erkennt Spieler im Umkreis von 2 Blöcken.
* Der NPC zieht flüssig sein Schwert (Main-Hand) und geht in eine Abwehr-Pose. * Der NPC zieht flüssig sein Schwert und geht in eine Abwehr-Pose.
* Sobald der Spieler den Bereich verlässt, wird das Schwert weggesteckt. * Sobald der Spieler den Bereich verlässt, wird das Schwert weggesteckt.
* **🌙 Nacht-Logik (13.000 - 23.000 Ticks):** * **🌙 Nacht-Logik (13.000 - 23.000 Ticks):**
* Der NPC rüstet automatisch eine Fackel in der Off-Hand aus. * Rüstet automatisch eine Fackel in der Off-Hand aus.
* Sternen-Effekt: Ein Partikel-Emitter (`WAX_OFF`) spawnt Sterne exakt an der Fackelspitze (mathematisch berechnet: vorn-links-oben). * **✨ Partikel-Präzision:** Nutzt mathematische Vektorberechnung, um Partikel exakt an der Fackelspitze zu emittieren, unabhängig von der Rotation des NPCs.
* **👀 LookAt-Feature:**
* NPCs verfolgen den Kopf des Spielers in Echtzeit, sofern der Tag `as_lookat` aktiv ist.
* **💾 Persistenz:** Dank `PersistentDataContainer` bleiben alle KI-Einstellungen auch nach einem Server-Restart oder Chunk-Reload erhalten. * **💾 Persistenz:** Dank `PersistentDataContainer` bleiben alle KI-Einstellungen auch nach einem Server-Restart oder Chunk-Reload erhalten.
## 📜 Command & Status Binding
Über die `nexuscmd`-Schnittstelle können NPCs als komplexe Interaktionspunkte genutzt werden.
### Bungee-Status-Integration
Du kannst NPCs direkt mit deinem BungeeCord-Netzwerk koppeln:
```bash
/nexuscmd add 1 0 bungee Citybuild
```
Der NPC zeigt automatisch den Status des Servers "Citybuild" an (Online/Offline/Spielerzahl), sofern dies im `ServerStatusModule` konfiguriert ist.
### Status-Backups (asname)
Um zu verhindern, dass Namen durch andere Plugins oder Server-Crashes verloren gehen, speichert das System den Namen als Scoreboard-Tag (`asname:NAME`). Bei jedem Chunk-Load wird die Korrektheit des Namens validiert.
### Beispiele
```bash
/nexuscmd add 0 0 player spawn
```
Teleportiert den Spieler zurück zum Startpunkt.
```bash
/nexuscmd add 1 0 console give {player} diamond 1
```
Gibt dem Spieler einen Diamanten (Server-Befehl).
```bash
/nexuscmd name §6§lTorwächter
```
Setzt einen goldenen Namen mit Backup.
## 🎨 ArmorStand Editor (`/nexustools`) ## 🎨 ArmorStand Editor (`/nexustools`)
### Verwendung ### Verwendung
1. Schaue den gewünschten ArmorStand direkt an (max. 5 Blöcke Distanz). 1. Schaue den gewünschten ArmorStand direkt an (max. 8 Blöcke Distanz dank RayTrace-Technologie).
2. Führe `/nexustools` aus, um das Menü zu öffnen. 2. Führe `/nexustools` aus, um das Menü zu öffnen.
| Funktion | Icon | Effekt | | Funktion | Icon | Effekt |
|----------|------|--------| |----------|------|--------|
| Kopf/Körper | `PLAYER_HEAD` | Stufenlose Rotation aller Gliedmaßen. | | Kopf/Körper | `PLAYER_HEAD` | Stufenlose Rotation (1° Schritte via Shift). |
| Arme | `STICK` | Schaltet Arme an/aus (Nötig für Items). | | Arme | `STICK` | Schaltet Arme an/aus (Nötig für Items). |
| Sichtbarkeit | `GLASS_PANE` | Macht den Stand unsichtbar (für NPC-Namen). | | Sichtbarkeit | `GLASS_PANE` | Macht den Stand unsichtbar (Perfekt für reine Hologramm-NPCs). |
| Dynamic KI | `NETHER_STAR` | Aktiviert Schwert-Abwehr & Nacht-Fackel. | | Dynamic KI | `NETHER_STAR` | Toggles Schwert-Abwehr & Nacht-Logik. |
| Fackel-Sterne | `GOLD_NUGGET` | Schaltet die Partikel-Effekte der Fackel ein. | | Fackel-Sterne | `GOLD_NUGGET` | Schaltet die Partikel-Effekte der Fackel ein. |
| Gravitation | `FEATHER` | Lässt den NPC in der Luft schweben. | | Gravitation | `FEATHER` | Schaltet die Schwerkraft aus (Schwebe-NPCs). |
| Baseplate | `STONE_SLAB` | Entfernt die Steinplatte am Boden. | | Baseplate | `STONE_SLAB` | Entfernt die Steinplatte am Boden. |
**Tipp:** Halte Shift (Schleichen) während der Rotation gedrückt, um das Feintuning (1°-Schritte) zu nutzen. **Tipp:** Halte Shift (Schleichen) während der Rotation gedrückt, um das Feintuning (1°-Schritte) zu nutzen.
## 📜 Command Binding (`/nexuscmd`) ## ⚙️ Dateistruktur
Macht NPCs interaktiv. Nutze den Platzhalter `{player}` für spielerspezifische Aktionen. * **armorstands.yml:** Speichert Positionen und grundlegende KI-Einstellungen.
* **conversations.yml:** Enthält alle Dialogtexte und die Verknüpfungen (links) zwischen den NPC-UUIDs.
### Beispiele ### Beispiel: Dialog-Konfiguration
* `/nexuscmd serverswitcher` Öffnet das Portal-Menü.
* `/nexuscmd tell {player} §aViel Erfolg bei deinem Abenteuer!` Persönliche Nachricht.
* `/nexuscmd spawn` Teleportiert den Spieler zurück zum Startpunkt.
## ⚙️ Konfiguration (`armorstands.yml`)
```yaml ```yaml
# Globale Einstellungen # Beispiel für einen Dialog in der conversations.yml
conversations:
begruessung_lobby:
dialogue:
- "&eWächter: &7Willkommen im Nexus, &f{player}&7!"
- "&aBürger: &7Schön dich wiederzusehen!"
```
### Beispiel: Globale Einstellungen
```yaml
# Globale Einstellungen in armorstands.yml
settings: settings:
update-interval-ticks: 5 # KI-Prüfungsrate (0.25 Sek für flüssige Animation) update-interval-ticks: 5 # KI-Prüfungsrate (0.25 Sek für flüssige Animation)
particle-type: "WAX_OFF" particle-type: "WAX_OFF"
detection-range: 2.0 detection-range: 2.0
gui: gui:
title: "§0§lNPC-EDITOR" title: "§0§lNPC-EDITOR"
items: items:
@@ -70,11 +128,21 @@ gui:
stars_enabled: "§6Sternen-Effekt: §aAN" stars_enabled: "§6Sternen-Effekt: §aAN"
``` ```
## 💡 Best Practice: Der "Viper-Torwächter" ## 💡 Profi-Tipp: Die "Lebendige Lobby"
Platziere zwei NPCs am Spawn-Eingang. Verknüpfe sie mit einer Dialog-ID "begruessung". Aktiviere bei beiden `/nexuscmd lookat`.
**Ergebnis:** Wenn ein Spieler spawnt, drehen beide NPCs den Kopf zum Spieler, begrüßen ihn per Sprechblase und führen einen kurzen Smalltalk aus, bevor sie wieder in ihre Ausgangsposition zurückkehren.
### Bonus: Der "Viper-Torwächter"
Um einen optimalen Eindruck in der weißen Lobby zu hinterlassen: Um einen optimalen Eindruck in der weißen Lobby zu hinterlassen:
1. Platziere den Stand, gib ihm eine dunkle Rüstung (Kontrast!). 1. Platziere den Stand, gib ihm eine dunkle Rüstung (Kontrast!).
2. Nutze `/nexustools`, aktiviere Arme und die Dynamic KI. 2. Nutze `/nexustools`, aktiviere Arme und die Dynamic KI.
3. Setze einen Befehl mit `/nexuscmd`, der die Spieler zum Haupt-Spielmodus führt. 3. Setze einen Befehl mit `/nexuscmd add 0 0 player hub`, der die Spieler zum Haupt-Spielmodus führt.
4. **Ergebnis:** Ein NPC, der nachts den Weg leuchtet, bei Annäherung salutiert/das Schwert zieht und per Klick als Wegweiser dient. 4. **Ergebnis:** Ein NPC, der nachts den Weg leuchtet, bei Annäherung salutiert/das Schwert zieht und per Klick als Wegweiser dient.
## 🔧 Entwickler-Hinweis
Das System nutzt `RayTraceResult` für eine präzise Auswahl von Entities durch Wände oder andere Hindernisse hindurch (Reichweite 8 Blöcke). Dies verhindert Fehlkonfigurationen von eng beieinander stehenden NPCs.