7
ArmorStands
M_Viper edited this page 2026-01-24 15:05:04 +00:00

ArmorStand & NPC System

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

Befehl Beschreibung Berechtigung
/nexustools Öffnet die Editor-GUI für den fokussierten NPC nexuslobby.armorstand.use
/nexuscmd name <Text> Setzt einen farbigen Anzeigenamen & erstellt ein Status-Backup nexuslobby.armorstand.cmd
/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)

Das DynamicArmorStandModule sorgt für eine immersive Atmosphäre durch automatisierte Verhaltensmuster:

  • ⚔️ Wachdienst-Modus:

    • Erkennt Spieler im Umkreis von 2 Blöcken.
    • Der NPC zieht flüssig sein Schwert und geht in eine Abwehr-Pose.
    • Sobald der Spieler den Bereich verlässt, wird das Schwert weggesteckt.
  • 🌙 Nacht-Logik (13.000 - 23.000 Ticks):

    • Rüstet automatisch eine Fackel in der Off-Hand aus.
    • 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.

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

/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

/nexuscmd add 0 0 player spawn

Teleportiert den Spieler zurück zum Startpunkt.

/nexuscmd add 1 0 console give {player} diamond 1

Gibt dem Spieler einen Diamanten (Server-Befehl).

/nexuscmd name §6§lTorwächter

Setzt einen goldenen Namen mit Backup.

🎨 ArmorStand Editor (/nexustools)

Verwendung

  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.
Funktion Icon Effekt
Kopf/Körper PLAYER_HEAD Stufenlose Rotation (1° Schritte via Shift).
Arme STICK Schaltet Arme an/aus (Nötig für Items).
Sichtbarkeit GLASS_PANE Macht den Stand unsichtbar (Perfekt für reine Hologramm-NPCs).
Dynamic KI NETHER_STAR Toggles Schwert-Abwehr & Nacht-Logik.
Fackel-Sterne GOLD_NUGGET Schaltet die Partikel-Effekte der Fackel ein.
Gravitation FEATHER Schaltet die Schwerkraft aus (Schwebe-NPCs).
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.

⚙️ Dateistruktur

  • armorstands.yml: Speichert Positionen und grundlegende KI-Einstellungen.
  • conversations.yml: Enthält alle Dialogtexte und die Verknüpfungen (links) zwischen den NPC-UUIDs.

Beispiel: Dialog-Konfiguration

# 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

# Globale Einstellungen in armorstands.yml
settings:
  update-interval-ticks: 5   # KI-Prüfungsrate (0.25 Sek für flüssige Animation)
  particle-type: "WAX_OFF"
  detection-range: 2.0
  
gui:
  title: "§0§lNPC-EDITOR"
  items:
    dynamic_on: "§2§lKI AKTIVIERT"
    dynamic_off: "§c§lKI DEAKTIVIERT"
    stars_enabled: "§6Sternen-Effekt: §aAN"

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

  1. Platziere den Stand, gib ihm eine dunkle Rüstung (Kontrast!).
  2. Nutze /nexustools, aktiviere Arme und die Dynamic KI.
  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.

🔧 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.