Aller au contenu principal

Profiles

Plusieurs profils de personnage par joueur, chacun avec son propre inventaire, son coffre de l'Ender, son XP et ses faits TypeWriter.

Privéesv0.2.0RPG et progression
NécessiteTypeWriter0.9.0-beta-177 (BTC build)Basic (TypeWriter extension)GUI (TypeWriter extension)MySQL (TypeWriter extension)facultatifParty (TypeWriter extension)facultatif

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​

Profiles donne à chaque joueur plusieurs personnages indépendants sur un même compte. Changer de profil échange l'inventaire, l'ender chest, l'expérience, la santé et la faim du joueur, ainsi que ses facts TypeWriter : la progression des quêtes, les déblocages et les compteurs sont donc distincts pour chaque personnage. D'autres extensions BTC, comme BTC Sky, rattachent leurs propres données au profil actif.

Les profils sont créés et choisis depuis un menu que vous concevez dans le panneau web. Un serveur peut obliger les joueurs à choisir un profil avant de pouvoir se déplacer, construire, combattre ou discuter. Les données sont stockées dans une base de données lorsque le pont MySQL est activé, ce qui rend les profils disponibles sur tous les serveurs d'un réseau, et dans des fichiers sinon.

Le système est lié au mode de jeu du serveur (mysql.game-mode.current) : un joueur a une liste de profils distincte dans chaque mode de jeu.

Fonctionnalités​

  • Personnages distincts — inventaire, armure, seconde main, ender chest, niveau, expérience, santé, faim et saturation par profil.
  • État d'histoire distinct — les facts TypeWriter sont sauvegardés lors du changement et restaurés pour le profil.
  • Menu des profils — une GUI avec un emplacement par profil, des modèles pour les emplacements actifs, inactifs, libres et verrouillés.
  • Sélection obligatoire — tant qu'aucun profil n'est actif, le joueur ne peut ni se déplacer, ni interagir, ni casser, ni poser, ni jeter, ni combattre, ni discuter.
  • Solo et coop — un profil est créé en solo ou en coop (île partagée BTC Sky), et un mode de jeu sans coop saute la question.
  • Limites — un maximum par défaut et des limites plus élevées par permission.
  • Protection du changement — un cooldown entre deux changements et un événement que d'autres extensions peuvent annuler.
  • Entrées — actions pour ouvrir le menu, créer, changer, renommer, supprimer et sauvegarder, facts sur l'état du profil, et événements.
  • Inter-serveurs — les profils et leurs données sont partagés via le pont MySQL.
  • Placeholders — nom, identifiant, nombre, limites et détails par profil pour les menus et les HUD.

Installation​

  1. Installez l'extension GUI, qui dessine le menu. L'extension Basic est déclarée comme dépendance.
  2. Recommandé : installez l'extension MySQL et activez-la (mysql.enabled: true). Sans elle, les profils sont stockés dans des fichiers et ne sont pas partagés entre les serveurs.
  3. Placez le JAR de Profiles dans plugins/Typewriter/extensions/ et redémarrez le serveur.
  4. Modifiez la section profiles de plugins/Typewriter/mysql/config.yml, voir Configuration. Profiles lit ses paramètres dans le fichier de configuration de l'extension MySQL même lorsque vous n'utilisez pas de base de données.
  5. Créez les entrées de menu décrites dans Premiers pas.

Premiers pas​

Mettez en place une sélection de profil que les nouveaux joueurs doivent terminer :

  1. Dans le panneau web de TypeWriter, ouvrez une page et ajoutez une entrée Profile Menu Config. /profile ouvre la première trouvée, et ne fait rien s'il n'en existe aucune.
  2. Définissez inventoryTitle, inventoryRows et guiType. Construisez la disposition dans layoutPool et définissez mainLayoutId. Voir les guides GUI.
  3. Placez des objets avec buttonPrefix profile_button: et buttonType PROFILE_SLOT là où les profils doivent apparaître. Chaque marqueur affiche un profil, lus de gauche à droite puis de haut en bas. Les emplacements situés sous la limite du joueur qui ne contiennent aucun profil affichent createProfileTemplate, les emplacements au-delà de la limite affichent maxProfilesTemplate.
  4. Définissez defaultMaxProfiles et, si besoin, permissionLimits.
  5. Créez les deux pages GUI utilisées pour la création, sous forme d'entrées Open GUI avec les identifiants profile_create_chooser (un choix Solo ou Coop) et, pour les modes de jeu sans coop, profile_create_solo. Un bouton de ces pages exécute profile create solo ou profile create coop, et pour les modes solo uniquement profile create seul.
  6. Dans plugins/Typewriter/mysql/config.yml, vérifiez profiles.force-profile-selection (true par défaut) et profiles.coop-supported.
  7. Publiez, connectez-vous au serveur, puis choisissez ou créez un profil.

Utilisez Switch Profile Action ou Open Profile Menu Action depuis des PNJ et des objets. Réagissez aux changements effectués par l'action de changement ou par des commandes saisies avec l'Profile Switched Event.

Conditionner du contenu au profil

Utilisez les facts Profile Count Fact et Is Profile Active Fact dans des critères. Par exemple, n'affichez un bouton « créer un profil » que tant que Can Create Profile Fact vaut 1.

Fonctionnement​

Lors d'un changement, l'extension vérifie le cooldown, puis déclenche un événement de pré-changement annulable afin qu'un mode de jeu puisse refuser (par exemple pendant une guerre ou un mini-jeu). Elle capture ensuite l'état actuel du joueur, l'écrit dans le dépôt, efface les facts TypeWriter et l'inventaire du joueur, puis restaure les données du profil cible. L'état du profil actif est aussi sauvegardé lorsque le joueur quitte le serveur.

Ce qui est sauvegardé dépend de la configuration : inventaire et ender chest (save-inventory, save-ender-chest) et statistiques Minecraft (save-statistics, désactivé par défaut à cause de sa taille). Le niveau, l'expérience, la santé, la faim et les facts TypeWriter sont toujours sauvegardés.

Comme les facts sont échangés, tout ce qui est stocké dans un fact appartient au profil. Les données des autres extensions suivent leur propre profile-mode dans la configuration MySQL : les données per-profile sont conservées séparément pour chaque profil, les données shared sont communes à tous les profils.

Configuration​

Profiles n'a pas de fichier de configuration propre. Ses paramètres se trouvent dans la section profiles de plugins/Typewriter/mysql/config.yml, créé par l'extension MySQL.

CléValeur par défaut dans le fichier fourniSignification
profiles.enabledtrueActive le système de profils.
profiles.max-profiles2Nombre maximal de profils par joueur lorsqu'aucune entrée Profile Menu Config n'existe. Le defaultMaxProfiles de l'entrée le remplace.
profiles.default-profile-namePrincipalNom du profil automatique.
profiles.save-statisticstrueSauvegarde les statistiques Minecraft par profil. Utilise beaucoup de stockage.
profiles.save-inventorytrueÉchange l'inventaire par profil.
profiles.save-ender-chesttrueÉchange l'ender chest par profil.
profiles.require-permissionfalseExige typewriter.profiles.create pour créer un profil.
profiles.auto-create-defaulttrueCrée un profil par défaut à la première connexion. Ne fonctionne que lorsque coop-supported vaut false.
profiles.force-profile-selectiontrueBloque le joueur tant qu'aucun profil n'est actif.
profiles.switch-cooldown-seconds60Délai minimal entre deux changements d'un joueur. 0 le désactive.
profiles.coop-supportedtrueIndique si ce mode de jeu a des profils coop. Lorsque false, la question Solo ou Coop est sautée et chaque profil est solo.
profiles.creation-menu-entry-idvideIdentifiant de la page GUI ouverte pour créer un profil. Vide signifie profile_create_chooser lorsque la coop est prise en charge et profile_create_solo sinon.

Les valeurs ci-dessus sont celles du fichier fourni. Les valeurs de repli intégrées diffèrent lorsqu'une clé est absente (max-profiles 5, save-statistics true, auto-create-default false) ; conservez donc les clés dans votre fichier.

Stockage. Avec mysql.enabled: true et profiles.enabled: true, les profils sont stockés dans la table typewriter_profiles. Sinon, ils sont stockés comme assets dans profiles/<game mode>/<player uuid>.json. Les profils sauvegardés dans l'ancien artifact Profile Storage Artifact sont copiés automatiquement vers le nouveau stockage au démarrage.

L'entrée Profile Menu Config décrit le menu. Un clic sur un profil y bascule, Maj + clic gauche le supprime (après un écran de confirmation, sauf si deleteConfirmation est désactivé), et un clic sur un emplacement libre ouvre la page de création. La création d'un profil demande son nom dans une enclume. {profile_name}, {profile_id}, {created_date}, {last_used}, {level}, {exp}, {health}, {food}, {profile_count} et {max_profiles} peuvent être utilisés dans les titres, les noms et le lore.

Les objets-boutons avec buttonPrefix profile_button: prennent en charge PROFILE_SLOT (un profil), ainsi que les marqueurs INFO et CLOSE, qui exécutent profile info et gui:close.

Les emplacements peuvent exécuter profile open, profile select <id>, profile create solo|coop et profile delete <id>, en tant que joueur qui clique.

Langue

Les textes par défaut du menu, des messages et du message de cooldown sont en français. Modifiez-les dans l'entrée de menu.

Commandes​

Toutes les commandes nécessitent profiles.use. Alias : /profil, /profiles.

CommandeDescription
/profileOuvre le menu des profils.
/profile menuOuvre le menu des profils.
/profile select <id>Bascule vers un profil.
/profile create solo ou coopCrée et active un profil ; le nom est demandé dans une enclume. Sans mode, uniquement pour les modes de jeu sans coop.
/profile delete <id> [confirm]Supprime un profil qui n'est pas actif. Ouvre d'abord l'écran de confirmation si deleteConfirmation est activé, sauf si confirm est donné.
/profile admin list <player>Liste les profils d'un joueur en ligne (nécessite profiles.admin).
/profile admin create <player> <name>Crée un profil solo pour un joueur.
/profile admin delete <player> <id>Supprime un profil d'un joueur.
/profile admin switch <player> <id>Fait basculer un joueur vers un profil.
/profile admin rename <player> <id> <name>Renomme un profil.
/profile headless list, select <id>, create <name>Gérez vos propres profils sans menu (nécessite profiles.headless).
Interception de commande en jeu

Un écouteur de menu traite /profile saisi par un joueur avant l'arborescence de commandes : il prend en charge select, create, delete et l'ouverture du menu, et ignore les autres. /profile admin ... et /profile headless ... fonctionnent donc de façon fiable depuis la console, ou via les alias /profil et /profiles.

Permissions​

PermissionPar défautAutorise
profiles.useTout le mondeLes commandes /profile.
profiles.adminOpérateurs/profile admin.
profiles.headlessPersonne/profile headless, pour les clients sans écran tels que les bots de test.
profiles.switch.bypasscooldownPersonneChanger sans cooldown.
typewriter.profiles.createPersonneCréer des profils lorsque profiles.require-permission vaut true.
Permissions de permissionLimitsÀ vous de choisirAugmentent la limite de profils. La limite la plus élevée l'emporte.

Placeholders​

Balises MiniPlaceholders pour les textes MiniMessage. Une référence est une position dans la liste (chiffres, à partir de 0) ou un identifiant de profil.

PlaceholderRenvoie
<profile_active_id>, <profile_active_name>Identifiant et nom du profil actif.
<profile_active>1 lorsqu'un profil est actif. Avec une référence, <profile_active:0> indique si ce profil est le profil actif.
<profile_count>Nombre de profils.
<profile_max>Nombre maximal de profils pour le joueur.
<profile_can_create>1 lorsque le joueur peut créer un autre profil.
<profile_remaining>Nombre de profils encore disponibles.
<profile_friend_count>Nombre d'amis, 0 sans l'extension Friend.
<profile_enabled>1 lorsque le système est activé.
<profile_name:ref>, <profile_id:ref>Nom et identifiant d'un profil.
<profile_created:ref>, <profile_last_used:ref>Dates au format dd/MM/yyyy HH:mm.
<profile_created_timestamp:ref>, <profile_last_used_timestamp:ref>Millisecondes epoch.
<profile_level:ref>, <profile_exp:ref>Niveau, et progression de l'expérience en pourcentage.
<profile_health:ref>, <profile_food:ref>Santé et niveau de faim sauvegardés.

Entrées​

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

Actions6
Événements5
Faits7
Artefacts1
Manifestes1

Dépannage​

/profile ne fait rien. Il n'existe aucune entrée Profile Menu Config. Créez-en une et publiez-la.

Les nouveaux joueurs sont figés et ne peuvent pas discuter. profiles.force-profile-selection vaut true et aucun profil n'est actif. Le joueur est envoyé vers la page de création après sa connexion ; assurez-vous que l'entrée GUI profile_create_chooser (ou profile_create_solo, ou votre creation-menu-entry-id) existe. Définissez l'option sur false pour désactiver le verrou.

« Choisissez d'abord Solo ou Coop dans le menu des profils. » Le joueur a essayé une commande alors qu'il était bloqué. Seuls /profile ... et la commande de la page de création sont autorisés tant qu'aucun profil n'est actif.

« Vous devez attendre N s avant de changer à nouveau de profil. » Le cooldown de changement est en cours. Diminuez profiles.switch-cooldown-seconds ou accordez profiles.switch.bypasscooldown.

Aucun profil par défaut n'est créé à la première connexion. auto-create-default ne fonctionne que lorsque coop-supported vaut false. Avec la coop, un joueur doit choisir Solo ou Coop, et le journal indique « No implicit profile was created; disable the setting. »

Les profils diffèrent d'un serveur à l'autre. L'extension MySQL doit être activée (mysql.enabled: true) sur chaque serveur, avec la même base de données et le même mode de jeu. Sans elle, les profils sont dans des fichiers locaux. Si MySQL est activé mais que la source de données est introuvable, le journal indique « MySQL enabled for profiles but DataSource not found. Falling back to JSON. »

Des joueurs perdent des objets après un changement. Vérifiez save-inventory et save-ender-chest. Lorsqu'ils valent false, l'inventaire n'est ni échangé ni vidé : les objets sont donc partagés entre les profils.

Un changement est refusé avec un message. Une autre extension l'a annulé via l'événement de pré-changement, par exemple pendant un combat ou un mini-jeu. Le message provient de cette extension.

Extensions associées​

  • MySQL — stockage, modes de jeu et paramètres lus par Profiles.
  • GUI — layouts et vues du menu des profils.
  • BTC Sky — îles coop et données d'île rattachées à un profil.
  • Party et Friend — fonctionnalités sociales qui suivent le profil actif.