Zum Hauptinhalt springen

Entities in Dungeons

Ein Dungeon hat zwei Arten von Lebewesen, und sie werden unterschiedlich behandelt.

NPCKampf-Mob
EntryDungeon NPC InstanceDungeon Mob Spawn
Was es istJede Typewriter-Entity-Definition (Typewriters eigene Entities, MythicMobsNPC, BetterModel usw.)Ein echter Vanilla-Mob
Wer es siehtNur die Mitglieder des DurchlaufsAlle in der Welt, aber er gehört zum Durchlauf
Wann es erscheintSolange der Durchlauf existiertEinmal pro Durchlauf, wenn ein Mitglied zum ersten Mal seinen Raum betritt
PlatzierungspawnLocation (fest) oder ein NPC-Marker (generiert)room + positions (fest) oder MOB-Marker (generiert)

NPCs eines Durchlaufs​

Eine Dungeon NPC Instance zeigt einen NPC pro Durchlauf, in der Welt dieses Durchlaufs, nur den Mitgliedern dieses Durchlaufs. Ein Spieler, der kein Mitglied ist (ein anderer Durchlauf in derselben geteilten Welt oder ein Spieler, der gegangen ist), sieht nichts. Ein Mitglied, das den Durchlauf verlässt, verliert den NPC sofort.

  1. Erstelle die Entity-Definition wie gewohnt (eine Typewriter-Entity, ein MythicMobsNPC, ein BetterModel ...). Wähle sie immer per Referenz, nie durch Eintippen einer Id.
  2. Füge eine Dungeon NPC Instance hinzu und setze definition.
  3. Setze in einem festen Dungeon spawnLocation: die Position in der Vorlagenwelt. Der Slot des Durchlaufs verschiebt sie. Platziere in einem generierten Dungeon einen NPC-Marker in einer Raumvorlage und lass sein Feld npc auf die Instance zeigen. Die spawnLocation wird ignoriert.

allowedDungeonIds listet die Dungeon Instances auf, deren Durchläufe den NPC zeigen. Leer bedeutet jeden Durchlauf jedes Dungeons. In einem festen Dungeon gilt dieselbe spawnLocation für jeden betroffenen Dungeon, schränke die Liste also ein, wenn sich die Dungeons unterscheiden. In einem generierten Dungeon wird der NPC nur in einem Durchlauf gezeigt, dessen Layout einen NPC-Marker hat, der auf ihn zeigt. Nennen mehrere Marker (oder mehrere Räume) dieselbe Instance, zählt nur der erste, in Layout-Reihenfolge.

group ist standardmäßig leer: Die Audience sind die Mitglieder des Durchlaufs, ein NPC pro Durchlauf. Wähle einen Group-Entry nur, um einen NPC unter den Mitgliedern dieser Gruppe im selben Durchlauf zu teilen.

Grenzen von NPCs​

  • Activities verwenden absolute Positionen. Eine Entity-Activity (ein Weg, eine Patrouille) wird nicht in den Slot oder die Welt des Durchlaufs verschoben. Lass activity leer (der NPC steht still), es sei denn, du weißt, dass die Activity nur relative Bewegung verwendet.
  • MythicMobsNPC: ticking ausschalten und einen aktuellen Build verwenden. Eine MythicMobsNPC-Definition mit eingeschaltetem ticking erstellt pro Betrachter einen echten Mob. Setze in Dungeons ticking in der Definition auf aus. Der Server hält dann einen Träger-Mob pro Mitglied, jeweils vor jedem versteckt, der nicht dieses Mitglied ist, und ein Klick ergibt genau eine Interaktion für den richtigen Spieler. Das braucht MythicMobsNPC 5.0 oder neuer (Korrektur der Sichtbarkeit pro Durchlauf); ältere Builds zeigen den Träger allen oder doppelt.
  • Eine von einem MythicMobsNPC in einem Dungeon abgespielte Cinematic ist ungetestet.
  • Der NPC wird jenseits der Anzeigereichweite (showRange oder der Standardwert der Entities) versteckt und kommt zurück, wenn das Mitglied näher kommt. Das ist normal.
  • Truhen-NPC-Anker: Eine Dungeon Loot Chest mit NPC-Platzierung öffnet sich, wenn ihre npcAnchor-Entity rechtsgeklickt wird.

Kampf-Mobs​

Ein Dungeon Mob Spawn lässt echte Vanilla-Mobs erscheinen.

Wann. Einmal pro Durchlauf, wenn ein Mitglied zum ersten Mal den Raum (fester Dungeon) oder den Raum des Markers (generierter Dungeon) betritt. Sie respawnen nie. Wellen werden mit der Action Dungeon Spawn Mobs erzeugt. In einem festen Dungeon lässt der Raumeintritt sie auch dann erscheinen, wenn enterOnce des Raums aus ist, und nur einmal pro Durchlauf.

Wo.

  • Generierter Dungeon: an jedem MOB-Marker einer Raumvorlage, der auf den Entry zeigt. room und positions werden ignoriert.
  • Fester Dungeon: an positions, wenn ein Mitglied room betritt. Bei leerem room geschieht automatisch nichts: Nur die Spawn-Mobs-Action lässt den Entry erscheinen. dungeonInstance beschränkt den Entry auf die Durchläufe eines Dungeons.

Was. entityType (jeder Mob; ENDER_DRAGON und WITHER werden mit einer Warnung im Log abgelehnt), count (1 bis 50 pro Platzierung), spread (0 bis 32 Blöcke), Name, equipment mit einer Drop-Chance pro Slot, attributes (Leben, Schaden, Geschwindigkeit ...) und randomizeData.

Standardmäßig sicher. blockDamage, dropVanillaLoot und dropExperience sind alle aus. Mobs zerstören und verbrennen nichts (eine Explosion verletzt Spieler trotzdem), lassen nur die Ausrüstung fallen, die du ihnen gegeben hast (mit einer Drop-Chance von 0, sofern du sie nicht erhöhst), und geben keine Erfahrung. Der Loot eines Dungeons kommt aus seinen Truhen. Fallen gelassene Items bleiben nach dem Durchlauf in der Welt, lass dropVanillaLoot also in einem SHARED_WORLD_SLOTS-Dungeon aus.

Sie gehören zum Durchlauf. Sie werden entfernt, wenn der Durchlauf endet. Ein Mob eines Durchlaufs greift Spieler eines anderen Durchlaufs nie an oder verletzt sie, und Spieler eines anderen Durchlaufs können ihn nicht verletzen. Was ein Mob abspaltet oder wozu er wird (Slimes, Magmawürfel, ein Ertrunkener-Zombie, ein von einem Beschwörer gerufener Vex), gehört ebenfalls zum Durchlauf.

Friedlich. Das Spiel entfernt feindliche Mobs sofort in einer Welt, die auf Friedlich steht, daher spawnt die Erweiterung sie dort nicht: Nur Mobs der feindlichen Klasse werden abgelehnt (Zombies, aber auch Slimes, Ghasts, Phantome, Shulker ...). Neutrale und passive Mobs erscheinen weiterhin. Der Ort bleibt geschuldet, die Ablehnung wird einmal pro Ort protokolliert, und die Mobs erscheinen bei einem späteren Eintritt, sobald die Schwierigkeit erhöht wurde. Erhöhe die Schwierigkeit der Welt oder wähle einen nicht feindlichen Typ. Dieses Verhalten ist im Spiel noch nicht verifiziert.

Items und Portale. Ein Dungeon-Mob hebt nie Items auf (die fallen gelassene Ausrüstung eines Spielers bleibt auf dem Boden) und kann nicht durch ein Portal gehen: Er bleibt in der Welt des Durchlaufs und zählt weiterhin zum Limit.

Spieler anderer Durchläufe. Ein Mob eines Durchlaufs greift Spieler eines anderen Durchlaufs nie an oder verletzt sie, und Spieler eines anderen Durchlaufs sollen ihn nicht verletzen können. In einer geteilten Welt (SHARED_WORLD_SLOTS) beruht das auf Filtern statt auf getrennten Welten, verwende also einen isolierten Modus, wenn es darauf ankommt.

Das Limit​

maxAliveMobs an der Dungeon Instance ist die Höchstzahl gleichzeitig lebender Mobs in einem Durchlauf (Standard 150, höchstens 500; 0 bedeutet, dass kein Mob erscheint). Eine Platzierung, die darüber hinausgehen würde, lässt nur die Mobs erscheinen, die passen, und meldet das im Serverlog. Der Rest bleibt geschuldet (mit dem Durchlauf gehalten, über Reloads hinweg) und erscheint, soweit das Limit es dann zulässt, beim nächsten Betreten des Raums durch ein Mitglied, insgesamt nie mehr als das count des Entries.

Tod​

  • onDeath am Entry: Trigger laufen jedes Mal, wenn einer seiner Mobs stirbt, für die Spieler, die durch deathRecipients gewählt sind (Standard KILLER_OR_MEMBERS).
  • When a dungeon mob dies (on_dungeon_mob_death): ein Event, auf das du von überall hören kannst, nach Dungeon und nach Mob-Entry gefiltert.
  • Nur die Mobs, die der Entry erzeugt hat, zählen. Ein Slime, der sich teilt, ergibt eine Belohnung und ein Event, nicht eines pro Teil. Was aus einem Mob hervorgeht (Teile, Vexe, Babys, Verstärkung), gehört zum Durchlauf, führt aber nichts aus.

Wissen, dass ein Raum geleert ist​

Dungeon Mobs Alive (dungeon_mobs_alive) zählt die lebenden Mobs des Durchlaufs oder eines Entries. 0 bedeutet nicht, dass der Raum geleert ist: Das Limit kann einige zurückgehalten haben, und die Mobs werden nach einem Reload neu gezählt. Verwende das Todes-Event und dann eine Dungeon Clear Room-Action, um zu sagen, dass ein Raum geleert ist.

Wellen und Anpassung an die Spielerzahl​

Standardmäßig erscheint eine einzige Welle auf einmal, und die Mobanzahl hängt nicht von den Spielern ab. Drei Feldgruppen ändern das.

  • Spieler. perExtraPlayer fügt an jeder Platzierung für jeden Spieler ab dem zweiten Mobs hinzu: count + perExtraPlayer × (Spieler − 1). maxCount ist die Obergrenze (0 = keine eigene Obergrenze; 50 pro Platzierung und das maxAliveMobs des Dungeons gelten weiterhin). playerCountSource legt fest, wer zählt: PRESENT_IN_ROOM (Standard) die Mitglieder des Runs, die beim Auslösen im Raum sind, RUN_MEMBERS die online befindlichen Mitglieder des Runs.
  • Tempo. maxSimultaneous ist die höchste Zahl gleichzeitig lebender Mobs eines Standorts (0 = alle auf einmal). Die nächsten erscheinen, sobald die ersten sterben. Es gilt für den ganzen Standort, nicht für jede Platzierung.
  • Wellen. waves ist eine geordnete Liste. Jede Welle hat ihr eigenes count und perExtraPlayer, ein optionales entityType (sonst das des Eintrags; Ausrüstung, Attribute und Name stammen immer vom Eintrag) sowie start und delayTicks. AFTER_PREVIOUS_CLEARED startet die Welle delayTicks nach dem Besiegen der vorherigen Wellen; AFTER_DELAY startet sie delayTicks nach dem Beginn der vorherigen Welle, besiegt oder nicht. Mit Wellen wird das count des Eintrags nicht mehr verwendet. Eine Welle mit abgelehntem Typ wird mit einer Warnung übersprungen, die nächste läuft weiter. Die Aktion Dungeon Spawn Mobs startet bei einem Eintrag mit Wellen sofort die nächste Welle.

Trigger: onWaveStart und onWaveCleared an einer Welle, onWaveCleared am Eintrag (nach jeder Welle) und onCleared am Eintrag, wenn der ganze Standort geräumt ist. Sie laufen für jedes online befindliche Mitglied des Runs, einmal pro Standort und Ereignis. Die Todes-Trigger laufen zuerst. Ein Standort gilt als geräumt, wenn alle Wellen begonnen haben und kein Mob mehr lebt oder unter der Obergrenze auf Platz wartet.

Neuladen

Wellen überstehen kein Neuladen. Ein Standort, der noch Mobs schuldete, lässt sie beim nächsten Betreten des Raums durch ein Mitglied in einem einzigen Block erscheinen (das count des Eintrags), ohne Ereignis. Nicht begonnene Wellen gehen verloren.

Eine Truhe erscheint, wenn alle Mobs besiegt sind​

  1. Erstellen Sie eine Dungeon Loot Chest an der gewünschten Stelle und aktivieren Sie manualMode, damit sie beim Start des Runs nicht platziert wird.
  2. Erstellen Sie eine Aktion Loot Chest Trigger, deren chestEntry diese Truhe ist. Lassen Sie triggerMode auf ONCE (einmal pro Run, auch wenn die Trigger für jedes Mitglied laufen). Fügen Sie nach Wunsch einen Sound und einen particleEffect hinzu.
  3. Fügen Sie die Aktion beim Dungeon Mob Spawn in onCleared ein. Um anderswo zu reagieren, erstellen Sie ein Ereignis On Dungeon Mobs Cleared, filtern es mit mob und tragen die Aktion in seine triggers ein.

Die Truhe erscheint in der Welt des Runs, wenn der letzte Mob des Standorts besiegt ist. Für eine Truhe nach jeder Welle verwenden Sie stattdessen onWaveCleared der Welle.

Grenzen auf einen Blick​

GrenzeWert
Mobs pro Platzierung (count)1 bis 50
Streuradius (spread)0 bis 32 Blöcke
Lebende Mobs pro Durchlauf (maxAliveMobs)standardmäßig 150, höchstens 500
Abgelehnte Mob-TypenENDER_DRAGON, WITHER
ErscheinenEinmal pro Durchlauf und Ort, kein Respawn
NPC allowedDungeonIds leerJeder Durchlauf jedes Dungeons
MythicMobsNPC-Definitionticking aus, MythicMobsNPC 5.0 oder neuer
Lebende Mobs = 0Nicht „Raum geleert“: Das Limit oder ein Reload kann geschuldete Mobs verbergen
PlattformNur Paper, kein Folia
NPC-ActivityAbsolute Positionen, nicht verschoben
Friedliche WeltFeindliche Mobs werden abgelehnt