Aller au contenu principal

Vehicle

Véhicules conduisibles avec carburant, santé, combat à l'endurance, capacités, niveaux, skins et garage.

Privéesv0.1Entités et modèles
NécessiteTypeWriter0.9.0-beta-177 (BTC build)BasicBTCMobsPacketEventsGUIfacultatifBetterModelfacultatif

Conçue pour le réseau BornToCraft. Cette extension est documentée à titre de référence et n'est pas distribuée.

Présentation​

Vehicle permet aux joueurs de posséder, d'invoquer et de conduire des véhicules personnalisés : voitures, bateaux, montures volantes. Vous définissez un type de véhicule une seule fois (son apparence, sa vitesse, sa santé, son carburant, son combat et sa progression) et chaque joueur en possède des instances, avec leur propre niveau, carburant, santé, bouclier et skin, sauvegardés dans un artifact. Un joueur invoque un véhicule depuis le menu de garage ou une action, le monte avec les touches de déplacement, puis le range.

Le véhicule se compose de deux parties. Une entité porteuse invisible gère la physique et le passager. Un visuel y est attaché : un objet affiché, un mob vanilla, un modèle BetterModel ou un mob BTCMobs. Vous pouvez donc utiliser un simple objet pour un véhicule économique ou un modèle animé pour un véhicule phare.

La conduite, le carburant, les dégâts, les capacités et la montée en niveau sont tous exposés à TypeWriter : ils déclenchent des événements, exposent des facts, et les capacités exécutent n'importe quelle liste d'actions TypeWriter. Elle fonctionne sur la version BTC de TypeWriter et nécessite les fonctionnalités de BTC Core.

Fonctionnalités​

  • Quatre types de déplacement — GROUND, WATER, AMPHIBIOUS et AIR, chacun avec sa propre porteuse.
  • Quatre visuels — display (objet), vanilla (mob), bettermodel et btcmobs, avec le modèle résolu par joueur.
  • Carburant — un réservoir, un taux de consommation par seconde, des objets de carburant acceptés, et une action de ravitaillement.
  • Santé et bouclier — les coups sont absorbés d'abord par le bouclier ; à 0 de santé, le véhicule est détruit et doit être réparé.
  • Niveaux et statistiques — une courbe d'XP configurable et un bonus de statistiques par niveau.
  • Combat — attaque au clic gauche avec portée, cooldown et coût en endurance, une charge sur la touche de saut maintenue, et des dégâts de collision facultatifs.
  • Capacités — capacités activables avec cooldown et coût en endurance qui exécutent n'importe quelles actions TypeWriter.
  • Menu de garage — un menu paginé des véhicules du joueur, construit sur un layout GUI.
  • Limite de possession — une limite de base augmentée par permission.
  • Événements et facts — collision, carburant vide, montée de niveau, attaque, coup de charge, destruction et endurance épuisée.

Installation​

  1. Installez les extensions BTCMobs et Basic (toutes deux sont des dépendances déclarées), ainsi que l'extension GUI pour le menu de garage. Voir BTCMobs.
  2. Installez PacketEvents. Sans lui, la direction est désactivée et le journal indique PacketEvents not found! WASD steering will be disabled.
  3. Installez éventuellement BetterModel pour utiliser le visuel bettermodel.
  4. Placez le JAR de Vehicle dans plugins/Typewriter/extensions/ et redémarrez le serveur.

Premiers pas​

  1. Dans le panneau web de TypeWriter, ouvrez une page statique et ajoutez un artifact Vehicle Storage.
  2. Ajoutez une entrée Vehicle Config et définissez storage sur l'artifact. Sans lui, les données des véhicules ne sont ni chargées ni sauvegardées, et le journal indique Aucun stockage designe.
  3. Ajoutez une Vehicle Definition : choisissez movement (GROUND), un visual (display avec un matériau tel que MINECART), puis réglez stats, fuel (ajoutez un objet à allowedFuels) et combat.
  4. Ajoutez une action Spawn Vehicle référençant la définition et déclenchez-la depuis une commande, un PNJ ou un événement. Le premier appel donne au joueur un nouveau véhicule de ce type, rempli de carburant et de santé, et l'y fait monter.
  5. Pour un garage, ajoutez un Vehicle Garage Menu construit avec layoutPool, puis déclenchez Open Vehicle Garage.
  6. Ajoutez Refill Vehicle Fuel et Repair Vehicle à une station-service ou à un PNJ de garage. Publiez et testez.
Aucune commande

Vehicle n'enregistre aucune commande propre. Invoquez, rangez et réparez via des actions, le menu de garage ou des entrées de commande TypeWriter.

Fonctionnement​

La porteuse dépend de movement : GROUND utilise un armor stand déplacé par le serveur, WATER et AMPHIBIOUS utilisent un bateau, que le client simule lui-même, et AIR utilise un happy ghast. Pour les bateaux, le serveur ne pilote pas : il valide chaque tick et ramène le véhicule en arrière lorsqu'il dépasse maxSpeed, lorsque le réservoir est vide, ou (pour GROUND) lorsqu'il entre dans un liquide.

La direction utilise les paquets d'entrée du joueur : avant, arrière, gauche, droite, saut et furtivité. Descendre range le véhicule (il disparaît du monde et les données sont sauvegardées).

Une instance de véhicule a un niveau, de l'XP, de la santé, un bouclier, du carburant et un skin. Les statistiques sont multipliées par 1 + statBonusPerLevel * (level - 1) (sauf la gravité). L'XP nécessaire pour quitter un niveau est baseXp * level ^ xpGrowth. À maxLevel, l'XP s'arrête.

Vehicle Garage Menu se construit comme n'importe quel menu GUI : un layoutPool, un mainLayoutId, des views facultatives et un baseMenuId pour hériter d'un châssis partagé. Placez des objets avec ces types de boutons (le buttonType d'un objet) :

Type de boutonComportement
vehicle_button:VEHICLE_SLOT#<n>Affiche le n-ième véhicule du joueur (trié par identifiant d'instance) ; un clic l'invoque. Vide si le joueur en possède moins.
vehicle_button:VEHICLE_SPAWNInvoque le véhicule actif.
vehicle_button:VEHICLE_DESPAWNRange le véhicule monté et ferme le menu.
vehicle_button:VEHICLE_INFOAffiche dans le chat le niveau, le carburant et la santé du véhicule actif.
vehicle_button:NAV_BACKRetourne au menu précédent.
vehicle_button:NAV_CLOSEFerme le menu.

vehicleDisplay définit l'apparence d'un emplacement de véhicule : un item, un nameFormat et un lore, avec les jetons %name%, %level%, %max_level%, %fuel%, %max_fuel%, %health%, %max_health% et %shield%. Un objet que vous placez pour un bouton conserve son propre nom et son propre lore si la page les définit.

Permissions​

PermissionAutorise
typewriter.vehicle.limit.<n>Augmente la limite de possession de <n> lorsqu'une entrée Vehicle Ownership Limit la lit (la valeur la plus élevée compte).

Aucune autre permission n'est définie par l'extension.

Placeholders​

Deux facts peuvent être lus comme des placeholders via TypeWriter : Vehicle Ownership Limit et Vehicles Owned Count, chacun renvoyant un nombre. L'extension n'enregistre aucun placeholder propre.

Entrées​

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

Actions9
Événements7
Faits4
Artefacts1
Manifestes4

Dépannage​

Rien n'est sauvegardé après un redémarrage. vehicle_config n'a pas de storage, ou il pointe vers un artifact manquant. Le journal signale Aucun stockage designe dans 'vehicle_config'. Définissez l'artifact dans storage.

Le véhicule ne bouge pas avec ZQSD/WASD. PacketEvents est absent, la direction est donc désactivée. Installez-le et redémarrez.

Le véhicule revient en arrière ou ne bouge pas. Le serveur annule le déplacement lorsque le véhicule va plus vite que stats.maxSpeed (blocs par tick), lorsque fuel vaut 0 (et déclenche On Vehicle Fuel Empty), ou pour GROUND lorsqu'il entre dans l'eau ou la lave. Augmentez maxSpeed, faites le plein, ou passez à AMPHIBIOUS.

Ce vehicule n'est pas disponible pour le moment. Le visuel n'a pas pu être créé : un identifiant de modèle qui n'existe pas dans BetterModel, un mobId BTCMobs inconnu, ou un matériau display qui n'est pas un objet. Cherchez non spawne ou visuel dans le journal.

L'invocation est refusée avec le message de limite. Le joueur possède déjà baseOwnershipLimit véhicules (1 par défaut). La limite n'inclut les permissions que si vous avez créé une entrée Vehicle Ownership Limit ; sinon, seul baseOwnershipLimit s'applique.

This vehicle is destroyed — repair it before summoning it again. La santé a atteint 0. Exécutez Repair Vehicle : il consomme repair.amount de repair.item et restaure healthPerRepair de santé sur le véhicule actif.

Une capacité ne fait rien. Elle doit être listée dans abilities de la définition du véhicule, et le joueur doit conduire, avoir assez d'endurance et ne pas être en cooldown ; chaque échec envoie un message issu de vehicle_config.

Extensions associées​

  • BTCMobs — fournit le visuel btcmobs.
  • GUI — affiche le menu de garage.