BetonQuest-Integration
QuestsTracker integriert sich tief in BetonQuest. Diese Seite erklärt, wie Sie Ihre Quests konfigurieren, damit sie im Menü und im Tracking erscheinen.
Funktionsprinzip
- Eine Quest muss das Template
trackedQuestverwenden, um im Menü zu erscheinen - Der Status (gesperrt/aktiv/abgeschlossen) wird über benutzerdefinierte Events gesteuert
- Der Fortschritt wird über die Events
nextStepundkgcompleteverfolgt
Template trackedQuest
Damit eine Quest im QuestsTracker-Menü erscheint, muss ihr BetonQuest-Paket das Template trackedQuest verwenden.
Das Template definieren
In der Datei package.yml Ihrer Quest:
templates:
- trackedQuest
questParameters:
questCategory: story # Muss dem configKey einer Kategorie aus config.yml entsprechen
Ohne das Template trackedQuest ist die Quest im Menü unsichtbar, selbst wenn alle Events korrekt konfiguriert sind.
BetonQuest-Tags
Der Status jeder Quest wird durch interne Tags bestimmt, die automatisch von den Events des Plugins verwaltet werden:
| Tag | Rolle |
|---|---|
{questId}.questTrackable | Die Quest ist freigeschaltet (im Menü sichtbar) |
{questId}.tracked | Die Quest läuft gerade (Status Aktiv) |
{questId}.finished | Die Quest ist abgeschlossen (Status Abgeschlossen) |
Diese Tags werden automatisch von den Events des Plugins verwaltet. Sie müssen sie niemals manuell bearbeiten. Verwenden Sie stattdessen die Events activeQuest, finishQuest und lockQuest.
Lebenszyklus einer Quest
Gesperrt → Aktiv → Abgeschlossen
(kein Tag) (.questTrackable + .tracked) (.questTrackable + .finished)
- Die Quest ist standardmäßig gesperrt (kein Tag)
- Das Event
activeQuestfügt die Tags.questTrackableund.trackedhinzu → die Quest wird aktiv - Der Spieler kann sie dann im Scoreboard verfolgen (bis zu 3 gleichzeitige Quests)
- Das Event
finishQuestentfernt.trackedund fügt.finishedhinzu → die Quest ist abgeschlossen - Das Event
lockQuestentfernt alle Tags → die Quest wird wieder gesperrt
Benutzerdefinierte Events
QuestsTracker registriert 5 Events in BetonQuest:
activeQuest
Aktiviert eine Quest — macht sie im Menü sichtbar und verfügbar.
events:
activer_quete: "activeQuest ma_quete"
Auswirkungen:
- Fügt die Tags
ma_quete.questTrackableundma_quete.trackedhinzu - Die Quest wechselt in den Status Aktiv
- Sie erscheint im Menü des Spielers
- Wenn die Kategorie
autoTrack: truehat, wird die Quest automatisch im Scoreboard verfolgt (bis zu 3 Slots). Sind alle 3 Slots belegt, wird bevorzugt eine Nicht-autoTrack-Quest ersetzt.
lockQuest
Sperrt eine Quest — macht sie im Menü nicht verfügbar.
events:
verrouiller_quete: "lockQuest ma_quete"
Auswirkungen:
- Entfernt die Tags
ma_quete.questTrackable,ma_quete.trackedundma_quete.finished - Die Quest wechselt in den Status Gesperrt
- Sie erscheint im Menü als gesperrt (oder wird je nach Spielereinstellungen ausgeblendet)
finishQuest
Schließt eine Quest ab.
events:
terminer_quete: "finishQuest ma_quete"
Auswirkungen:
- Entfernt den Tag
ma_quete.trackedund fügtma_quete.finishedhinzu - Die Quest wechselt in den Status Abgeschlossen
- Sie bleibt im Menü sichtbar, wenn der Spieler abgeschlossene Quests anzeigt
- Sie wird aus dem Scoreboard-Tracking entfernt und der Fortschritt wird gelöscht
nextStep
Geht zur nächsten Etappe einer Quest über.
events:
etape_suivante: "nextStep ma_quete"
Auswirkungen:
- Erhöht die Etappennummer der Quest
- Aktualisiert das Scoreboard in Echtzeit mit den neuen Zielen
- Setzt die abgeschlossenen Ziele der vorherigen Etappe zurück
kgcomplete
Markiert ein bestimmtes Ziel in der aktuellen Etappe als abgeschlossen.
events:
objectif_fait: "kgcomplete ma_quete mon_objectif"
Das Event kgcomplete benötigt zwei Parameter: die Paket-ID und die Ziel-ID. Die Ziel-ID muss dem Feld id im Abschnitt objectives der quests_config.yml entsprechen.
Auswirkungen:
- Markiert das Ziel
mon_objectifals abgeschlossen - Aktualisiert die Anzeige im Scoreboard (Text
inprogress→ Textcompleted) - Nützlich für Etappen mit mehreren unabhängigen Zielen
Quest-Parameter (questParameters)
Der Block questParameters in der package.yml legt fest, wie die Quest im Menü erscheint:
questParameters:
questCategory: story
questReward:
fr-FR: "100 pieces d'or\nEpee en diamant"
en-US: "100 gold coins\nDiamond sword"
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
questCategory | Nein | Menükategorie (Standard: defaultCategory aus config.yml) |
questReward | Nein | Belohnungstext, der im Lore des Menüs angezeigt wird (mehrsprachig, \n für Zeilenumbrüche) |
Kategorie
Der Wert von questCategory muss exakt dem configKey (dem YAML-Schlüssel) einer in config.yml definierten Kategorie entsprechen.
Zuordnung der Kategorien
| config.yml (configKey) | config.yml (displayName) | BetonQuest (questCategory) |
|---|---|---|
story | "Histoire" / "Story" | questCategory: story |
secondary | "Secondaires" / "Secondary" | questCategory: secondary |
dailyQuests | "Journalieres" / "Daily" | questCategory: dailyQuests |
other | "Autres" / "Other" | questCategory: other |
Der configKey ist der stabile Bezeichner der Kategorie. Er ändert sich nicht, wenn Sie den displayName übersetzen oder ändern. Ihre BetonQuest-Pakete bleiben funktionsfähig, auch wenn sich die Anzeige des Menüs weiterentwickelt.
Vor dieser Version musste questCategory dem displayName entsprechen (z. B. "Story"). Wenn Sie aktualisieren, passen Sie Ihre Pakete an:
questCategory: "Story"→questCategory: storyquestCategory: "Daily"→questCategory: dailyQuests
Ohne diese Migration fallen alle Ihre Quests in die Standardkategorie (meist other).
Unterkategorien
Um eine Quest in eine Unterkategorie einzuordnen, verwenden Sie das Punkt-Format, indem Sie die configKey-Werte kombinieren:
questParameters:
questCategory: dailyQuests.monsters
Das Format lautet: configKey_Kategorie.configKey_Unterkategorie
Standardkategorie
Wenn questCategory nicht angegeben ist, wird die Quest in die durch defaultCategory in config.yml definierte Kategorie eingeordnet.
Vollständiges Beispiel
BetonQuest-Datei (package.yml)
templates:
- trackedQuest
questParameters:
questCategory: story
conversations:
guide_intro:
quester: "Guide"
first: "start"
NPC_options:
start:
text: "Willkommen! Bist du bereit für deine erste Quest?"
pointer: accepter,refuser
player_options:
accepter:
text: "Oui, je suis pret !"
events: activer_quete
refuser:
text: "Pas encore..."
events:
# Quest aktivieren
activer_quete: "activeQuest premiere_quete"
# Zu Etappe 2 wechseln
etape2: "nextStep premiere_quete"
# Ziel als abgeschlossen markieren (2 Parameter: Paket + Ziel)
objectif_forge: "kgcomplete premiere_quete visiter_forge"
# Quest abschließen
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
Zugehörige Datei quests_config.yml
Die Datei unterstützt das mehrsprachige Format (empfohlen) und das alte einfache Format. Die Sprache wird durch den Parameter language in der BetonQuest-Konfiguration bestimmt.
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>✔"
Das alte Format (einfacher Text ohne Sprachschlüssel) bleibt funktionsfähig. Siehe die Dokumentation zu quests_config.yml für alle Details zum mehrsprachigen Format.
Workflow zur Erstellung einer Quest
- Erstellen Sie das BetonQuest-Paket mit dem Template
trackedQuest - Definieren Sie die Kategorie mit
questCategory(muss demconfigKeyeiner Kategorie ausconfig.ymlentsprechen) - Fügen Sie die Events hinzu (
activeQuest,nextStep,kgcomplete,finishQuest) - Konfigurieren Sie die Texte und Etappen in
quests_config.yml - Neu laden:
/bq reloaddann/questsreload - Testen Sie im Spiel
Zusammenspiel mit /bq reload
Wenn Sie /bq reload ausführen, erkennt QuestsTracker das Neuladen automatisch und:
- Indiziert die Quests nach Kategorie neu
- Invalidiert den Cache
- Aktualisiert das Scoreboard
Sie brauchen kein /questsreload nach einem /bq reload für Änderungen an BetonQuest-Paketen auszuführen.
Siehe auch
- Konfiguration — Kategorien, Unterkategorien und quests_config.yml
- Befehle — Befehle zum Neuladen
- Fehlerbehebung — Probleme im Zusammenhang mit BetonQuest