Aller au contenu principal

BTCMobs

En développement : mobs et PNJ personnalisés avec compétences, spawners, tables de butin et événements de quête.

BientôtEntités et modèles
NécessiteTypeWriter0.9.0-beta-177 (BTC build)QuestRoadNetworkGUIfacultatifModelEnginefacultatifBetterModelfacultatifMiniPlaceholdersfacultatifPacketEventsfacultatif

En développement. Les entrées et les champs peuvent encore changer avant la première version.

En développement

BTCMobs est une extension Soon (bientôt disponible). Elle n'est pas publiée, n'a pas de téléchargement ni de numéro de version pour le moment, et les entrées ou les champs peuvent changer avant la publication. Cette page documente la build de développement actuelle à titre de référence. Ce n'est pas l'ancien plugin « BTC Mob » : le moteur de mobs vit désormais dans l'extension elle-même, il n'y a aucun plugin séparé à installer.

Présentation​

BTCMobs

BTCMobs vous permet de construire des mobs personnalisés et des PNJ interactifs entièrement depuis le panneau web de TypeWriter. Un modèle de mob décrit une créature : son entité Minecraft de base, son niveau, sa santé, son armure, ses compétences, son butin, sa faction, son modèle 3D facultatif et sa reproduction facultative. Les spawners et les apparitions naturelles décident où et quand les modèles apparaissent dans le monde. Les compétences et les tables de butin définissent ce que fait le mob et ce qu'il laisse derrière lui.

Tout ce que font les mobs est exposé en retour à TypeWriter. Des événements se déclenchent lorsqu'un mob apparaît, subit des dégâts, lance une compétence ou meurt. Des facts et des variables rapportent la santé, le niveau, le nombre ou la distance. Des actions font apparaître ou disparaître des mobs, ou leur font lancer des compétences. Les quêtes, les dialogues et les cinématiques peuvent ainsi réagir à un combat, ou en déclencher un.

La même extension fournit aussi un côté PNJ : un modèle de mob peut être affiché comme un PNJ côté client, avec des interactions de dialogue, des objectifs de quête, des cinématiques de caméra (y compris des caméras attachées à un os de modèle), une visibilité des os par joueur et un contrôle des animations ModelEngine ou BetterModel. L'extension cible la version BTC de TypeWriter (Paper/Folia).

Fonctionnalités​

  • Modèles de mobs — une entrée btc_mob_template par créature : type d'entité, niveau, santé, dégâts d'attaque, armure, compétences, butin, faction, table de menace, modèle et animations.
  • Spawners — spawners basés sur des régions avec un plafond d'apparitions, une cadence d'apparition et un temps de chauffe pouvant être pilotés par des facts, de sorte que chaque joueur peut voir un rythme différent.
  • Remplacement des apparitions naturelles — remplacez les apparitions de créatures vanilla par des mobs BTC, règle par règle, selon le monde, le biome et la probabilité.
  • Compétences — une compétence est une liste ordonnée d'actions TypeWriter, ou une ligne de script. Les modèles attachent des compétences à des triggers tels que l'apparition, l'attaque, les dégâts, la mort ou un minuteur répété.
  • Tables de butin et objets — matériaux vanilla, objets personnalisés, XP et tables réutilisables, avec une probabilité et une quantité qui évoluent avec le niveau du mob.
  • Points d'accroche de quête — événements, facts, variables et objectif de compétence pour que les histoires puissent réagir aux mobs et aux combats.
  • PNJ — PNJ côté client basés sur des modèles, avec dialogue, interaction, regard et comportement de caméra.
  • Cinématiques — faites apparaître un mob, lancez une compétence, centrez sur un PNJ ou chevauchez un os de modèle pendant une cinématique TypeWriter.
  • Persistance — les cooldowns de compétences, les compteurs, les auras, les tables de menace et les boss bars survivent à un redémarrage lorsqu'un artifact de stockage est configuré.
  • Import MythicMobs — une commande d'opérateur convertit un pack MythicMobs en pages BTCMobs.

Installation​

BTCMobs est en développement et n'a pas de téléchargement public. Les notes ci-dessous décrivent comment la build de développement est câblée.

  1. Utilisez la version BTC de TypeWriter (BTC Core, Paper ou Folia) avec les extensions Quest et RoadNetwork, que la build déclare comme dépendances.
  2. Placez le JAR de BTCMobs dans plugins/Typewriter/extensions/ et redémarrez le serveur. Il embarque son propre moteur de mobs, aucun plugin BTCMobs séparé n'est donc nécessaire.
  3. Installez les intégrations facultatives que vous souhaitez. L'extension les détecte à l'exécution : ModelEngine ou BetterModel pour les modèles 3D, MiniPlaceholders pour exposer des placeholders, PacketEvents, Vault, DecentHolograms et WorldGuard.
  4. Pour ouvrir le menu du catalogue de mobs, l'extension BTC GUI doit être installée.
  5. Dans le panneau web, créez un artifact btcmobs_storage et référencez-le depuis une entrée btcmobs_config (voir ci-dessous) afin que l'état du gameplay soit sauvegardé.

Premiers pas​

Ce pas-à-pas crée un boss zombie, le fait apparaître dans une arène et réagit à sa mort.

  1. Dans le panneau web de TypeWriter, ouvrez une page manifest. Ajoutez un artifact BTCMobs Storage, puis une entrée BTCMobs Global Configuration et définissez storage sur cet artifact.
  2. Ouvrez une page statique et ajoutez un Native BTC mob template. Donnez-lui un id que vous réutiliserez (par exemple crypt_warden). Définissez entityType sur ZOMBIE, display sur le nom que voient les joueurs, puis level, maxHealth, attackDamage et armor.
  3. Ajoutez une Native BTC mob drop table et listez ses drops, une déclaration par ligne, par exemple DIAMOND 1 0.25 (matériau, quantité, probabilité) ou exp 20to40. Référencez la table par son identifiant dans la liste drops du modèle.
  4. Ajoutez une Native BTC mob skill et remplissez actions avec les actions TypeWriter qu'elle exécute, dans l'ordre. Dans le modèle, ajoutez l'identifiant de la compétence à skills, par exemple warden_slam~onTimer:100 pour la lancer tous les 100 ticks.
  5. Ajoutez un BTCMobs Spawner. Définissez mobType sur l'identifiant du modèle (pas son nom d'affichage), world, les deux coins corner1 et corner2 d'une région, defaultMaxMobs et defaultCooldown (en ticks).
  6. Ajoutez un événement On BTCMob die avec mobName défini sur l'identifiant du modèle, et liez ses triggers à un dialogue, une récompense ou un modificateur de fact.
  7. Publiez les pages, approchez-vous à moins de defaultActivationRange (24 blocs par défaut) du centre de la région, et le mob apparaît. Utilisez /tw btcmobs spawners force <id> pour tester sans attendre.
Tester rapidement un mob

/tw btcmobs spawn <template> <level> <amount> fait apparaître un modèle à côté de vous avec le niveau que vous choisissez. La commande suggère les identifiants des modèles chargés.

Fonctionnement​

Un modèle n'est qu'une description. Un mob vivant est créé lorsqu'un spawner, une apparition naturelle, une action Spawn a mob ou la commande spawn en demande un. À partir de là, le mob exécute les compétences attachées à ses triggers et tire ses déclarations de butin lorsqu'il meurt. Chaque étape déclenche aussi un événement TypeWriter, ce qui permet aux quêtes et aux dialogues de suivre le combat.

Compétences et triggers​

Les entrées de la liste skills d'un modèle s'écrivent skillId ou skillId~trigger. L'identifiant est l'identifiant (ou le nom) d'une entrée btc_mob_skill. Le trigger indique quand le mob l'exécute : onSpawn, onAttack, onDamaged, onDeath, onKill, onDespawn, onInteract, onTeleport, onExplode, onRanged, onProjectile, ou onTimer:<ticks> pour une compétence répétée (onTimer:5s est aussi accepté, en secondes). Une compétence sans trigger s'exécute à chaque trigger que le mob déclenche ; ajoutez-en donc toujours un. Les conditions filtrent chaque ligne de compétence et les targeters choisissent les cibles qu'elles partagent.

Déclarations de butin​

Chaque ligne d'une table de butin, ou d'une liste drops de modèle, est de l'un de ces types :

  • un matériau vanilla avec une quantité et une probabilité facultatives, par exemple BONE 2 0.5 ;
  • l'identifiant ou le nom d'une entrée btc_mob_item, avec une quantité et une probabilité facultatives ;
  • exp 10 ou exp 10to20 pour l'expérience ;
  • btc:<item_id> [amount or range] [chance] [+n/m] pour un objet du catalogue BTC. Sans le jeton +n/m, la quantité croît avec le niveau du mob, de x1 au niveau 1 à x6 au niveau 100 ;
  • l'identifiant d'une autre table de butin, qui est développée sur place.

Les déclarations inconnues sont consignées comme avertissements et ignorées.

PNJ​

Un PNJ est un modèle présenté aux joueurs comme une entité côté client. Une BtcMob NPC definition désigne le modèle dans mobType et définit le nom d'affichage, son décalage et s'il est mis à jour à chaque tick. Une BtcMob NPC instance le place avec spawnLocation, une activity facultative, un group et des data supplémentaires. Les entrées de données de PNJ modifient l'apparence du modèle : la visibilité des os par joueur, les attachements qui remplacent un os par un os d'un autre modèle, les postures ModelEngine pour le jour et la nuit, et la vitesse de marche.

Commandes​

Toutes les commandes se trouvent sous /tw btcmobs. Les alias courts /tw btc et /tw btcmobsadmin exécutent la même arborescence. Chaque nœud a une permission de la forme btcmobs.command.<node> (voir ci-dessous).

CommandeDescription
/tw btcmobs mobs [list]Liste les modèles de mobs chargés.
/tw btcmobs mobs listactiveListe les mobs actuellement vivants.
/tw btcmobs spawn <template> [level] [amount]Fait apparaître un modèle à côté de vous (quantité de 1 à 64). summon et mobs spawn sont équivalents.
/tw btcmobs mobs kill <template> [radius]Tue les mobs d'un modèle autour de vous (rayon par défaut 48).
/tw btcmobs mobs killall [radius]Tue tous les mobs BTC autour de vous (rayon par défaut 48).
/tw btcmobs mobs infoAffiche des informations sur le mob que vous regardez.
/tw btcmobs skills [list]Liste les compétences chargées.
/tw btcmobs cast <skill>Lance une compétence depuis vous-même (skills cast, test cast et profile cast sont équivalents).
/tw btcmobs spawners [list]Liste les entrées de spawners.
/tw btcmobs spawners info <id>Affiche un spawner.
/tw btcmobs spawners force <id> [amount]Force une apparition, sans tenir compte des conditions ni des plafonds.
/tw btcmobs spawners reloadRecharge les entrées natives.
/tw btcmobs reloadRecharge les entrées natives.
/tw btcmobs menuOuvre le menu du catalogue de mobs (les 45 premiers modèles, par ordre alphabétique).
/tw btcmobs items list et get <item> [amount]Liste ou prend un objet du catalogue.
/tw btcmobs items give <player> <item> [amount]Donne un objet du catalogue à un joueur.
/tw btcmobs signal <uuid> <signal>Envoie un signal à un mob actif.
/tw btcmobs test mechanic, condition, targeter <line>Exécute une ligne de script comme test.
/tw btcmobs test on <uuid or nearest> <line>Exécute une ligne de script sur un mob actif précis.
/tw btcmobs import mythic [path]Convertit un pack MythicMobs en pages BTCMobs (dossier par défaut import/BtcMob dans le dossier de données de TypeWriter). migrate mythic est équivalent.
/tw btcmobs audit, coverage, registrydump, variables, placeholdersDiagnostics sur les modèles, compétences, spawners et registres chargés.
/tw btcmobs debug, version, modeldiagDiagnostics d'exécution, version et état BetterModel des mobs proches.

Permissions​

PermissionAutorise
btcmobs.command.mainLa racine /tw btcmobs et son aide. Accordée à tout le monde par défaut.
btcmobs.command.versionversion et v. Accordée à tout le monde par défaut.
btcmobs.command.mobs, .mobs.spawn, .mobs.kill, .mobs.killall, .mobs.info, .mobs.listactive, .mobs.statsLes commandes mobs et spawn.
btcmobs.command.skills, .skills.castLister et lancer des compétences.
btcmobs.command.spawners, .spawners.list, .spawners.info, .spawners.force, .spawners.reloadLes commandes spawners.
btcmobs.command.items, .items.list, .items.get, .items.giveLes commandes items.
btcmobs.command.menu, .menu.openLe menu du catalogue.
btcmobs.command.import, .migrate, .migrate.mythic, btcmobs.importL'import MythicMobs.
btcmobs.command.test, .test.mechanic, .test.condition, .test.targeter, .test.castLes commandes test.
btcmobs.command.audit, .variables, .debug, .modeldiag, .signal, .reload, .profileLes commandes de diagnostic correspondantes.
btcmobs.command.admin, btcmobs.adminRacine d'administration (/tw btcmobsadmin).
btcmobs.command.*, btcmobs.*Toutes les précédentes.

Toutes les permissions, sauf btcmobs.command.main et btcmobs.command.version, sont réservées aux opérateurs par défaut. La commande modeldiag vérifie btcmobs.command.modeldiag, que l'extension enregistre (opérateurs par défaut).

Placeholders​

Les placeholders ne sont publiés que vers MiniPlaceholders ; PlaceholderAPI n'est pas utilisé pour les publier. La syntaxe est <name:argument:argument>.

PlaceholderRenvoie
<btcmobs_caster> et <btcmobs_caster:field>L'identifiant du modèle, ou un champ du mob lié au joueur : name, type, level, hp, maxhp, percent, uuid.
<btcmobs_looking> et <btcmobs_looking:field>Les mêmes champs pour le mob BTC que le joueur regarde (jusqu'à la portée de regard), vide s'il n'y en a pas.
<btcmobs_var:name>La valeur d'une variable globale BTCMobs.
<btcmobsdamage_top:BOSS:POSITION:field>Le joueur à un rang du classement de dégâts d'un boss. Champs : name, damage, raw_damage, percent, uuid.
<btcmobsdamage_self:BOSS:field>Le propre classement du joueur qui regarde. Champs : damage, raw_damage, percent, position.
<btcmobsdamage_participants:BOSS>, _total, _max_health, _last_updateTotaux d'un classement de dégâts de boss.

Entrées​

57 entrées, générées depuis la source de l'extension.

Actions7
Événements9
Objectifs2
Faits9
Cinématiques5
Entités2
Données d'entité4
Zones d'interaction3
Variables8
Artefacts1
Manifestes1
Définitions6

Dépannage​

Le spawner ne fait rien et le journal indique « references unknown mob template ». mobType doit être l'identifiant d'un btc_mob_template, et non le nom affiché dans l'éditeur. Copiez l'identifiant depuis l'entrée du modèle. La même règle s'applique à btc_natural_spawn, aux actions d'apparition et de disparition, et aux définitions de PNJ.

Le spawner n'atteint jamais son plafond, ou s'arrête à 1. Une région dont les deux coins sont le même point plafonne defaultMaxMobs à 1. Le plafond compte les mobs appartenant à ce spawner, où qu'ils soient. Le spawner ne fonctionne que lorsqu'un joueur se trouve à moins de defaultActivationRange du centre d'une région.

Un spawner ne fait rien pour certains joueurs. Pour chaque joueur proche de la région, le spawner vérifie le monde, puis conditionLines, puis criteria, et tout doit passer avant d'examiner la région, le cooldown et l'apparition. Un joueur qui échoue à criteria est ignoré (une ligne de diagnostic « criteria did not match » est journalisée une fois par joueur). criteria ne retire jamais un mob déjà apparu. Les champs ...Fact (maxMobsFact, mobsPerSpawnFact et les autres) continuent de remplacer les valeurs numériques par défaut.

Le remplacement des apparitions naturelles ne se déclenche jamais. L'entrée ne remplace que les apparitions que le serveur produit déjà (naturelles, génération de chunk ou par défaut). Si les spawn-limits du monde dans paper-world-defaults.yml valent 0, les créatures vanilla n'apparaissent jamais et rien n'est remplacé. La première règle correspondante l'emporte, et maxNearby à 0 signifie aucun plafond, et non zéro mob.

Un mob joue les animations d'attaque ou de mort en boucle, ou ne marche pas. modelAnimations ne joue en boucle que les animations de type repos lorsqu'un modèle est attaché ; les noms d'attaque et de mort qui y figurent sont ignorés. Les animations ponctuelles se règlent dans modelLifecycle du template (apparition, attaque, coup reçu, mort) et sont jouées au moment correspondant ; une animation de mort est jouée jusqu'au bout avant que le modèle ne disparaisse. Un nom absent du modèle est journalisé une fois par template et ce moment reste muet. Les animations de marche ne sont pas encore pilotées par les mobs, uniquement côté PNJ.

Une compétence ou un butin manque silencieusement. Consultez le journal du serveur : les déclarations de butin inconnues, les objets inconnus et les probabilités invalides sont consignés comme avertissements et ignorés. Une entrée de skills dont l'identifiant ne correspond à aucune entrée btc_mob_skill est consignée lorsque le mob la lance.

On BTCMob despawn ne se déclenche pas. L'événement se déclenche quand un mob suivi quitte le monde sans mourir (despawn naturel, retrait par un plugin, chute hors du monde) et qu'un joueur se trouve à moins de radius blocs. Il ne se déclenche pas quand le mob meurt (utilisez On BTCMob die), quand son chunk est seulement déchargé (le mob est repris au rechargement), ni quand vous le retirez avec l'action Despawn ou /tw btcmobs mobs kill. Un mobName vide correspond à tous les mobs ; il en va de même pour les événements spawn, die, damage et interact.

Extensions associées​

  • BetterModel — BetterModel est l'un des deux moteurs de modèles (modelProvider) que BTCMobs peut piloter pour les modèles de mobs et de PNJ.