
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Abhängigkeiten: Plattform: Paper / Folia (Spigot und andere veraltete Bukkit-Forks werden nicht unterstützt) Java-Version: Java 21+ (für…
Abhängigkeiten: Plattform: Paper / Folia (Spigot und andere veraltete Bukkit-Forks werden nicht unterstützt) Java-Version: Java 21+ (für die neuesten Builds wird Java 25 benötigt) Minecraft-Version: 1.19.4 – 1.21.x Zusä
Abhängigkeiten:
Plattform: Paper / Folia (Spigot und andere veraltete Bukkit-Forks werden nicht unterstützt)
Java-Version: Java 21+ (für die neuesten Builds wird Java 25 benötigt)
Minecraft-Version: 1.19.4 – 1.21.x
Zusätzliche Bibliotheken: PlaceholdersAPI (empfohlen für die Integration von Variablen in die Aktionsoberfläche)
Das Erstellen interaktiver Nicht-Spieler-Charaktere (NPC) auf Minecraft-Servern geht traditionell mit erheblichem Hardwareaufwand einher. Veraltete Lösungen registrieren NPCs als vollwertige Server-Entitäten (Entity), was den Kern dazu zwingt, ihre künstliche Intelligenz, physische Kollisionen, Wegfindung und das Laden von Chunks zu verarbeiten. Dies führt zu einem kritischen Rückgang des TPS-Werts (Ticks Per Second), wenn die Anzahl der Charaktere steigt. Das Plugin FancyNpcs bietet eine alternative, paketbasierte Methode zum Rendern virtueller Charaktere, die es ermöglicht, Hunderte interaktiver Figuren ohne jeglichen Einfluss auf die Leistung des Server-Threads zu betreiben.
Paketarchitektur und Folia-Kompatibilität
Die wichtigste technische Besonderheit von FancyNpcs besteht darin, dass die erstellten Charaktere ausschließlich im Speicher des Plugins und auf der Seite der verbundenen Clients existieren. Der Server fügt sie weder zur Weltdatenbank hinzu noch verarbeitet er sie im allgemeinen Aktualisierungszyklus der Entitäten.
Wenn sich ein Spieler den festgelegten Koordinaten nähert, fängt das Plugin den Netzwerkverkehr ab und sendet dem Client die Pakete ClientboundAddPlayerPacket (für menschliche Modelle) oder ClientboundAddEntityPacket (für andere Wesen). Das weitere Verhalten, die Ausrüstung und der Anzeigestatus werden mithilfe der Pakete ClientboundSetEntityDataPacket (Metadaten) und ClientboundSetEquipmentPacket (Ausrüstung) aktualisiert. Für den Server existieren diese Charaktere nicht – sie sind „virtuelle Projektionen“ für die Endnutzer.
Dieser Ansatz macht FancyNpcs zur idealen Wahl für Mehrthread-Server auf Basis von Folia. Da Folia die Welt in einzelne Regionen aufteilt, von denen jede in einem eigenen Thread läuft, verursachen herkömmliche NPC-Plugins häufig Deadlocks und kritische Fehler durch Versuche der Interaktion zwischen Threads verschiedener Regionen. FancyNpcs verarbeitet die Daten asynchron und sendet die Pakete direkt an die Spieler, wodurch Konflikte mit dem Task-Scheduler von Folia vollständig vermieden werden.
Möglichkeiten zur Anpassung des Erscheinungsbilds
Das Plugin unterstützt ein breites Spektrum an Entitätstypen und visuellen Effekten. Spieler können NPCs in Form beliebiger Vanilla-Mobs (Player, Cow, Zombie, Skeleton, Villager, Pig usw.) erstellen und ihr Aussehen fein abstimmen.
Skin-Verwaltung (für menschliche Modelle)
Für Charaktere des Typs player stehen mehrere Quellen zum Laden von Texturen zur Verfügung:
@mirror: Der Skin des NPC kopiert dynamisch den Skin desjenigen Spielers, der ihn gerade ansieht.Name oder UUID eines lizenzierten Kontos: Das Plugin sendet automatisch eine Anfrage an die Mojang-Session-Server, um die entsprechende Textur zu laden.
Direkter Link zu einer Webressource (URL): Möglichkeit, eine beliebige externe .png-Datei von einem Webserver zu laden.
Lokale Dateien: Bilder, die zuvor im Ordner /plugins/FancyNpcs/skins/ abgelegt wurden.
Flag
--slim: aktiviert die Verwendung des schlanken Armmodells (Alex-Stil) für über Links geladene Skins.
Visuelle Effekte und Attribute
Leuchten (Glowing): fügt eine farbige Kontur um den Charakter hinzu. Die Farbe ist an die Vanilla-Teamfarben (Team Colors) gebunden.
Ausrüstung (Equipment): Charakteren können beliebige Gegenstände in die linke oder rechte Hand gegeben werden, außerdem können Helm, Brustpanzer, Beinschutz und Stiefel angelegt werden.
Posen (Poses): Es werden spezifische Anzeigezustände unterstützt, wie Sitzen, Liegen (Imitation des Schlafens im Bett), Schwimmen und Kriechen.
Größe (Scale): In neuen Versionen des Plugins ist die Unterstützung für die Skalierung von Entitäten (Änderung der physischen Modellgröße) implementiert.
Befehlssystem und Syntax
Die Verwaltung der Charaktere erfolgt ausschließlich über Befehle im Spiel-Chat oder der Serverkonsole. Die folgende Tabelle enthält eine Beschreibung der grundlegenden Syntax:
Befehl | Beschreibung und Parameter | Anwendungsbeispiel |
| Erstellen eines neuen Charakters |
|
| Entfernen eines vorhandenen Charakters |
|
| Ändern des Skins (Name, url oder @mirror) |
|
| Stattet den NPC mit dem Gegenstand aus, den der Spieler in der Hand hält |
|
| Aktiviert das farbige Leuchten um das Modell |
|
| Lässt den Charakter den Kopf zu den Spielern drehen |
|
| Legt spezifische Posen oder Mob-Varianten fest |
|
Für die globale Verwaltung des Plugins werden die Plattformbefehle verwendet:
/fancynpcs reload– lädt die Systemkonfigurationen neu./fancynpcs save– schreibt den aktuellen Zustand aller NPCs zwangsweise auf die Festplatte in die Datenbankdatei.
System interaktiver Aktionen (Actions)
FancyNpcs enthält einen integrierten Skriptmechanismus für Aktionen, der bei der Interaktion eines Spielers mit dem Charakter aktiviert wird. Aktionen können für verschiedene Klicktypen konfiguriert werden (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Das Plugin bietet folgende Aktionstypen zur Ausführung an:
message: Senden einer Nachricht an den Spieler. Unterstützt MiniMessage (Hex-Farben) und PlaceholdersAPI-Variablen.player_command: Ausführung eines Befehls im Namen des Spielers.player_command_as_op: Ausführung eines Befehls im Namen des Spielers mit vorübergehender Gewährung von Operatorrechten (zur Aktivierung von Befehlen, die ein gewöhnlicher Spieler nicht verwenden kann).console_command: Ausführung eines Befehls durch die Serverkonsole. Die Variable {player} wird automatisch durch den Spielernamen ersetzt.send_to_server: sofortiges Verschieben des Spielers auf einen anderen Server im BungeeCord- oder Velocity-Netzwerk.wait: erzeugt eine Pause zwischen Aktionen (Verzögerung in Server-Ticks).block_until_done: verhindert wiederholtes Anklicken des NPC, bis das aktuelle Aktionsszenario abgeschlossen ist.execute_random_action: zufällige Auswahl einer der folgenden Aktionen aus der Liste.
Beispiel für die Erstellung eines komplexen interaktiven Szenarios für einen NPC namens Bob:
Hinzufügen einer Begrüßungsnachricht:
/npc action Bob RIGHT_CLICK add message <yellow>Willkommen auf unserem Server, %player_name%!</yellow>Hinzufügen einer Pause von 40 Ticks (2 Sekunden):
/npc action Bob RIGHT_CLICK add wait 40Teleportieren des Spielers zum Spawn über die Konsole:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Dank der Möglichkeit, mehrere aufeinanderfolgende Schritte hinzuzufügen und die Reihenfolge mithilfe von add_before, add_after und move_up/move_down zu steuern, können Administratoren vollwertige Dialogbäume oder komplexe Mechaniken für Übergänge zwischen Lobby-Servern erstellen, ohne zusätzliche Plugins wie Denizen oder MyCommand zu installieren.
Struktur der Konfigurationsdateien
Alle Daten werden im Verzeichnis plugins/FancyNpcs/ gespeichert. Die Arbeit des Plugins basiert auf zwei Dateien:
1. config.yml
Diese Datei bestimmt das globale Verhalten des Plugins und enthält folgende Einstellungen:
turn_to_player_distance(Standardwert 5): Radius in Blöcken, innerhalb dessen der Charakter den Kopf zu den Spielern dreht. Eine Verringerung dieses Parameters optimiert die Übertragung von Netzwerkpaketen in stark frequentierten Zonen.visibility_distance(Standardwert 20): Entfernung in Blöcken, in der dem Client die Erscheinungspakete der NPCs gesendet werden. Eine Verringerung hilft, Charaktere hinter Wänden oder dem Rendernebel zu verbergen, um die FPS der Spieler zu schonen.enable_autosave: automatisches periodisches Speichern von Änderungen auf der Festplatte.
2. npcs.yml
In dieser Datei speichert das Plugin die Datenbank der erstellten NPCs. Jeder Charakter wird durch einen separaten Datenblock beschrieben:
YAML
Bob: id: 104 type: PLAYER world: world x: 10.5 y: 64.0 z: -25.5 yaw: 90.0 pitch: 0.0 glowing: false turn_to_player: true skin: value: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUv..." signature: "d3G8h...==" actions: RIGHT_CLICK: - type: MESSAGE value: "<green>Herzlich willkommen!</green>" |
Warnung: Das manuelle Bearbeiten der Datei npcs.yml wird wegen des Risikos einer Beschädigung der Syntax oder einer fehlerhaften Festlegung der Koordinaten dringend abgeraten. Alle Änderungen an der NPC-Konfiguration sollten ausschließlich über die spielinternen Befehle vorgenommen und anschließend mit /fancynpcs save gespeichert werden.
Fazit
Das Plugin FancyNpcs ist eine moderne und leistungsfähige Lösung zum Erstellen dekorativer und interaktiver Charaktere auf Minecraft-Servern der Java Edition. Es beseitigt das Hauptproblem älterer Werkzeuge – den Verbrauch von Server-Prozessorzeit für die Verwaltung von Entitäten.
Die wichtigste Einschränkung des Plugins ist das völlige Fehlen künstlicher Intelligenz. Da die Charaktere virtuelle Projektionen auf der Client-Seite sind, können sie sich nicht selbstständig durch die Welt bewegen, mit Blöcken interagieren oder andere Mobs angreifen.
Im Vergleich zum klassischen Plugin Citizens, das komplexe Bewegungsmechaniken (Navigation über Wegpunkte) und die Integration mit Kampfsystemen (Mod Sentinel) unterstützt, ist FancyNpcs in Bezug auf die Flexibilität der künstlichen Intelligenz unterlegen. Allerdings erzeugt Citizens eine enorme Last für den Haupt-Thread des Servers und ist für die Verwendung auf Folia praktisch ungeeignet. FancyNpcs bietet eine ideale Alternative für Lobby-Server, Velocity-Hubs und große SMP-Projekte, bei denen von den Charakteren lediglich eine statische Präsenz, ein gutes Aussehen und eine schnelle Ausführung von Befehlen beim Anklicken verlangt wird.
Installation
Eine typische Installation dauert etwa 5 Minuten. Der Ablauf ist gleich; nur Loader und der passende Build unterscheiden sich.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.








