Konfiguration
Drei Hauptdateien/-ordner:
plugins/KGInfoServs-QuestsTrack/config.yml— Allgemeine Konfiguration des Pluginsplugins/KGInfoServs-QuestsTrack/quests_config.yml— Texte, Schritte und Ziele der Questsplugins/KGInfoServs-QuestsTrack/lang/<locale>.yml— Übersetzungsdateien der Oberfläche
config.yml — Vollständige Referenz
Hier ist die vollständige Struktur der Datei config.yml mit allen verfügbaren Optionen.
Standardkategorie (defaultCategory)
defaultCategory: "other"
Kategorie, die für Quests verwendet wird, die questParameters.questCategory in ihrer BetonQuest-Konfiguration nicht angeben. Der Wert muss dem YAML-Schlüssel einer Kategorie (configKey) entsprechen, nicht ihrem displayName.
Menükategorien (menuItems.categories)
Die Kategorien organisieren die Quests im GUI-Menü. Sie können bis zu 4 Kategorien definieren. Jede Kategorie ist vollständig anpassbar, und ihr displayName kann mehrsprachig sein.
menuItems:
categories:
story: # configKey — wird für das Matching mit questCategory verwendet
displayName: # Mehrsprachiges Format (empfohlen)
fr-FR: "Histoire"
en-US: "Story"
material: WRITABLE_BOOK
customModelData: 0
autoTrack: true
secondary:
displayName:
fr-FR: "Secondaires"
en-US: "Secondary"
material: BOOK
customModelData: 0
autoTrack: false
dailyQuests:
displayName:
fr-FR: "Journalieres"
en-US: "Daily"
material: CLOCK
customModelData: 0
autoTrack: false
other:
displayName: "Other" # Einfaches Format — weiterhin unterstützt
material: BOOKSHELF
customModelData: 0
autoTrack: false
Eigenschaften einer Kategorie
| Eigenschaft | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
displayName | Nein | configKey | Im GUI-Menü angezeigter Name. Unterstützt das einfache oder das mehrsprachige Format (siehe unten). |
material | Ja | — | Minecraft-Material für das Symbol (z. B. WRITABLE_BOOK, CLOCK) |
customModelData | Nein | 0 | Custom Model Data für Resource Packs |
autoTrack | Nein | false | Wenn true, werden Quests dieser Kategorie bei Aktivierung automatisch dem Scoreboard-Tracking hinzugefügt |
configKey vs. displayName
Der configKey (der YAML-Schlüssel, z. B. story) ist die stabile Kennung der Kategorie:
- Diesen verwenden Sie in
questCategoryauf BetonQuest-Seite (questCategory: story) - Er dient auch dazu, die Quests intern zu indizieren und die Kategorie im Code zu identifizieren
Der displayName wird nur für die Anzeige im GUI-Menü verwendet. Sie können ihn ändern (oder übersetzen), ohne das Matching mit Ihren BetonQuest-Paketen zu beeinträchtigen.
Vor dieser Version musste questCategory dem displayName entsprechen (z. B. questCategory: "Story"). Ab jetzt muss er dem configKey entsprechen (z. B. questCategory: story).
Wenn Sie von einer älteren Version aktualisieren, müssen Sie Ihre BetonQuest-package.yml-Dateien anpassen:
questCategory: "Story"→questCategory: storyquestCategory: "Daily"→questCategory: dailyQuestsquestCategory: "Other"→questCategory: other
Ohne diese Migration landen alle Ihre Quests in der Standardkategorie.
Mehrsprachiger displayName
Das Feld displayName akzeptiert zwei Formate:
Einfaches Format — eine einzige Sprache (altes Format, weiterhin unterstützt):
displayName: "Story"
Mehrsprachiges Format — ein Text pro Sprache:
displayName:
fr-FR: "Histoire"
en-US: "Story"
de-DE: "Geschichte"
Die angezeigte Sprache wird anhand des Spielers gewählt, der das Menü öffnet (siehe Sprache pro Spieler).
Unterkategorien
Jede Kategorie kann Unterkategorien für eine feinere Organisation haben:
menuItems:
categories:
dailyQuests:
displayName:
fr-FR: "Journalieres"
en-US: "Daily"
material: CLOCK
customModelData: 0
autoTrack: false
subcategories:
monsters: # configKey der Unterkategorie
displayName:
fr-FR: "Monstres"
en-US: "Monsters"
material: ZOMBIE_HEAD
farming:
displayName:
fr-FR: "Agriculture"
en-US: "Farming"
material: NETHERITE_HOE
mining:
displayName: "Mining" # Einfaches Format ebenfalls akzeptiert
material: NETHERITE_PICKAXE
Um eine Quest in eine Unterkategorie zu setzen, verwenden Sie in BetonQuest das hierarchische Format mit einem Punkt, unter Verwendung der configKey:
# In der package.yml der BetonQuest-Quest
questParameters:
questCategory: dailyQuests.monsters
Das Format lautet: configKey_Kategorie.configKey_Unterkategorie
Vor dieser Version lautete das Format displayName.displayName (z. B. Daily.Monsters). Jetzt müssen die configKey verwendet werden (z. B. dailyQuests.monsters).
Navigation im Menü
- Der Spieler öffnet
/quests - Wählt die Kategorie "Daily" aus
- Sieht die Unterkategorien (Monsters, Farming, Mining)
- Wählt eine Unterkategorie aus
- Sieht die Quests dieser Unterkategorie
Jede Unterkategorie zeigt automatisch eine Fortschrittsleiste an, die den Prozentsatz der abgeschlossenen Quests angibt.
Menüschaltflächen
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
| Schaltfläche | Beschreibung |
|---|---|
toggleCompleted.visible | Symbol, wenn abgeschlossene Quests sichtbar sind |
toggleCompleted.hidden | Symbol, wenn abgeschlossene Quests ausgeblendet sind |
nextPage | Schaltfläche "Nächste Seite" |
prevPage | Schaltfläche "Vorherige Seite" |
closeButton | Schaltfläche zum Schließen des Menüs |
Sprachdateien (lang/)
Die Übersetzungen der Oberfläche (Menüs, Befehle, Scoreboard, Tracking-Nachrichten, Konsolen-Logs) werden über einzelne Sprachdateien verwaltet, die sich befinden in:
plugins/KGInfoServs-QuestsTrack/lang/<locale>.yml
Integrierte Locales
Das Plugin enthält standardmäßig 5 Sprachen:
| Datei | Sprache |
|---|---|
lang/fr-FR.yml | Französisch |
lang/en-US.yml | Englisch |
lang/de-DE.yml | Deutsch |
lang/pt-BR.yml | Portugiesisch (Brasilien) |
lang/pl-PL.yml | Polnisch |
Sprachauswahl
QuestsTracker ermittelt die Sprache pro Spieler, indem es sich auf das native System von BetonQuest stützt.
Sprache pro Spieler
Jeder Spieler kann seine eigene Sprache mit dem BetonQuest-Befehl /questlang wählen:
/questlang fr-FR
/questlang en-US
/ql de-DE
BetonQuest speichert diese Wahl dauerhaft in PlayerData. QuestsTracker liest diesen Wert bei jedem Öffnen des Menüs, jeder Aktualisierung des Scoreboards oder jeder Aktualisierung des Journals.
Wenn ein Spieler /questlang ausführt, erkennt das Plugin den Befehl und aktualisiert sofort:
- Das Scoreboard des Spielers (mit den neuen übersetzten Texten)
- Das geöffnete Quest-Menü (falls vorhanden)
Es ist keine weitere Aktion erforderlich — alles wechselt sofort in die neue Sprache.
Standardsprache (Fallback)
Wenn ein Spieler /questlang noch nie ausgeführt hat, verwendet das Plugin die globale Sprache des Servers:
# In plugins/BetonQuest/config.yml
language: fr-FR
Wenn die entsprechende Sprachdatei in lang/ nicht existiert, verwendet das Plugin die erste verfügbare Datei.
Felder mit Unterstützung für Mehrsprachigkeit
Die folgenden Felder unterstützen automatisch das mehrsprachige Format:
| Datei | Feld |
|---|---|
config.yml | menuItems.categories.<key>.displayName |
config.yml | menuItems.categories.<key>.subcategories.<key>.displayName |
quests_config.yml | title, locked_description, finished_text |
quests_config.yml | Steps: text, Ziele inprogress / completed |
package.yml (BetonQuest) | questParameters.questReward |
Alle diese Felder akzeptieren entweder eine einfache Zeichenkette oder eine Map {lang-code: Text}.
Schlüsselkategorien
Jede Sprachdatei enthält die folgenden Kategorien:
| Präfix | Beschreibung |
|---|---|
command.* | Nachrichten der Befehle (/quests, /kgquests usw.) |
tracking.* | Nachrichten im Zusammenhang mit dem Quest-Tracking (Hinzufügen, Entfernen, Limits) |
menu.* | Texte der GUI-Oberfläche (Titel, Status, Schaltflächen, Lore-Format) |
scoreboard.* | Texte des Scoreboards (Titel, Trenner, Nachrichten bei leer/deaktiviert) |
console.* | Start- und Konsolen-Log-Nachrichten |
Eine neue Sprache hinzufügen
- Kopieren Sie eine vorhandene Datei (zum Beispiel
lang/en-US.yml) - Benennen Sie sie mit dem gewünschten Locale-Code um (zum Beispiel
lang/es-ES.yml) - Übersetzen Sie alle Werte in der Datei
- Legen Sie in der BetonQuest-Konfiguration
language: es-ESfest - Laden Sie das Plugin mit
/questsreloadneu
Die Schlüssel menu.* unterstützen das MiniMessage-Format. Beispiele:
<gold>Goldener Text</gold><#55C4FF>Hex-Farbe</#55C4FF><gradient:#800080:#D33D22>Farbverlauf</gradient><b>Fett</b>,<st>Durchgestrichen</st>,<i>Kursiv</i>
Scoreboard
Das Scoreboard zeigt in Echtzeit die Ziele der vom Spieler verfolgten Quests an.
scoreboard:
enabled: true
title: "<gradient:#800080:#D33D22>◈KGInfoServs Quests◈</gradient>"
separator: "<gradient:#800080:#D33D22>--------------</gradient>"
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
enabled | true | Aktiviert/deaktiviert das Scoreboard global für alle Spieler. Bei false wird kein Scoreboard erstellt. |
title | Lila-Rot-Gradient | Titel des Scoreboards (MiniMessage-Format) |
separator | Lila-Rot-Gradient | Trenner zwischen den Quests im Scoreboard (MiniMessage-Format) |
Wenn scoreboard.enabled: false, wird keinerlei Ressource für das Scoreboard verwendet (keine Ticks, keine Netzwerkpakete, kein Cache-Speicher). Dies ist die empfohlene Methode, wenn Sie ein externes Scoreboard-Plugin wie TAB verwenden.
Das Scoreboard erzeugt keinerlei Tick. Es wird nur aktualisiert, wenn ein Ereignis eintritt (Quest-Aktivierung, Fortschritt, Schrittwechsel). Selbst wenn aktiviert, hat es nahezu keine Auswirkung auf die Performance.
PlaceholderAPI
placeholders:
enabled: true
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
enabled | true | Aktiviert/deaktiviert die Placeholder %kgquetes_*% |
Deaktivieren Sie diese Option, wenn Sie PlaceholderAPI nicht verwenden, um Redis-/DB-Aufrufe zu reduzieren.
Verfügbare Placeholder
Präfix: %kgquetes_
| Placeholder | Beschreibung |
|---|---|
%kgquetes_title% | Titel der aktuell verfolgten Quest |
%kgquetes_objective_1% | Erste Zielzeile der verfolgten Quest |
%kgquetes_objective_2% | Zweite Zielzeile |
%kgquetes_objective_N% | N-te Zielzeile |
Datenbank-Verbindungspool (database)
database:
pool:
maxSize: 30
minIdle: 5
connectionTimeoutMs: 10000
idleTimeoutMs: 300000
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
maxSize | 30 | Maximale Anzahl der Verbindungen im HikariCP-Pool |
minIdle | 5 | Mindestanzahl der aufrechterhaltenen inaktiven Verbindungen |
connectionTimeoutMs | 10000 | Maximale Wartezeit, um eine Verbindung zu erhalten (10s) |
idleTimeoutMs | 300000 | Schließt inaktive Verbindungen nach 5 Minuten |
- ~100 Spieler: Standardwerte (maxSize: 30)
- 500+ Spieler: erhöhen Sie
maxSizeauf 50 - 1000+ Spieler: erhöhen Sie
maxSizeauf 80-100
Automatische Aktualisierung (updater)
updater:
auto-download: false
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
auto-download | false | Wenn true, werden neue Versionen automatisch in plugins/update/ heruntergeladen. Die JAR wird beim nächsten Server-Neustart angewendet. |
Die Update-Prüfung erfolgt automatisch beim Start. Wenn eine neue Version verfügbar ist, wird eine Nachricht in der Konsole angezeigt, und die Administratoren werden bei der Anmeldung benachrichtigt.
Sie können die Prüfung auch mit /kgquests update erzwingen.
Redis
redis:
enabled: true
host: "127.0.0.1"
port: 6379
password: ""
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
enabled | true | Aktiviert/deaktiviert die Redis-Synchronisation |
host | "127.0.0.1" | Adresse des Redis-Servers |
port | 6379 | Port des Redis-Servers |
password | "" | Redis-Passwort (leer, wenn keines vorhanden) |
Siehe Multi-Server für die detaillierte Konfiguration.
quests_config.yml — Texte und Schritte der Quests
Diese Datei definiert den Textinhalt, die Schritte und die Ziele jeder im Menü und im Scoreboard angezeigten Quest.
Mehrsprachige Unterstützung
Alle Textfelder (title, locked_description, finished_text, Schritttexte, inprogress/completed der Ziele) unterstützen zwei Formate:
Einfaches Format (eine einzige Sprache):
title: "<gold>Der verlorene Schatz</gold>"
Mehrsprachiges Format (im BetonQuest-Stil):
title:
fr-FR: "<gold>Le Tresor Perdu</gold>"
en-US: "<gold>The Lost Treasure</gold>"
Die Sprache wird aus der BetonQuest-Konfiguration gelesen (language: fr-FR in der config.yml von BetonQuest).
Der Fallback lautet: konfigurierte Sprache → erste verfügbare Sprache → Standardwert.
Das alte Format (einfacher Text ohne Sprachschlüssel) bleibt vollständig funktionsfähig. Sie können Ihre Quests schrittweise auf das mehrsprachige Format migrieren.
Struktur einer Quest
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"
Referenz der Schlüssel
| Schlüssel | Erforderlich | Beschreibung |
|---|---|---|
title | Ja | Titel der Quest (unterstützt MiniMessage, mehrsprachig) |
locked_description | Nein | Text, der angezeigt wird, wenn die Quest gesperrt ist (mehrsprachig) |
finished_text | Nein | Text, der angezeigt wird, wenn die Quest abgeschlossen ist (mehrsprachig, unterstützt | für Mehrzeiligkeit) |
steps | Ja | Schritte der Quest mit Zielen |
Format der Schritte (steps)
Die Schritte werden ab 1 nummeriert. Drei Formate sind möglich:
Einfaches Format (Liste von Texten)
steps:
'1':
- "Sprich mit dem Händler"
- "Kaufe eine Karte"
Format mit text-Abschnitt (mehrsprachig)
steps:
'1':
text:
fr-FR:
- "Parlez au marchand"
- "Achetez une carte"
en-US:
- "Talk to the merchant"
- "Buy a map"
Der Abschnitt text akzeptiert auch eine einfache Liste (ohne Sprachschlüssel):
text:
- "Sprich mit dem Händler"
- "Kaufe eine Karte"
Format mit verfolgbaren Zielen
Dieses Format ermöglicht es, den individuellen Fortschritt jedes Ziels zu verfolgen:
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>✔"
| Eigenschaft | Beschreibung |
|---|---|
id | Kennung des Ziels (muss dem BetonQuest-Ziel entsprechen) |
inprogress | Text, der angezeigt wird, während das Ziel in Bearbeitung ist (mehrsprachig, unterstützt Placeholder) |
completed | Text, der angezeigt wird, wenn das Ziel abgeschlossen ist (mehrsprachig) |
Verwenden Sie die BetonQuest-Placeholder, um den Fortschritt in Echtzeit anzuzeigen:
%betonquest_PACKAGE:objective.ID.amount%— Aktueller Fortschritt%betonquest_PACKAGE:objective.ID.absoluteamount%— Insgesamt erforderlich%betonquest_PACKAGE:constant.KEY%— Quest-Konstanten
Beispiel: Zombies töten (3/10) wird automatisch aktualisiert.
Vollständiges Beispiel
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>✔"
Änderungen anwenden
- Bearbeiten Sie
config.yml,quests_config.ymloder die Dateien inlang/ - Führen Sie
/questsreloadaus - Überprüfen Sie es im Spiel
Siehe auch
- BetonQuest-Integration — Events und Tags konfigurieren
- Befehle — Befehle zum Neuladen
- Multi-Server — Redis-Konfiguration