8
ArmorStands
M_Viper edited this page 2026-01-31 22:18:48 +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.

sollte mal ein Text Hologramm hängen bleiben durch Serverabsturz oder Ähnliches kann man mit diesem Befehl einen Radikalen Cut machen. Stelle dich nah an die Betroffenen Armorstands und gib diesen Befehl ein /minecraft:kill @e[type=armor_stand,distance=..5,limit=4]

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