Troubleshooting
Complete guide to resolving common issues with the plugin.
The quest menu does not open
Symptom: The /quests command does nothing or shows an error.
| Cause | Check | Solution |
|---|---|---|
| Plugin not loaded | /plugins in-game | Check the loading errors in the logs |
| BetonQuest missing | /plugins in-game | Install BetonQuest 3.0+ |
| Database unreachable | /kgquests health | Check that BetonQuest has MySQL enabled |
| License error | Server logs | Check the license.key file |
Solution:
- Check that the plugin is loaded (green in
/plugins) - Check the startup logs for errors
- Check the database connection:
/kgquests health
Quests appear as locked
Symptom: The menu opens but all quests have a "Locked" status.
| Cause | Solution |
|---|---|
trackedQuest template missing | Add templates: [trackedQuest] in the BQ package |
activeQuest event not triggered | Check that the event is properly called in the BQ logic |
.questTrackable tag missing | Test manually: /bq tag add <player> ma_quete.questTrackable |
Solution:
-
Check the template in the BetonQuest package:
templates:
- trackedQuest -
Check that the activation event exists:
events:
activer: "activeQuest ma_quete" -
Test manually by adding the tag:
/bq tag add <player> ma_quete.questTrackable
Quests do not appear in the right category
Symptom: Quests appear in the wrong category or in the default category (other).
Main cause: The questCategory in BetonQuest does not match the configKey of the category in config.yml.
Checks:
-
Compare the values exactly (the value is case-sensitive):
# config.yml
menuItems:
categories:
dailyQuests: # ← This is the key (configKey) that matters
displayName: "Daily"# BetonQuest package.yml
questParameters:
questCategory: dailyQuests # ← Must match the YAML key exactly -
For subcategories, combine the parent and child
configKeywith a dot:questCategory: dailyQuests.monsters # Format: configKey.subConfigKey -
If no
questCategoryis defined, the quest falls into the category defined bydefaultCategoryinconfig.yml.
Before a recent update, questCategory used the displayName (e.g. "Story"). Now it requires the configKey (e.g. story). If all your quests have suddenly moved into the other category, this is probably the cause.
Update your BetonQuest package.yml files:
questCategory: "Story"→questCategory: storyquestCategory: "Daily"→questCategory: dailyQuestsquestCategory: "Daily.Monsters"→questCategory: dailyQuests.monsters
The scoreboard or menu stays in the old language after /questlang
Symptom: A player runs /questlang fr-FR (or /ql en-US) but the scoreboard / quest journal does not immediately switch language.
Cause: You are using an older version of the plugin that does not detect the language change.
Solution:
- Update the plugin to the latest version
- After the update, the plugin automatically intercepts
/questlangand/ql:- The scoreboard is rebuilt in the new language
- The open quest menu (if any) is refreshed
- No additional command is needed
- Set up your quests as multilingual (
fr-FR+en-US) inquests_config.yml - Connect, run
/questlang en-US - The scoreboard should switch to English immediately
- Run
/questlang fr-FRagain to go back to French
The scoreboard does not display
Symptom: Tracked quests do not show a scoreboard.
| Cause | Solution |
|---|---|
| Scoreboard disabled globally | Check scoreboard.enabled: true in config.yml |
| No quest being tracked | The player must be tracking at least one quest |
| Quest with no steps | Define the steps in quests_config.yml |
| Conflict with another plugin | Check for conflicts with TAB, Featherboard, etc. |
Solution:
-
Check the global scoreboard configuration:
scoreboard:
enabled: true -
The player must be tracking a quest:
/quests track <quest_id> -
Check that the quest has steps in
quests_config.yml -
Test the scoreboard:
/kgquests scoreboard on
The cache does not update
Symptom: Quest changes are not reflected immediately.
Solutions:
-
Force a refresh for a player:
/kgquests refresh <player> -
Reload the configuration:
/questsreload -
Check the hit rates:
/kgquests stats
The local cache (L1) expires after 1-2 minutes, the Redis cache (L2) after 2 minutes. If you need an immediate refresh, use /kgquests refresh.
Multi-server issues (Redis)
Symptom: Data does not sync between servers.
Checks:
- Redis connection:
/kgquests redis - Same Redis instance for all servers (check
host:portin eachconfig.yml) - Same BetonQuest database for all servers
- Firewall: Redis port (6379) open between servers
- Force a refresh:
/kgquests refresh <player>
See Multi-server for the detailed guide.
Database errors
Symptom: SQLException or HikariPool errors in the logs.
| Cause | Solution |
|---|---|
| MySQL disabled in BQ | Enable mysql.enabled: true in BetonQuest's config.yml |
| Incorrect credentials | Check BetonQuest's MySQL configuration |
| MySQL server stopped | Restart MySQL/MariaDB |
| Connection pool exhausted | Restart the plugin |
| Network timeout | Check the connection between the MC server and the database |
Solution:
- Check the connection:
/kgquests health - Check that BetonQuest has MySQL enabled:
# plugins/BetonQuest/config.yml
mysql:
enabled: true - Test the connection manually:
mysql -h localhost -u betonquest -p betonquest
License error on startup
Symptom: The plugin does not load and shows a license error.
Solutions:
-
Check the license file:
plugins/KGInfoServs-QuestsTrack/license.key -
File content: a single line, no spaces before/after
-
Internet access: the server must be able to reach the license server. Check:
- Outbound firewall
- The server's Internet connection
- Proxy, if applicable
-
Contact support: if the problem persists, contact KGInfoServs on Discord
Degraded performance
Symptom: The menu is slow to open, the scoreboard lags.
Diagnostics:
/kgquests stats # Cache hit rate
/kgquests memory # JVM memory
/kgquests health # Overall health
Indicators:
| Indicator | Issue | Solution |
|---|---|---|
| Cache hit < 85% | Inefficient cache | Check the number of players vs cache size |
| Database latency > 50ms | Slow database | Optimize MySQL, move the database closer to the MC server |
| Redis latency > 10ms | Remote Redis | Put Redis on the same network |
| Memory > 80% | Insufficient memory | Increase the JVM heap (-Xmx) |
Diagnostic tools
Diagnostic commands
/kgquests health # Overall check of all components
/kgquests stats # Cache statistics (hit rate, misses)
/kgquests redis # Redis connection status
/kgquests redis <p> # A specific player's Redis cache
/kgquests memory # JVM memory and caches
View logs in real time
Linux:
tail -f logs/latest.log | grep -i queststrack
Windows (PowerShell):
Get-Content logs/latest.log -Wait | Select-String -Pattern "queststrack"
Quick troubleshooting checklist
Before asking for help, check:
- Plugin loaded (green in
/plugins) - BetonQuest installed and working
- MySQL enabled in BetonQuest (
mysql.enabled: true) - Database reachable (
/kgquests health) - Valid configuration (
/questsreloadwith no error) -
trackedQuesttemplate on the quests -
questCategorymatches theconfigKey(YAML key) of a category inconfig.yml - BetonQuest events configured (
activeQuest, etc.) -
quests_config.ymlfilled in (title, steps) - Server logs checked for errors
Getting help
If the problem persists:
-
Gather the information:
- Minecraft, Paper, and Java versions
- BetonQuest and QuestsTracker versions
- Output of
/kgquests health - Server logs (lines with errors)
- Your
config.yml(without passwords)
-
Contact support:
- KGInfoServs Discord: https://discord.gg/SZhD9AGUXW
See also
- Configuration — Reference for configuration keys
- BetonQuest integration — Events and templates
- Multi-server — Redis configuration
- Installation — Installation guide