Configuration
Trois fichiers/dossiers principaux :
plugins/kginfoservs_queststrack/config.yml— Configuration generale du pluginplugins/kginfoservs_queststrack/quests_config.yml— Textes, etapes et objectifs des quetesplugins/kginfoservs_queststrack/lang/<locale>.yml— Fichiers de traduction de l’interface
config.yml — Reference complete
Voici la structure complete du fichier config.yml avec toutes les options disponibles.
Categorie par defaut (defaultCategory)
defaultCategory: "other"
Categorie utilisee pour les quetes qui ne specifient pas questParameters.questCategory dans leur configuration BetonQuest. La valeur doit correspondre a la cle de configuration d'une categorie (pas le displayName).
Categories du menu (menuItems.categories)
Les categories organisent les quetes dans le menu GUI. Vous pouvez definir jusqu'a 4 categories. Chaque categorie est entierement personnalisable.
menuItems:
categories:
story:
displayName: "Story"
material: WRITABLE_BOOK
customModelData: 0
autoTrack: true
secondary:
displayName: "Secondary"
material: BOOK
customModelData: 0
autoTrack: false
dailyQuests:
displayName: "Daily"
material: CLOCK
customModelData: 0
autoTrack: false
other:
displayName: "Other"
material: BOOKSHELF
customModelData: 0
autoTrack: false
Proprietes d'une categorie
| Propriete | Obligatoire | Defaut | Description |
|---|---|---|---|
displayName | Non | Cle de configuration | Nom affiche dans le menu GUI. C'est cette valeur que vous utilisez dans questCategory de BetonQuest. |
material | Oui | — | Materiau Minecraft pour l'icone (ex: WRITABLE_BOOK, CLOCK) |
customModelData | Non | 0 | Custom model data pour resource pack |
autoTrack | Non | false | Si true, les quetes de cette categorie sont automatiquement ajoutees au suivi du scoreboard quand elles sont activees |
La valeur de questCategory dans BetonQuest doit correspondre exactement au displayName de la categorie (sensible a la casse et aux accents).
Exemple : si votre categorie a displayName: "Journaliere", vos quetes doivent avoir questCategory: "Journaliere" (pas "journaliere" ni "Journalière").
Si aucun displayName n'est defini, la cle de configuration est utilisee (ex: dailyQuests).
Sous-categories
Chaque categorie peut avoir des sous-categories pour une organisation plus fine :
menuItems:
categories:
dailyQuests:
displayName: "Daily"
material: CLOCK
customModelData: 0
autoTrack: false
subcategories:
monsters:
displayName: "Monsters"
material: ZOMBIE_HEAD
farming:
displayName: "Farming"
material: NETHERITE_HOE
mining:
displayName: "Mining"
material: NETHERITE_PICKAXE
Pour placer une quete dans une sous-categorie, utilisez le format hierarchique avec un point dans BetonQuest :
# Dans le package.yml de la quete BetonQuest
questParameters:
questCategory: "Daily.Monsters"
Le format est : displayName_categorie.displayName_souscategorie
Navigation dans le menu
- Le joueur ouvre
/quests - Selectionne la categorie "Daily"
- Voit les sous-categories (Monsters, Farming, Mining)
- Selectionne une sous-categorie
- Voit les quetes de cette sous-categorie
Chaque sous-categorie affiche automatiquement une barre de progression indiquant le pourcentage de quetes terminees.
Boutons du menu
menuItems:
toggleCompleted:
visible:
material: LIME_DYE
customModelData: 0
hidden:
material: GRAY_DYE
customModelData: 0
nextPage:
material: PAPER
customModelData: 0
prevPage:
material: PAPER
customModelData: 0
closeButton:
material: BARRIER
customModelData: 0
| Bouton | Description |
|---|---|
toggleCompleted.visible | Icone quand les quetes terminees sont visibles |
toggleCompleted.hidden | Icone quand les quetes terminees sont masquees |
nextPage | Bouton page suivante |
prevPage | Bouton page precedente |
closeButton | Bouton fermer le menu |
Fichiers de langue (lang/)
Les traductions de l’interface (menus, commandes, scoreboard, messages de suivi, logs console) sont gerees par des fichiers de langue individuels situes dans :
plugins/kginfoservs_queststrack/lang/<locale>.yml
Locales integrees
Le plugin inclut 5 langues par defaut :
| Fichier | Langue |
|---|---|
lang/fr-FR.yml | Francais |
lang/en-US.yml | Anglais |
lang/de-DE.yml | Allemand |
lang/pt-BR.yml | Portugais (Bresil) |
lang/pl-PL.yml | Polonais |
Selection de la langue
La langue utilisee est determinee par le reglage language dans la configuration de BetonQuest (plugins/BetonQuest/config.yml). Ce reglage est global au serveur.
# Dans plugins/BetonQuest/config.yml
language: fr-FR
Si le fichier de langue correspondant n’existe pas, le plugin utilise en-US comme fallback.
Categories de cles
Chaque fichier de langue contient les categories suivantes :
| Prefixe | Description |
|---|---|
command.* | Messages des commandes (/quests, /kgquests, etc.) |
tracking.* | Messages lies au suivi des quetes (ajout, retrait, limites) |
menu.* | Textes de l’interface GUI (titres, statuts, boutons, format du lore) |
scoreboard.* | Textes du scoreboard (titre, separateur, messages vide/desactive) |
console.* | Messages de demarrage et logs console |
Ajouter une nouvelle langue
- Copiez un fichier existant (par exemple
lang/en-US.yml) - Renommez-le avec le code locale souhaite (par exemple
lang/es-ES.yml) - Traduisez toutes les valeurs dans le fichier
- Dans la configuration de BetonQuest, definissez
language: es-ES - Rechargez le plugin avec
/questsreload
Les cles menu.* supportent le format MiniMessage. Exemples :
<gold>Texte dore</gold><#55C4FF>Couleur hex</#55C4FF><gradient:#800080:#D33D22>Gradient</gradient><b>Gras</b>,<st>Barre</st>,<i>Italique</i>
Scoreboard
Le scoreboard affiche en temps reel les objectifs des quetes suivies par le joueur.
scoreboard:
enabled: true
title: "<gradient:#800080:#D33D22>◈KGInfoServs Quests◈</gradient>"
separator: "<gradient:#800080:#D33D22>--------------</gradient>"
| Propriete | Defaut | Description |
|---|---|---|
enabled | true | Active/desactive le scoreboard globalement pour tous les joueurs. Si false, aucun scoreboard n'est cree. |
title | Gradient violet-rouge | Titre du scoreboard (format MiniMessage) |
separator | Gradient violet-rouge | Separateur entre les quetes dans le scoreboard (format MiniMessage) |
Quand scoreboard.enabled: false, aucune ressource n'est utilisee pour le scoreboard (pas de ticks, pas de paquets reseau, pas de memoire cache). C'est la methode recommandee si vous utilisez un plugin de scoreboard externe comme TAB.
Le scoreboard ne genere aucun tick. Il se met a jour uniquement quand un evenement survient (activation de quete, progression, changement d'etape). Meme active, il n'a quasiment aucun impact sur les performances.
PlaceholderAPI
placeholders:
enabled: true
| Propriete | Defaut | Description |
|---|---|---|
enabled | true | Active/desactive les placeholders %kgquetes_*% |
Desactivez si vous n'utilisez pas PlaceholderAPI pour reduire les appels Redis/BDD.
Placeholders disponibles
Prefixe : %kgquetes_
| Placeholder | Description |
|---|---|
%kgquetes_title% | Titre de la quete actuellement suivie |
%kgquetes_objective_1% | Premiere ligne d'objectif de la quete suivie |
%kgquetes_objective_2% | Deuxieme ligne d'objectif |
%kgquetes_objective_N% | N-ieme ligne d'objectif |
Pool de connexion base de donnees (database)
database:
pool:
maxSize: 30
minIdle: 5
connectionTimeoutMs: 10000
idleTimeoutMs: 300000
| Propriete | Defaut | Description |
|---|---|---|
maxSize | 30 | Nombre maximum de connexions dans le pool HikariCP |
minIdle | 5 | Nombre minimum de connexions inactives maintenues |
connectionTimeoutMs | 10000 | Temps d'attente maximum pour obtenir une connexion (10s) |
idleTimeoutMs | 300000 | Ferme les connexions inactives apres 5 minutes |
- ~100 joueurs : valeurs par defaut (maxSize: 30)
- 500+ joueurs : augmentez
maxSizea 50 - 1000+ joueurs : augmentez
maxSizea 80-100
Mise a jour automatique (updater)
updater:
auto-download: false
| Propriete | Defaut | Description |
|---|---|---|
auto-download | false | Si true, telecharge automatiquement les nouvelles versions dans plugins/update/. Le JAR sera applique au prochain redemarrage du serveur. |
La verification de mise a jour s'effectue automatiquement au demarrage. Si une nouvelle version est disponible, un message s'affiche dans la console et les administrateurs en sont notifies a la connexion.
Vous pouvez aussi forcer la verification avec /kgquests update.
Redis
redis:
enabled: true
host: "127.0.0.1"
port: 6379
password: ""
| Propriete | Defaut | Description |
|---|---|---|
enabled | true | Active/desactive la synchronisation Redis |
host | "127.0.0.1" | Adresse du serveur Redis |
port | 6379 | Port du serveur Redis |
password | "" | Mot de passe Redis (vide si aucun) |
Voir Multi-serveur pour la configuration detaillee.
quests_config.yml — Textes et etapes des quetes
Ce fichier definit le contenu textuel, les etapes et les objectifs de chaque quete affichee dans le menu et le scoreboard.
Support multilingue
Tous les champs texte (title, locked_description, finished_text, textes d'etapes, inprogress/completed des objectifs) supportent deux formats :
Format simple (une seule langue) :
title: "<gold>Le Tresor Perdu</gold>"
Format multilingue (style BetonQuest) :
title:
fr-FR: "<gold>Le Tresor Perdu</gold>"
en-US: "<gold>The Lost Treasure</gold>"
La langue est lue depuis la configuration BetonQuest (language: fr-FR dans config.yml de BetonQuest).
Le fallback est : langue configuree → premiere langue disponible → valeur par defaut.
L'ancien format (texte simple sans cles de langue) reste entierement fonctionnel. Vous pouvez migrer progressivement vos quetes vers le format multilingue.
Structure d'une quete
quests:
ma_quete:
title:
fr-FR: "<gold>Le Tresor Perdu</gold>"
en-US: "<gold>The Lost Treasure</gold>"
locked_description:
fr-FR: "Trouvez l'indice pour debloquer cette quete."
en-US: "Find the clue to unlock this quest."
finished_text:
fr-FR: "Felicitations ! Vous avez trouve le tresor !"
en-US: "Congratulations! You found the treasure!"
steps:
'1':
text:
fr-FR:
- "Parlez au marchand du village"
- "Achetez une carte au tresor"
en-US:
- "Talk to the village merchant"
- "Buy a treasure map"
'2':
text:
fr-FR:
- "Suivez la carte jusqu'a la foret"
- "Trouvez l'entree de la grotte"
en-US:
- "Follow the map to the forest"
- "Find the cave entrance"
Reference des cles
| Cle | Obligatoire | Description |
|---|---|---|
title | Oui | Titre de la quete (supporte MiniMessage, multilingue) |
locked_description | Non | Texte affiche quand la quete est verrouillee (multilingue) |
finished_text | Non | Texte affiche quand la quete est terminee (multilingue, supporte | pour le multiline) |
steps | Oui | Etapes de la quete avec objectifs |
Format des etapes (steps)
Les etapes sont numerotees a partir de 1. Trois formats sont possibles :
Format simple (liste de textes)
steps:
'1':
- "Parlez au marchand"
- "Achetez une carte"
Format avec section text (multilingue)
steps:
'1':
text:
fr-FR:
- "Parlez au marchand"
- "Achetez une carte"
en-US:
- "Talk to the merchant"
- "Buy a map"
La section text accepte aussi une simple liste (sans cles de langue) :
text:
- "Parlez au marchand"
- "Achetez une carte"
Format avec objectifs trackables
Ce format permet de suivre la progression individuelle de chaque objectif :
steps:
'1':
text:
fr-FR:
- "Parlez au marchand"
en-US:
- "Talk to the merchant"
objectives:
- id: "kill_zombies"
inprogress:
fr-FR: "Tuer des zombies (%betonquest_ma_quete:objective.kill_zombies.amount%/10)"
en-US: "Kill zombies (%betonquest_ma_quete:objective.kill_zombies.amount%/10)"
completed:
fr-FR: "Tuer <green>10/10 Zombies <white>✔"
en-US: "Kill <green>10/10 Zombies <white>✔"
- id: "collect_wood"
inprogress:
fr-FR: "Collecter du bois (%betonquest_ma_quete:objective.collect_wood.amount%/20)"
en-US: "Collect wood (%betonquest_ma_quete:objective.collect_wood.amount%/20)"
completed:
fr-FR: "Collecter <green>20/20 Bois <white>✔"
en-US: "Collect <green>20/20 Wood <white>✔"
| Propriete | Description |
|---|---|
id | Identifiant de l'objectif (doit correspondre a l'objectif BetonQuest) |
inprogress | Texte affiche quand l'objectif est en cours (multilingue, supporte les placeholders) |
completed | Texte affiche quand l'objectif est complete (multilingue) |
Utilisez les placeholders BetonQuest pour afficher la progression en temps reel :
%betonquest_PACKAGE:objective.ID.amount%— Progression actuelle%betonquest_PACKAGE:objective.ID.absoluteamount%— Total requis%betonquest_PACKAGE:constant.KEY%— Constantes de quete
Exemple : Tuer des zombies (3/10) se met a jour automatiquement.
Exemple complet
quests:
histoire_chapitre1:
title:
fr-FR: "<gold>Le Reveil du Heros</gold>"
en-US: "<gold>The Hero's Awakening</gold>"
locked_description:
fr-FR: "Commencez votre aventure en parlant au guide."
en-US: "Start your adventure by talking to the guide."
finished_text:
fr-FR: |
Vous avez fait vos premiers pas !
Continuez votre aventure.
en-US: |
You took your first steps!
Continue your adventure.
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: "visit_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>✔"
- id: "get_sword"
inprogress:
fr-FR: "Obtenir une epee"
en-US: "Get a sword"
completed:
fr-FR: "<green>- Epee obtenue <white>✔"
en-US: "<green>- Sword obtained <white>✔"
'3':
objectives:
- id: "kill_dummies"
inprogress:
fr-FR: "Battre des mannequins (%betonquest_histoire_chapitre1:objective.kill_dummies.amount%/3)"
en-US: "Beat training dummies (%betonquest_histoire_chapitre1:objective.kill_dummies.amount%/3)"
completed:
fr-FR: "Battre <green>3/3 Mannequins <white>✔"
en-US: "Beat <green>3/3 Dummies <white>✔"
daily_minerai:
title:
fr-FR: "<aqua>Collecte Quotidienne</aqua>"
en-US: "<aqua>Daily Collection</aqua>"
locked_description:
fr-FR: "Disponible chaque jour."
en-US: "Available every day."
finished_text:
fr-FR: "Beau travail, mineur !"
en-US: "Good work, miner!"
steps:
'1':
objectives:
- id: "mine_iron"
inprogress:
fr-FR: "Miner du fer (%betonquest_daily_minerai:objective.mine_iron.amount%/32)"
en-US: "Mine iron (%betonquest_daily_minerai:objective.mine_iron.amount%/32)"
completed:
fr-FR: "Miner <green>32/32 Fer <white>✔"
en-US: "Mine <green>32/32 Iron <white>✔"
- id: "mine_gold"
inprogress:
fr-FR: "Miner de l'or (%betonquest_daily_minerai:objective.mine_gold.amount%/16)"
en-US: "Mine gold (%betonquest_daily_minerai:objective.mine_gold.amount%/16)"
completed:
fr-FR: "Miner <green>16/16 Or <white>✔"
en-US: "Mine <green>16/16 Gold <white>✔"
Appliquer les changements
- Modifiez
config.yml,quests_config.ymlou les fichiers danslang/ - Executez
/questsreload - Verifiez en jeu
Voir aussi
- Integration BetonQuest — Configurer les events et tags
- Commandes — Commandes de rechargement
- Multi-serveur — Configuration Redis