NPCs erstellen
Lege Definitionen mit eindeutigen Dateinamen einschließlich .yml unter plugins/EliteMobs/npcs/ ab. Speichere die Datei und führe /em reload aus, bevor du einen neuen NPC platzierst. Als Spieler mit elitemobs.place.npc verwendest du /em place npc <npcfilename.yml> an der gewünschten Position und mit der gewünschten Blickrichtung. Eine Datei kann mehrere Platzierungen enthalten.
Eine andere NPC-Datei wiederverwenden
Eine NPC-Datei kann mit extends auf einer anderen NPC-Datei aufbauen und dann nur das ändern, was sich unterscheidet:
extends: my_base_npc.yml
name: "&aSecond Guard"
spawnLocations:
- my_world,20,64,20,90,0
Die Datei erbt jeden Wert von der Basis und überschreibt die Schlüssel, die sie selbst setzt. Verschachtelte Abschnitte wie patrol werden Schlüssel für Schlüssel zusammengeführt; eine Liste wie dialog ersetzt die Liste der Basis vollständig. Gib die Basis nur mit ihrem Dateinamen an, ohne Ordnerpfad. Sie muss eine andere Datei in npcs sein, auch in einem Unterordner, und kann ihrerseits eine weitere Basis erweitern.
isEnabled, spawnLocation und spawnLocations werden nie geerbt, sodass jede Datei ihre eigenen Platzierungen behält. Eine Basis mit isEnabled: false kann als Vorlage dienen: Dateien, die sie erweitern, werden trotzdem geladen. EliteMobs schreibt keine Standardwerte in eine Datei, die extends verwendet. Eine fehlende Basis, ein Pfad in extends oder eine Schleife aus extends-Verweisen deaktiviert die Datei mit einer Warnung in der Konsole. Der Patrouillen-Editor verwendet extends, wenn er eine Platzierung aus einer Datei mit mehreren Platzierungen herauslöst.
Konfigurationseinstellungen
isEnabled
Aktiviert die Definition beim Laden der Konfigurationen. Lade sie nach Änderungen neu. Ein SCROLL_APPLIER erscheint außerdem nur bei aktiviertem useEliteItemScrolls.
| Schlüssel | Werte | Standard |
|---|---|---|
isEnabled | Wahrheitswert | true |
Beispiel
isEnabled: true
name
Legt den Anzeigenamen mit Unterstützung für Farbcodes fest. EliteMobs registriert diesen Text in seiner Übersetzungs-CSV und verwendet die Übersetzung der eingestellten Sprache, sofern vorhanden.
| Schlüssel | Werte | Standard |
|---|---|---|
name | Text | leere Zeichenfolge |
Beispiel
name: "&aEnn Peecee"

Anordnung der Beschriftung
Name und Rolle haben eine feste Anordnung. Es gibt keine NPC-spezifischen Einstellungen nameplateScale oder nameplateLineGap. Normale und verkleidete NPCs richten ihre Beschriftung nach der Körper- beziehungsweise Verkleidungshöhe aus. Kompatible FreeMinecraftModels-Modelle verwalten ihre Beschriftung selbst; ModelEngine behält seinen eigenen Namen, während EliteMobs die Rolle anzeigt. Persönliche Questmarkierungen stehen darüber.
Bei aktiviertem Glücksspiel ergänzt der besondere NPC gambling_den_owner.yml die Gewinne des Hauses in derselben Beschriftung und aktualisiert sie ungefähr jede Sekunde.
scale
Skaliert den zugrunde liegenden Dorfbewohner über das Größenattribut von Minecraft. Ein Modell oder eine Verkleidung kann die eigene sichtbare Größe steuern; diese muss der Skalierung des Dorfbewohners daher nicht folgen.
| Schlüssel | Werte | Standard |
|---|---|---|
scale | Multiplikator | 1.0 |
Beim Skalieren stellt 1.0 die Standardgröße dar. Um die Entität größer zu machen, erhöhe den Wert (z. B. 1.2). Um die Entität kleiner zu machen, verringere den Wert (z. B. 0.8).
Beispiel
scale: 1.2
role
Legt die rein optische Rollenbeschriftung unter dem Namen fest. Sie unterstützt Farbcodes und wird in der Übersetzungs-CSV registriert.
| Schlüssel | Werte | Standard |
|---|---|---|
role | Text | leere Zeichenfolge |
Beispiel
role: "&c<Red Fellow>"

profession
Legt den Beruf des Dorfbewohners fest. Dieser bestimmt das Aussehen, wenn weder Verkleidung noch eigenes Modell verwendet werden.
| Schlüssel | Werte | Standard |
|---|---|---|
profession | Beruf | NITWIT |
Beispiel
profession: NITWIT

greetings
Begrüßungen werden versucht, wenn eine Näherungsprüfung den Spieler erstmals innerhalb von activationRadius erkennt. Ein zufälliger Eintrag erscheint als schwebende Sprechblase nur für diesen Spieler, ungefähr 5 Sekunden lang. Die Liste wird in der Übersetzungs-CSV registriert. Sprechen erfordert canTalk und einen abgelaufenen Dialog-Cooldown.
| Schlüssel | Werte | Standard |
|---|---|---|
greetings | Textliste | keine |
Der Begrüßungsversuch erfolgt nur beim erkannten Eintritt. Blockiert ihn der gemeinsame Cooldown, wird er nicht wiederholt, solange der Spieler im Radius bleibt.
Beispiel
greetings:
- Hi there!
- Good day.

dialog
Legt die Sprechblasen fest. Jeder Versuch wählt einen Eintrag zufällig aus, statt die Liste der Reihe nach zu lesen. Die Liste wird in der Übersetzungs-CSV registriert.
CHATversucht einen Dialog bei Interaktion, normalerweise per Rechtsklick. FreeMinecraftModels leitet auch Linksklicks auf Modelle an die Interaktionsverarbeitung weiter.- Andere Typen versuchen Dialoge bei späteren Näherungsprüfungen innerhalb von
activationRadius; die erste Prüfung versucht eine Begrüßung.
Ein wörtliches \n erzeugt übereinanderstehende Zeilen. Verwende einfache YAML-Anführungszeichen oder schreibe \\n innerhalb doppelter Anführungszeichen. Das gilt auch für Begrüßungen und Abschiede.
| Schlüssel | Werte | Standard |
|---|---|---|
dialog | Textliste | keine |
Beispiel
dialog:
- I like apples!
- Sure is hot.

farewell
Legt zufällig ausgewählte Abschiede als Sprechblasen fest. Die Liste wird in der Übersetzungs-CSV registriert.
| Schlüssel | Werte | Standard |
|---|---|---|
farewell | Textliste | keine |
Beim Schließen einer beliebigen Inventaransicht mit nicht leerem Titel werden Abschiede naher NPCs versucht. Die Suche reicht entlang jeder Achse 5 Blöcke um den Spieler und ist nicht auf den Eigentümer des Menüs beschränkt. Mehrere NPCs können sprechen. Das Verlassen von activationRadius löst keinen Abschied aus.
Beispiel
farewell:
- Until next time!
- Bye!

canTalk
Steuert die eingebauten Sprechblasen. false unterdrückt greetings, dialog und farewell, deaktiviert aber keine Menüs, Befehle, Lua-Skripte, Questdialoge, Näherungserkennung oder Questmarkierungen.
| Schlüssel | Werte | Standard |
|---|---|---|
canTalk | Wahrheitswert | true |
Beispiel
canTalk: true
activationRadius
Legt den Erkennungsradius in Blöcken fest.
| Schlüssel | Werte | Standard |
|---|---|---|
activationRadius | Dezimalzahl | 3.0 |
Die Prüfung läuft alle 100 Ticks, ungefähr 5 Sekunden, mit dreidimensionalem Abstand und ohne Sichtlinienprüfung. Stehende NPCs können Spieler ansehen, beim Eintritt begrüßen und bei späteren Prüfungen sprechen. 0 oder weniger deaktiviert diese Interaktionen einschließlich der Lua-Näherungshooks. Markierungen von QUEST_GIVER und CUSTOM_QUEST_GIVER verwenden unabhängig davon 30 Blöcke und können bei activationRadius: 0 erscheinen. Sie zeigen verfügbare und abzugebende Quests des jeweiligen Spielers.
Während sich eine Patrouille bewegt oder bearbeitet wird, sind Prüfung und Sprechblasen unterdrückt. patrol.pauseNearPlayersRadius und patrol.faceNearbyPlayers steuern Pausen und Blickrichtung bei Spielern; siehe Patrouillen.
Beispiel
activationRadius: 3.0
scripts
Legt die Lua-Skripte des NPCs aus plugins/EliteMobs/npc_scripts/ fest. Die Endung .lua ist optional und wird bei Bedarf ergänzt.
| Schlüssel | Werte | Standard |
|---|---|---|
scripts | Textliste | keine |
Die gemeinsame MagmaCore-Lua-Engine unterstützt on_spawn, on_game_tick, on_remove, on_npc_interact, on_npc_proximity_enter, on_npc_proximity_leave, on_zone_enter und on_zone_leave. Der Tick-Hook für NPCs heißt on_game_tick. Jeder NPC erhält eigene Skriptinstanzen; kleinere Prioritäten laufen zuerst. Ein Skript nur mit Tick-Hook benötigt zur Initialisierung zusätzlich ein gegebenenfalls leeres on_spawn. Siehe Lua-NPC-Skripte für API und Beispiele.
Ein Name ohne passende geladene Skriptdefinition wird mit Warnung übersprungen; der NPC erscheint trotzdem. Beachte die Groß-/Kleinschreibung und lade nach Änderungen neu.
Ein Questdialog kann den Klick vor on_npc_interact verbrauchen. Andernfalls läuft dieser Hook vor der konfigurierten Interaktion und bricht sie nicht ab.
Beispiel
scripts:
- wave.lua
interactionType
Legt die Art der Interaktion fest, die der NPC durchführt.
| Schlüssel | Werte | Standard |
|---|---|---|
interactionType | Speziell [1] | NONE |
Beispiel
interactionType: TELEPORT_BACK
noPreviousLocationMessage
Nachricht von TELEPORT_BACK, wenn kein Rückkehrort gespeichert ist. Der Ort ist der Ausgangspunkt einer EliteMobs-Teleportation von außerhalb einer EliteMobs-Welt, nicht die letzte gelaufene Position oder der Todesort. Die Rückkehr verwendet das normale EliteMobs-Teleportverfahren samt Verzögerung und Abbruchregeln. Die Nachricht unterstützt Farbcodes und wird in der Übersetzungs-CSV registriert.
| Schlüssel | Werte | Standard |
|---|---|---|
noPreviousLocationMessage | Text | leere Zeichenfolge |
Beispiel
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

timeout
Minuten bis zum Entfernen des erschienenen NPCs. 0 oder weniger deaktiviert den Timer. Die gespeicherte Platzierung und die Definition bleiben bestehen; der NPC kann nach Neuladen, Neustart oder Wiederherstellung des Chunks zurückkehren.
Zum Löschen einer Platzierung aktiviere /em remove, schlage den NPC und beende den Modus erneut mit /em remove. Erforderlich ist elitemobs.remove. Bei Listen wird der passende Eintrag entfernt; eine alte Definition mit Einzelposition wird deaktiviert. Entferne beim Umstieg auf spawnLocations den alten Schlüssel spawnLocation, sonst kann dieser bei leerer Liste wieder aktiv werden.
| Schlüssel | Werte | Standard |
|---|---|---|
timeout | Dezimalzahl | 0 (nie) |
Beispiel
timeout: 0
questFileName
Liste von Questdateien aus plugins/EliteMobs/customquests/ einschließlich .yml für CUSTOM_QUEST_GIVER. Der Schlüssel steht trotz Listenwert im Singular. Das Menü bietet zulässige Quests an und nimmt Quests entgegen, deren Abgabe diesem NPC-Dateinamen zugeordnet ist. Ein Abgabe-NPC kann daher eine leere Angebotsliste haben. Alle Platzierungen derselben Datei teilen diese Identität. Individuelle Questberechtigungen und Voraussetzungen gelten weiterhin.
| Schlüssel | Werte | Standard |
|---|---|---|
questFileName | Textliste | keine |
Beispiel
questFileName:
- my_quest_one.yml
- my_quest_two.yml
disguise
Legt die Verkleidung fest und benötigt LibsDisguises. Ein erfolgreich geladenes eigenes Modell hat Vorrang.
| Schlüssel | Werte | Standard |
|---|---|---|
disguise | LibsDisguises-Format | keiner |
Beispiel
disguise: SKELETON

customDisguiseData
Legt die Daten für eine benutzerdefinierte LibsDisguises-Verkleidung fest.
| Schlüssel | Werte | Standard |
|---|---|---|
customDisguiseData | LibsDisguises-Format | keiner |
Beispiel
disguise: custom:my_cool_disguise_name
customDisguiseData: player my_cool_disguise_name setskin {"id":"364acb6d-9050-46f7-b5fb-f8c3fd83a6fc","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTYxMTk4ODA4Nzc1NSwKICAicHJvZmlsZUlkIiA6ICJkZGVkNTZlMWVmOGI0MGZlOGFkMTYyOTIwZjdhZWNkYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJEaXNjb3JkQXBwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliYmVkODQzNWY4YmYyNzhhZmUyNmU2NGZkOTI2YjhiMzc3MzJkODhlMzM0ODk3ZGJkNTI3ZDU2ZmY5MTk5MGUiCiAgICB9CiAgfQp9","signature":"ujLq1joYVktuQAp1xpFKlxQFUVinSePiDBiVCAxxix/mA5vP86i/eAOfb1mtGjaAZ6sO0l2olbzvycnGXNBtbAxgqprguROXY4tpWiePVTDmy3iD4GdOCxHAkYLoyMV5qTT4SNsldUFFuND8GSEgbNMltKDLmhNKwzm08iCigPfpeuYpwljgJPxu6ka54PKNaQu4doI0ZDZXKqq4hPhR3Bs2Sz9MI0SmdmQWwcCzUz3DFdVno27fmQ6LwqmT+eSoOv0EttVG/XMaTYQ5lhBY61mqf6WlJyYVUSfjJk1AbYsctu7dWM+sbY8jFq5ljvXJGGr5TyKi+fs8vHy06Z2go20QgTYOw+caFxFijAS6fgm3oY57VEO/+/9OLHdD+Z9BrWqQWcIIrVeIfxjue/yt4pyeVv9jX59hjNFjhcPEwotkxJ+vZ96WlTLWDG4BiqauDr2VeGyLlVaygO9ZU0wwsN65iSh91GI3tMIA5wbDR0Hts/9ABvt9eafHbowS+4SZXN0i9mYnKg7op1eiB8nMEAGsPJg3DwsmUrh3ACAapQ6eYHiJpo59RXDqKlRcXwo7wsEFp//5LgQWbPj0NP3nxnywdpozqSAeq6236qlhE9BT9eiyJ41V9sMelYFEWMlUAltR40NdbIrHB0J3nmfuLJz44/sTwWf6P1khOy//XX0="}],"legacy":false}

customModel
Legt ein Modell für FreeMinecraftModels oder ModelEngine fest. Installiere es zuerst beim ausgewählten Anbieter und trage dann seine ID ein. Sind beide verfügbar, wird FreeMinecraftModels bevorzugt; ein fehlendes FMM-Modell bewirkt keinen Wechsel zu ModelEngine. Lädt kein Modell, verwendet der NPC seine Verkleidung oder das normale Dorfbewohneraussehen. Siehe Eigene Modelle.
| Schlüssel | Werte | Standard |
|---|---|---|
customModel | Text | keiner |
Beispiel
customModel: MY_MODEL_ONE
Klassentrainer und Transport
Verwende interactionType: CLASS_TRAINER mit classRoot zur Auswahl des Klassenzweigs. Beginne mit den mitgelieferten Definitionen class_trainer_*.yml. Prüfungen und Fortschritt erklärt Advanced Combat System.
Bei interactionType: TRANSPORT enthält transportRoutes Routen-IDs ohne .yml; ein Klick öffnet die Zielauswahl. Siehe Transportrouten.
arena
Legt den Dateinamen der Arena fest, für die der NPC ein Menü öffnet (erfordert den interactionType ARENA_MASTER).
| Schlüssel | Werte | Standard |
|---|---|---|
arena | Dateiname | keiner |
Beispiel
arena: my_arena.yml
command
Befehl für COMMAND. Er läuft im nächsten Tick als klickender Spieler mit dessen normalen Berechtigungen. Lasse den führenden / weg. Dieses Feld ersetzt keine Spielerplatzhalter automatisch und verwendet nicht das EliteMobs-Format für Konsolenbefehle.
| Schlüssel | Werte | Standard |
|---|---|---|
command | Text | keiner |
Beispiel
command: say Look at me running a command, how cool!
![]()
spawnLocation
Alter Schlüssel für eine einzelne Position. Er wird nur gelesen, wenn spawnLocations fehlt oder leer ist. Neue Platzierungen im Spiel werden in spawnLocations geschrieben; bevorzuge diesen Schlüssel.
Empfohlenes Format: world,x,y,z,yaw,pitch. Die Welt muss bereits geladen sein; die Einstellung lädt sie nicht.
| Schlüssel | Werte | Standard |
|---|---|---|
spawnLocation | Text | keiner |
Beispiel
spawnLocation: my_world,10,50,10,0,0
spawnLocations
Mehrere Platzierungen derselben Definition. /em place npc <npcfilename.yml> ergänzt deine auf zwei Nachkommastellen gerundete Position und Blickrichtung und setzt isEnabled: true. Eine identisch gespeicherte Position wird nicht doppelt eingetragen. NPCs werden wiederhergestellt, sobald ihre Chunks Entitäten verarbeiten können.
Das Format jedes Eintrags ist world,x,y,z,yaw,pitch.
| Schlüssel | Werte | Standard |
|---|---|---|
spawnLocations | Textliste | keine |
Beispiel
spawnLocations:
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0
instanced
Bei true wird der NPC für instanzierte Dungeons als Vorlage registriert. Er erscheint nicht in der Vorlagenwelt, sondern wird für jede Dungeon-Instanz in deren Welt geklont.
| Schlüssel | Werte | Standard |
|---|---|---|
instanced | Wahrheitswert | false |
Beispiel
instanced: false
syncMovement
Synchronisiert die Bewegung eines geladenen customModel mit dem zugrunde liegenden Körper. Bei normalen und LibsDisguises-NPCs hat die Einstellung keine Wirkung.
Eine gültige konfigurierte patrol aktiviert die Synchronisierung auch im pausierten Zustand oder bei false. Für Modelle ohne Patrouille bleibt die Einstellung relevant.
| Schlüssel | Werte | Standard |
|---|---|---|
syncMovement | Wahrheitswert | true |
Beispiel
syncMovement: true
patrol
Fügt dem NPC eine native, automatisch berechnete Route hinzu. Knoten sind Versätze vom festgelegten Spawnpunkt des NPCs oder, mit patrol.relative: false, exakte Koordinaten in seiner Welt. Lange Segmente werden automatisch geteilt und Chunks nicht zwangsweise geladen. Mit patrol.startNodeWaitSeconds rastet der NPC einmal pro Runde am ersten Knoten, das nur für NPCs verfügbare patrol.pauseNearPlayersRadius pausiert ihn in Spielernähe, und patrol.faceNearbyPlayers dreht ihn während der Pause zu ihnen. NPC- und Boss-Patrouillen beschreibt Schema, Editor, Langstreckenverhalten und Lua-Steuerung.
NPC-Konfigurationsbeispiel
isEnabled: true
name: "&cRed Rubin"
role: "&a<Generic NPC>"
profession: NITWIT
greetings:
- Hiya!
- Hello!
dialog:
- Great conversation!
- Pleasure talking with you!
farewell:
- Goodbye!
- Laters!
canTalk: true
activationRadius: 4
interactionType: CHAT
timeout: 0
spawnLocations:
- my_world,584,55,127,90,10

Speziell [1]
Im Folgenden findest du die Liste der gültigen NPC-Interaktionstypen:
| Typ | Beschreibung |
|---|---|
GUILD_GREETER | Öffnet Waffenfertigkeitsboni. Benötigt elitemobs.skill.npc. |
CLASS_TRAINER | Öffnet den Zweig aus classRoot. Benötigt elitemobs.command. |
TRANSPORT | Öffnet die Ziele aus transportRoutes. |
CHAT | Versucht bei Interaktion eine zufällige Zeile aus dialog. |
CUSTOM_SHOP | Öffnet den eigenen Shop. Benötigt elitemobs.shop.custom.npc. |
PROCEDURALLY_GENERATED_SHOP | Öffnet den generierten Shop. Benötigt elitemobs.shop.dynamic.npc. |
BAR | Nicht implementiert. Teilt dem Spieler mit, dass das Feature bald verfügbar ist. |
ARENA | Tut nichts. Verwende stattdessen ARENA_MASTER. |
QUEST_GIVER | Öffnet generierte Quests. Benötigt elitemobs.quest.npc. |
CUSTOM_QUEST_GIVER | Bietet zulässige Quests aus questFileName an und nimmt zugeordnete Abgaben entgegen. |
NONE | Keine eingebaute Aktion; Skripte, Näherung und Questdialoge bleiben möglich. |
SELL | Öffnet den Verkauf. Benötigt elitemobs.shop.sell.npc. |
TELEPORT_BACK | Verwendet den gespeicherten EliteMobs-Rückkehrort. Benötigt elitemobs.back.npc. |
SCRAPPER | Öffnet die Verschrottung. Benötigt elitemobs.scrap.npc. |
REPAIRMAN | Öffnet Reparaturen. Benötigt elitemobs.repair.npc. |
ENCHANTER | Öffnet Verzauberungen. Benötigt elitemobs.enchant.npc. |
REFINER | ERSETZT - Teilt dem Spieler mit, dass das Feature ersetzt wurde; Administratoren wird geraten, den NPC zu entfernen |
SMELTER | ERSETZT - Teilt dem Spieler mit, dass das Feature ersetzt wurde; Administratoren wird geraten, den NPC zu entfernen |
ENHANCER | ERSETZT - Teilt dem Spieler mit, dass das Feature ersetzt wurde; Administratoren wird geraten, den NPC zu entfernen |
UNBINDER | Öffnet die Entbindung. Benötigt elitemobs.unbind.npc. |
ARENA_MASTER | Öffnet das Arena-Menü für die in arena festgelegte Arena |
COMMAND | Führt den in command festgelegten Befehl aus |
SCROLL_APPLIER | Öffnet Elite-Gegenstandsrollen. Benötigt elitemobs.scroll.npc; erscheint nicht bei deaktiviertem useEliteItemScrolls. |
ARROW_SHOP | Öffnet den Pfeilshop. Benötigt elitemobs.shop.arrow.npc. |
GAMBLING_BLACKJACK | Öffnet Blackjack. Benötigt elitemobs.gambling.npc. |
GAMBLING_COINFLIP | Öffnet Münzwurf. Benötigt elitemobs.gambling.npc. |
GAMBLING_SLOTS | Öffnet den Spielautomaten. Benötigt elitemobs.gambling.npc. |
GAMBLING_HIGHERLOWER | Öffnet Höher/Tiefer. Benötigt elitemobs.gambling.npc. |
Weitere Informationen darüber, was die Interaktionstypen SCRAPPER und ähnliche bewirken, findest du hier.
Hinweise zum NPC-Verhalten
Zum eingebauten Verhalten gehört außerdem:
- Bewegung: NPCs stehen normalerweise still und sehen nahe Spieler an. Patrouillen und Skripte können sie bewegen. Die Patrouille steuert die Route statt des normalen Dorfbewohnerverhaltens.
- Interaktionsreihenfolge: Ein Questdialog kann den Klick vor Lua und der eingebauten Aktion verbrauchen. Sonst folgt auf Lua die konfigurierte Aktion samt Berechtigungsprüfungen. Eine Sperre von einem Tick verhindert wiederholte Interaktionen desselben Spielers über mehrere NPCs hinweg. Das Bearbeiten einer Patrouille blockiert Interaktionen, ihre normale Bewegung nicht.
- Schutz: NPC-Körper kollidieren nicht wie gewöhnlich. EliteMobs verhindert Schaden, Dorfbewohnerverwandlungen und das Öffnen des normalen Handelsinventars.
- Beschriftung: Name und Rolle folgen der festen Anordnung oben. Normale und verkleidete NPCs verwenden die aktuelle Körperhöhe; die Skalierung kann daher die Beschriftung verschieben. Kompatible FMM-Modelle verwalten Name und Rolle zusammen.
- Bedrock: Die Darstellung hängt von der aktiven Modell- und Anzeigeintegration ab. Der aktuelle Renderer verwendet den beibehaltenen Schlüssel
bedrockNPCRoleYOffsetnicht. - Dialog-Cooldown: Jeder NPC teilt 3 Sekunden Wartezeit zwischen allen Spielern. Eine Begrüßung kann dadurch die eines anderen Spielers verhindern. Persönliche Sprechblasen verschwinden nach ungefähr 5 Sekunden.
- Unsichtbarkeit: NPCs mit Unsichtbarkeitstrankeffekt zeigen keine Sprechblasen.
- Chunks: NPCs verschwinden beim Entladen und werden wiederhergestellt, wenn der Chunk wieder Entitäten verarbeitet. Die Entitäten werden nicht in der Welt gespeichert; ihre Platzierungen stammen aus den Konfigurationen.
- Umbenennen: Normale Rechtsklicks auf den Dorfbewohner mit Namensschild in der Haupthand werden mit einer Nachricht abgebrochen. Modelle verwenden eigene Klick-Callbacks; FreeMinecraftModels leitet Links- und Rechtsklicks an die NPC-Interaktionsverarbeitung weiter.
