Zum Hauptinhalt springen

Konfiguration

Drei Hauptdateien/-ordner:

  • plugins/KGInfoServs-QuestsTrack/config.yml — Allgemeine Konfiguration des Plugins
  • plugins/KGInfoServs-QuestsTrack/quests_config.yml — Texte, Schritte und Ziele der Quests
  • plugins/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​

EigenschaftErforderlichStandardBeschreibung
displayNameNeinconfigKeyIm GUI-Menü angezeigter Name. Unterstützt das einfache oder das mehrsprachige Format (siehe unten).
materialJa—Minecraft-Material für das Symbol (z. B. WRITABLE_BOOK, CLOCK)
customModelDataNein0Custom Model Data für Resource Packs
autoTrackNeinfalseWenn 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 questCategory auf 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.

Migration von einer älteren Version

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: story
  • questCategory: "Daily" → questCategory: dailyQuests
  • questCategory: "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

Historisches Format

Vor dieser Version lautete das Format displayName.displayName (z. B. Daily.Monsters). Jetzt müssen die configKey verwendet werden (z. B. dailyQuests.monsters).

  1. Der Spieler öffnet /quests
  2. Wählt die Kategorie "Daily" aus
  3. Sieht die Unterkategorien (Monsters, Farming, Mining)
  4. Wählt eine Unterkategorie aus
  5. 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ächeBeschreibung
toggleCompleted.visibleSymbol, wenn abgeschlossene Quests sichtbar sind
toggleCompleted.hiddenSymbol, wenn abgeschlossene Quests ausgeblendet sind
nextPageSchaltfläche "Nächste Seite"
prevPageSchaltfläche "Vorherige Seite"
closeButtonSchaltflä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:

DateiSprache
lang/fr-FR.ymlFranzösisch
lang/en-US.ymlEnglisch
lang/de-DE.ymlDeutsch
lang/pt-BR.ymlPortugiesisch (Brasilien)
lang/pl-PL.ymlPolnisch

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.

Automatische Aktualisierung

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:

DateiFeld
config.ymlmenuItems.categories.<key>.displayName
config.ymlmenuItems.categories.<key>.subcategories.<key>.displayName
quests_config.ymltitle, locked_description, finished_text
quests_config.ymlSteps: 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äfixBeschreibung
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​

  1. Kopieren Sie eine vorhandene Datei (zum Beispiel lang/en-US.yml)
  2. Benennen Sie sie mit dem gewünschten Locale-Code um (zum Beispiel lang/es-ES.yml)
  3. Übersetzen Sie alle Werte in der Datei
  4. Legen Sie in der BetonQuest-Konfiguration language: es-ES fest
  5. Laden Sie das Plugin mit /questsreload neu
MiniMessage-Format

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>"
EigenschaftStandardBeschreibung
enabledtrueAktiviert/deaktiviert das Scoreboard global für alle Spieler. Bei false wird kein Scoreboard erstellt.
titleLila-Rot-GradientTitel des Scoreboards (MiniMessage-Format)
separatorLila-Rot-GradientTrenner zwischen den Quests im Scoreboard (MiniMessage-Format)
Performance

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.

Ereignisgesteuertes Scoreboard

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
EigenschaftStandardBeschreibung
enabledtrueAktiviert/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_

PlaceholderBeschreibung
%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
EigenschaftStandardBeschreibung
maxSize30Maximale Anzahl der Verbindungen im HikariCP-Pool
minIdle5Mindestanzahl der aufrechterhaltenen inaktiven Verbindungen
connectionTimeoutMs10000Maximale Wartezeit, um eine Verbindung zu erhalten (10s)
idleTimeoutMs300000Schließt inaktive Verbindungen nach 5 Minuten
Dimensionierung nach Spieleranzahl
  • ~100 Spieler: Standardwerte (maxSize: 30)
  • 500+ Spieler: erhöhen Sie maxSize auf 50
  • 1000+ Spieler: erhöhen Sie maxSize auf 80-100

Automatische Aktualisierung (updater)​

updater:
auto-download: false
EigenschaftStandardBeschreibung
auto-downloadfalseWenn 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: ""
EigenschaftStandardBeschreibung
enabledtrueAktiviert/deaktiviert die Redis-Synchronisation
host"127.0.0.1"Adresse des Redis-Servers
port6379Port 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.

Abwärtskompatibilität

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üsselErforderlichBeschreibung
titleJaTitel der Quest (unterstützt MiniMessage, mehrsprachig)
locked_descriptionNeinText, der angezeigt wird, wenn die Quest gesperrt ist (mehrsprachig)
finished_textNeinText, der angezeigt wird, wenn die Quest abgeschlossen ist (mehrsprachig, unterstützt | für Mehrzeiligkeit)
stepsJaSchritte 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"
Einfaches text-Format

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>✔"
EigenschaftBeschreibung
idKennung des Ziels (muss dem BetonQuest-Ziel entsprechen)
inprogressText, der angezeigt wird, während das Ziel in Bearbeitung ist (mehrsprachig, unterstützt Placeholder)
completedText, der angezeigt wird, wenn das Ziel abgeschlossen ist (mehrsprachig)
BetonQuest-Placeholder in den Zielen

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​

  1. Bearbeiten Sie config.yml, quests_config.yml oder die Dateien in lang/
  2. Führen Sie /questsreload aus
  3. Überprüfen Sie es im Spiel

Siehe auch​