Aller au contenu principal

Integration BetonQuest

QuestsTracker s'integre profondement avec BetonQuest. Cette page explique comment configurer vos quetes pour qu'elles apparaissent dans le menu et le suivi.

Principe de fonctionnement

  1. Une quete doit utiliser le template trackedQuest pour apparaitre dans le menu
  2. Le statut (verrouille/actif/termine) est gere par des events personnalises
  3. La progression est suivie via les events nextStep et kgcomplete

Template trackedQuest

Pour qu'une quete apparaisse dans le menu QuestsTracker, son package BetonQuest doit utiliser le template trackedQuest.

Definir le template

Dans le fichier package.yml de votre quete :

templates:
- trackedQuest

questParameters:
questCategory: "Story" # Doit correspondre au displayName d'une categorie
Template obligatoire

Sans le template trackedQuest, la quete est invisible dans le menu, meme si tous les events sont correctement configures.

Tags BetonQuest

Le statut de chaque quete est determine par des tags internes geres automatiquement par les events du plugin :

TagRole
{questId}.questTrackableLa quete est debloquee (visible dans le menu)
{questId}.trackedLa quete est en cours (statut Actif)
{questId}.finishedLa quete est terminee (statut Termine)
Tags internes

Ces tags sont geres automatiquement par les events du plugin. Vous n'avez jamais besoin de les manipuler manuellement. Utilisez les events activeQuest, finishQuest et lockQuest a la place.

Cycle de vie d'une quete

Verrouillee  →  Active  →  Terminee
(aucun tag) (.questTrackable + .tracked) (.questTrackable + .finished)
  1. La quete est verrouillee par defaut (aucun tag)
  2. L'event activeQuest ajoute les tags .questTrackable et .tracked → la quete devient active
  3. Le joueur peut alors la suivre dans le scoreboard (jusqu'a 3 quetes simultanees)
  4. L'event finishQuest retire .tracked et ajoute .finished → la quete est terminee
  5. L'event lockQuest retire tous les tags → la quete redevient verrouillee

Events personnalises

QuestsTracker enregistre 5 events dans BetonQuest :

activeQuest

Active une quete — la rend visible et disponible dans le menu.

events:
activer_quete: "activeQuest ma_quete"

Effets :

  • Ajoute les tags ma_quete.questTrackable et ma_quete.tracked
  • La quete passe au statut Actif
  • Elle apparait dans le menu du joueur
  • Si la categorie a autoTrack: true, la quete est automatiquement suivie dans le scoreboard (jusqu'a 3 slots). Si les 3 slots sont occupes, une quete non-autoTrack est remplacee en priorite.

lockQuest

Verrouille une quete — la rend indisponible dans le menu.

events:
verrouiller_quete: "lockQuest ma_quete"

Effets :

  • Retire les tags ma_quete.questTrackable, ma_quete.tracked et ma_quete.finished
  • La quete passe au statut Verrouille
  • Elle apparait comme verrouillee dans le menu (ou est masquee selon les preferences du joueur)

finishQuest

Termine une quete.

events:
terminer_quete: "finishQuest ma_quete"

Effets :

  • Retire le tag ma_quete.tracked et ajoute ma_quete.finished
  • La quete passe au statut Termine
  • Elle reste visible dans le menu si le joueur affiche les quetes terminees
  • Elle est retiree du suivi scoreboard et la progression est effacee

nextStep

Avance a l'etape suivante d'une quete.

events:
etape_suivante: "nextStep ma_quete"

Effets :

  • Incremente le numero d'etape de la quete
  • Met a jour le scoreboard en temps reel avec les nouveaux objectifs
  • Reinitialise les objectifs completes de l'etape precedente

kgcomplete

Marque un objectif specifique comme complete dans l'etape courante.

events:
objectif_fait: "kgcomplete ma_quete mon_objectif"
Deux parametres requis

L'event kgcomplete necessite deux parametres : l'ID du package et l'ID de l'objectif. L'ID de l'objectif doit correspondre au champ id dans la section objectives du quests_config.yml.

Effets :

  • Marque l'objectif mon_objectif comme complete
  • Met a jour l'affichage dans le scoreboard (texte inprogress → texte completed)
  • Utile pour les etapes avec plusieurs objectifs independants

Parametres de quete (questParameters)

Le bloc questParameters dans le package.yml configure comment la quete apparait dans le menu :

questParameters:
questCategory: "Story"
questReward:
fr-FR: "100 pieces d'or\nEpee en diamant"
en-US: "100 gold coins\nDiamond sword"
ParametreObligatoireDescription
questCategoryNonCategorie du menu (defaut : defaultCategory de config.yml)
questRewardNonTexte des recompenses affiche dans le lore du menu (multilingue, \n pour les retours a la ligne)

Categorie

La valeur de questCategory doit correspondre exactement au displayName d'une categorie definie dans config.yml.

Correspondance categories

config.yml (cle)config.yml (displayName)BetonQuest (questCategory)
story"Story"questCategory: "Story"
secondary"Secondary"questCategory: "Secondary"
dailyQuests"Daily"questCategory: "Daily"
Sensible a la casse et aux accents

"Story""story""STORY". Utilisez exactement le meme texte que le displayName de votre categorie.

Sous-categories

Pour placer une quete dans une sous-categorie, utilisez le format avec point :

questParameters:
questCategory: "Daily.Monsters"

Le format est : displayName_categorie.displayName_souscategorie

Categorie par defaut

Si questCategory n'est pas specifie, la quete est placee dans la categorie definie par defaultCategory dans config.yml.

Exemple complet

Fichier BetonQuest (package.yml)

templates:
- trackedQuest

questParameters:
questCategory: "Story"

conversations:
guide_intro:
quester: "Guide"
first: "start"
NPC_options:
start:
text: "Bienvenue ! Etes-vous pret pour votre premiere quete ?"
pointer: accepter,refuser
player_options:
accepter:
text: "Oui, je suis pret !"
events: activer_quete
refuser:
text: "Pas encore..."

events:
# Activer la quete
activer_quete: "activeQuest premiere_quete"

# Passer a l'etape 2
etape2: "nextStep premiere_quete"

# Marquer un objectif comme complete (2 params : package + objectif)
objectif_forge: "kgcomplete premiere_quete visiter_forge"

# Terminer la quete
fin_quete: "finishQuest premiere_quete"

objectives:
visiter_forge:
type: location
location: "100;64;200;world;5"
events: objectif_forge,etape2

battre_mannequins:
type: mobkill
mob: ZOMBIE
amount: 3
events: fin_quete

Fichier quests_config.yml correspondant

Le fichier supporte le format multilingue (recommande) et l'ancien format simple. La langue est determinee par le parametre language dans la config BetonQuest.

quests:
premiere_quete:
title:
fr-FR: "<gold>Le Reveil du Heros</gold>"
en-US: "<gold>The Hero's Awakening</gold>"
locked_description:
fr-FR: "Parlez au guide du village pour commencer."
en-US: "Talk to the village guide to begin."
finished_text:
fr-FR: "Vous avez fait vos premiers pas !"
en-US: "You took your first steps!"
steps:
'1':
text:
fr-FR:
- "Parlez au guide du village"
- "Acceptez la quete"
en-US:
- "Talk to the village guide"
- "Accept the quest"
'2':
text:
fr-FR:
- "Visitez la forge"
en-US:
- "Visit the forge"
objectives:
- id: "visiter_forge"
inprogress:
fr-FR: "Se rendre a la forge"
en-US: "Go to the forge"
completed:
fr-FR: "<green>- Forge visitee <white>✔"
en-US: "<green>- Forge visited <white>✔"
'3':
objectives:
- id: "battre_mannequins"
inprogress:
fr-FR: "Battre des mannequins (%betonquest_premiere_quete:objective.battre_mannequins.amount%/3)"
en-US: "Beat training dummies (%betonquest_premiere_quete:objective.battre_mannequins.amount%/3)"
completed:
fr-FR: "Battre <green>3/3 Mannequins <white>✔"
en-US: "Beat <green>3/3 Dummies <white>✔"
info

L'ancien format (texte simple sans cles de langue) reste fonctionnel. Voir la documentation de quests_config.yml pour tous les details sur le format multilingue.

Workflow de creation d'une quete

  1. Creer le package BetonQuest avec le template trackedQuest
  2. Definir la categorie avec questCategory (doit matcher le displayName)
  3. Ajouter les events (activeQuest, nextStep, kgcomplete, finishQuest)
  4. Configurer les textes et etapes dans quests_config.yml
  5. Recharger : /bq reload puis /questsreload
  6. Tester en jeu

Interaction avec /bq reload

Quand vous executez /bq reload, QuestsTracker detecte automatiquement le reload et :

  • Re-indexe les quetes par categorie
  • Invalide le cache
  • Met a jour le scoreboard

Vous n'avez pas besoin de faire /questsreload apres un /bq reload pour les changements de packages BetonQuest.

Voir aussi