Aller au contenu principal

Entités dans les donjons

Un donjon contient deux sortes d'êtres vivants, traités différemment.

PNJMob de combat
EntréeDungeon NPC InstanceDungeon Mob Spawn
Ce que c'estN'importe quelle définition d'entité Typewriter (les entités propres à Typewriter, MythicMobsNPC, BetterModel, etc.)Un vrai mob vanilla
Qui le voitLes membres de la partie uniquementTout le monde dans le monde, mais il appartient à la partie
Quand il apparaîtTant que la partie existeUne fois par partie, la première fois qu'un membre entre dans sa salle
PlacementspawnLocation (fixe) ou un marqueur NPC (généré)room + positions (fixe) ou marqueurs MOB (généré)

PNJ d'une partie​

Un Dungeon NPC Instance affiche un PNJ par partie, dans le monde de cette partie, aux seuls membres de cette partie. Un joueur qui n'est pas membre (une autre partie dans le même monde partagé, ou un joueur qui est parti) ne voit rien. Un membre qui quitte la partie perd le PNJ immédiatement.

  1. Créez la définition d'entité comme d'habitude (une entité Typewriter, un MythicMobsNPC, un BetterModel...). Choisissez-la toujours par référence, jamais en saisissant un id.
  2. Ajoutez un Dungeon NPC Instance et définissez definition.
  3. Dans un donjon fixe, définissez spawnLocation : la position dans le monde modèle. L'emplacement de la partie la décale. Dans un donjon généré, placez un marqueur NPC dans un modèle de salle et pointez son champ npc vers l'instance. Le spawnLocation est ignoré.

allowedDungeonIds liste les instances de donjon dont les parties montrent le PNJ. Vide signifie toutes les parties de tous les donjons. Dans un donjon fixe, le même spawnLocation s'applique à chaque donjon concerné : restreignez donc la liste quand les donjons diffèrent. Dans un donjon généré, le PNJ n'est montré que dans une partie dont l'agencement a un marqueur NPC qui le désigne. Si plusieurs marqueurs (ou plusieurs salles) nomment la même instance, seul le premier compte, dans l'ordre de l'agencement.

group est vide par défaut : l'audience est constituée des membres de la partie, un PNJ par partie. Choisissez une entrée de groupe uniquement pour partager un PNJ entre les membres de ce groupe au sein de la même partie.

Limites des PNJ​

  • Les activités utilisent des positions absolues. Une activité d'entité (un chemin à parcourir, une patrouille) n'est pas décalée dans l'emplacement ou le monde de la partie. Laissez activity vide (le PNJ reste immobile) à moins de savoir que l'activité n'utilise que des déplacements relatifs.
  • MythicMobsNPC : utilisez ticking désactivé, et une version récente. Une définition MythicMobsNPC avec ticking activé crée un vrai mob par spectateur. Dans les donjons, désactivez ticking sur la définition. Le serveur détient alors un mob porteur par membre, caché de tous ceux qui ne sont pas ce membre, et un clic donne exactement une interaction pour le bon joueur. Cela nécessite MythicMobsNPC 5.0 ou ultérieur (correctif de visibilité par partie) ; les versions plus anciennes montrent le porteur à tout le monde ou en double.
  • Une cinématique jouée par un MythicMobsNPC dans un donjon n'a pas été testée.
  • Le PNJ est caché au-delà de la portée d'affichage (showRange, ou la valeur par défaut des entités) et revient quand le membre s'approche. C'est normal.
  • Ancres de coffre sur PNJ : un Dungeon Loot Chest en placement NPC s'ouvre quand l'entité npcAnchor reçoit un clic droit.

Mobs de combat​

Un Dungeon Mob Spawn fait apparaître de vrais mobs vanilla.

Quand. Une fois par partie, la première fois qu'un membre entre dans la salle (donjon fixe) ou dans la salle du marqueur (donjon généré). Ils ne réapparaissent jamais. Les vagues sont créées par l'action Dungeon Spawn Mobs. Dans un donjon fixe, l'entrée dans la salle les fait apparaître même si enterOnce de la salle est désactivé, et une seule fois par partie.

Où.

  • Donjon généré : à chaque marqueur MOB d'un modèle de salle qui pointe vers l'entrée. room et positions sont ignorés.
  • Donjon fixe : à positions, quand un membre entre dans room. Avec un room vide, rien ne se produit automatiquement : seule l'action Spawn Mobs fait apparaître l'entrée. dungeonInstance restreint l'entrée aux parties d'un seul donjon.

Quoi. entityType (n'importe quel mob ; ENDER_DRAGON et WITHER sont refusés avec un avertissement dans le journal), count (1 à 50 par placement), spread (0 à 32 blocs), nom, equipment avec une probabilité de drop par emplacement, attributes (vie, dégâts, vitesse...), et randomizeData.

Sûr par défaut. blockDamage, dropVanillaLoot et dropExperience sont tous désactivés. Les mobs ne cassent ni ne brûlent rien (une explosion blesse toujours les joueurs), ne lâchent que l'équipement que vous leur avez donné (avec une probabilité de drop de 0 sauf si vous l'augmentez), et ne donnent aucune expérience. Le butin d'un donjon vient de ses coffres. Les objets lâchés restent dans le monde après la partie : gardez donc dropVanillaLoot désactivé dans un donjon SHARED_WORLD_SLOTS.

Ils appartiennent à la partie. Ils sont retirés quand la partie se termine. Un mob d'une partie ne cible ni ne blesse jamais les joueurs d'une autre partie, et les joueurs d'une autre partie ne peuvent pas le blesser. Ce qu'un mob se divise en ou devient (slimes, cubes de magma, un zombie noyé, un vex appelé par un évocateur) appartient aussi à la partie.

Pacifique. Le jeu retire immédiatement les mobs hostiles dans un monde réglé sur Pacifique : l'extension n'y fait donc pas apparaître de mobs hostiles. Seuls les mobs de classe hostile sont refusés (les zombies, mais aussi les slimes, ghasts, fantômes, shulkers...). Les mobs neutres et passifs apparaissent toujours. Le site reste dû, le refus est journalisé une fois par site, et les mobs apparaissent lors d'une entrée ultérieure une fois la difficulté relevée. Relevez la difficulté du monde, ou choisissez un type non hostile. Ce comportement n'est pas encore vérifié en jeu.

Objets et portails. Un mob de donjon ne ramasse jamais d'objets (l'équipement lâché par un joueur reste au sol) et ne peut pas partir par un portail : il reste dans le monde de la partie et compte toujours dans le plafond.

Joueurs d'autres parties. Un mob d'une partie ne cible ni ne blesse jamais les joueurs d'une autre partie, et les joueurs d'une autre partie ne sont pas censés pouvoir le blesser. Dans un monde partagé (SHARED_WORLD_SLOTS), cela repose sur des filtres plutôt que sur des mondes séparés : utilisez donc un mode isolé quand cela compte.

Le plafond​

maxAliveMobs sur la Dungeon Instance est le nombre maximal de mobs en vie en même temps dans une partie (150 par défaut, 500 au plus ; 0 signifie qu'aucun mob n'apparaît). Un placement qui le dépasserait ne fait apparaître que les mobs qui tiennent et le signale dans le journal du serveur. Le reste demeure dû (conservé avec la partie, à travers les rechargements) et apparaît, dans la mesure où le plafond le permet alors, la prochaine fois qu'un membre entre dans la salle, sans jamais dépasser au total le count de l'entrée.

Mort​

  • onDeath sur l'entrée : les déclencheurs s'exécutent chaque fois qu'un de ses mobs meurt, pour les joueurs choisis par deathRecipients (par défaut KILLER_OR_MEMBERS).
  • Quand un mob de donjon meurt (on_dungeon_mob_death) : un événement que vous pouvez écouter de n'importe où, filtré par donjon et par entrée de mob.
  • Seuls comptent les mobs créés par l'entrée. Un slime qui se divise donne une récompense et un événement, pas un par morceau. Ce qui sort d'un mob (morceaux, vex, bébés, renforts) suit la partie mais n'exécute rien.

Savoir qu'une salle est vidée​

Dungeon Mobs Alive (dungeon_mobs_alive) compte les mobs vivants de la partie, ou d'une entrée. 0 ne signifie pas que la salle est vidée : le plafond a pu en retenir certains, et les mobs sont recomptés après un rechargement. Utilisez l'événement de mort, puis une action Dungeon Clear Room, pour dire qu'une salle est vidée.

Vagues et adaptation au nombre de joueurs​

Par défaut, une seule vague apparaît d'un coup et le nombre de mobs ne dépend pas des joueurs. Trois groupes de champs changent cela.

  • Joueurs. perExtraPlayer ajoute des mobs à chaque emplacement pour chaque joueur au-delà du premier : count + perExtraPlayer × (joueurs − 1). maxCount est le plafond (0 = pas de plafond propre ; 50 par emplacement et le maxAliveMobs du donjon s'appliquent toujours). playerCountSource dit qui compte : PRESENT_IN_ROOM (défaut) les membres du run présents dans la salle au déclenchement, RUN_MEMBERS les membres du run en ligne.
  • Rythme. maxSimultaneous est le nombre maximal de mobs d'un site vivants en même temps (0 = tous d'un coup). Les suivants apparaissent à mesure que les premiers meurent. Il porte sur tout le site, pas sur chaque emplacement.
  • Vagues. waves est une liste ordonnée. Chaque vague a son count et son perExtraPlayer, un entityType facultatif (sinon celui de l'entrée ; équipement, attributs et nom viennent toujours de l'entrée), un start et un delayTicks. AFTER_PREVIOUS_CLEARED lance la vague delayTicks après que les vagues précédentes sont vaincues ; AFTER_DELAY la lance delayTicks après le début de la vague précédente, vaincue ou non. Avec des vagues, le count de l'entrée n'est plus utilisé. Une vague dont le type est refusé est ignorée avec un avertissement et la suivante continue. L'action Dungeon Spawn Mobs lance aussitôt la vague suivante d'une entrée à vagues.

Déclencheurs : onWaveStart et onWaveCleared sur une vague, onWaveCleared sur l'entrée (après chaque vague) et onCleared sur l'entrée quand tout le site est nettoyé. Ils s'exécutent pour chaque membre en ligne du run, une fois par site et par événement. Les déclencheurs de mort passent d'abord. Un site est nettoyé quand toutes les vagues ont commencé et qu'aucun mob n'est vivant ni en attente de place sous le plafond.

Rechargement

Les vagues ne survivent pas à un rechargement. Un site qui devait encore des mobs les fait apparaître en un seul lot (le count de l'entrée) la prochaine fois qu'un membre entre dans la salle, sans événement. Les vagues non commencées sont perdues.

Un coffre apparaît quand tous les mobs sont vaincus​

  1. Créez un Dungeon Loot Chest à l'endroit voulu et activez manualMode, pour qu'il ne soit pas posé au début du run.
  2. Créez une action Loot Chest Trigger dont le chestEntry est ce coffre. Gardez triggerMode sur ONCE (une fois par run, même si les déclencheurs s'exécutent pour chaque membre). Ajoutez un son et un particleEffect si vous le souhaitez.
  3. Sur le Dungeon Mob Spawn, ajoutez l'action dans onCleared. Pour réagir ailleurs, créez un événement On Dungeon Mobs Cleared, filtrez-le avec mob et mettez l'action dans ses triggers.

Le coffre apparaît dans le monde du run quand le dernier mob du site est vaincu. Pour un coffre après chaque vague, utilisez plutôt onWaveCleared de la vague.

Limites en un coup d'œil​

LimiteValeur
Mobs par placement (count)1 à 50
Rayon de dispersion (spread)0 à 32 blocs
Mobs en vie par partie (maxAliveMobs)150 par défaut, 500 au plus
Types de mobs refusésENDER_DRAGON, WITHER
ApparitionUne fois par partie et par site, pas de réapparition
allowedDungeonIds d'un PNJ videToutes les parties de tous les donjons
Définition MythicMobsNPCticking désactivé, MythicMobsNPC 5.0 ou ultérieur
Mobs vivants = 0Ne signifie pas « salle vidée » : le plafond ou un rechargement peut masquer des mobs dus
PlateformePaper uniquement, pas de Folia
Activité d'un PNJPositions absolues, non décalées
Monde pacifiqueLes mobs hostiles sont refusés

Voir aussi​