Skip to main content

Configuration

The Quest System is configured through config.json in the root of your quest data folder. This file controls reset schedules, economy, streaks, the HUD tracker, anti-exploit settings and more.

info

After editing config.json, run /ksquestadmin reload in-game to apply changes without restarting the server.

Full Config Structure

Below is the complete config.json with all available fields and their default values:

{
"_config_version": 5,
"language": "en-US",
"timezone": "Europe/Berlin",
"dailyResetTime": "04:00",
"weeklyResetDay": "MONDAY",
"dailyQuestCount": 3,
"weeklyQuestCount": 5,
"saveIntervalSeconds": 300,
"debug": false,
"useCustomContent": true,
"loadDefaultQuests": true,
"loadDefaultStoryQuests": true,
"loadDefaultDailyPool": true,
"loadDefaultWeeklyPool": true,
"loadDefaultChapters": true,

"streak": { ... },
"questItem": { ... },
"questTracker": { ... },
"notifications": { ... },
"economy": { ... },
"tierSystem": { ... },
"reroll": { ... },
"placedBlockTracker": { ... },
"proximityToast": { ... }
}

General Settings

FieldTypeDefaultDescription
languagestring"en-US"UI and localization language. Supported: en-US, de-DE
timezonestring"Europe/Berlin"Timezone for reset calculations (Java ZoneId format)
dailyResetTimestring"04:00"Time when daily quests rotate (24h format, e.g. "04:00")
weeklyResetDaystring"MONDAY"Day when weekly quests rotate (e.g. MONDAY, FRIDAY)
dailyQuestCountint3Number of daily quests assigned to each player
weeklyQuestCountint5Number of weekly quests assigned to each player
saveIntervalSecondsint300Auto-save interval for player data in seconds
debugboolfalseEnable verbose debug logging to console
useCustomContentbooltrueLoad content from the custom/ folder
loadDefaultQuestsbooltrueLoad base quests from quests.json. Set false to only use custom quests
loadDefaultStoryQuestsbooltrueLoad base story quests from story_quests.json. Set false to only use custom story quests
loadDefaultDailyPoolbooltrueLoad base daily quest pool from daily_pool.json. Set false to only use custom pool
loadDefaultWeeklyPoolbooltrueLoad base weekly quest pool from weekly_pool.json. Set false to only use custom pool
loadDefaultChaptersbooltrueLoad base chapters from chapters.json. Set false to only use custom chapters

Streak System

The streak system rewards players for completing at least one quest per day. It uses a cumulative model with a grace period to avoid punishing missed days.

"streak": {
"enabled": true,
"cumulative": true,
"gracePeriodDays": 7,
"gracePeriodWindow": 14,
"milestones": [
{ "days": 7, "lootbagId": "streak_reward_7", "tier": "bronze" },
{ "days": 14, "lootbagId": "streak_reward_14", "tier": "silver" },
{ "days": 21, "lootbagId": "streak_reward_21", "tier": "gold" },
{ "days": 28, "lootbagId": "streak_reward_28", "tier": "platinum" }
]
}
FieldTypeDefaultDescription
enabledbooltrueEnable/disable the streak system
cumulativebooltrueAnti-FOMO mode: days don't need to be consecutive
gracePeriodDaysint7Required active days within the window
gracePeriodWindowint14Rolling window in days (e.g. 7 days out of 14)
milestonesarray4 tiersMilestone rewards at specific day counts

Each milestone grants a loot bag reward when the player reaches the specified day count.

Quest Item

Controls the physical Quest Book item given to players.

"questItem": {
"enabled": true,
"itemId": "QuestBook",
"hotbarSlot": 8,
"giveOnJoin": true,
"giveDelay": 500
}
FieldTypeDefaultDescription
enabledbooltrueGive players a quest book item
itemIdstring"QuestBook"The item ID to use
hotbarSlotint8Hotbar slot (0-8) to place the item
giveOnJoinbooltrueAutomatically give item when player joins
giveDelayint500Delay in ms before giving the item after join

Quest Tracker (HUD)

Controls the on-screen HUD that displays tracked quest progress.

"questTracker": {
"enabled": true,
"maxDisplayedQuests": 5,
"maxDisplayedObjectives": 5,
"showOnJoin": true,
"position": "right",
"maxTrackedQuests": 5,
"autoUntrackCompleted": true,
"defaultPositionPreset": "top_right",
"defaultShowEmptyState": true
}
FieldTypeDefaultDescription
enabledbooltrueEnable the HUD tracker
maxDisplayedQuestsint5Max quests shown on the HUD at once
maxDisplayedObjectivesint5Max objectives shown per quest
showOnJoinbooltrueShow tracker automatically when player joins
positionstring"right"HUD side: "left" or "right"
maxTrackedQuestsint5Max quests a player can track simultaneously
autoUntrackCompletedbooltrueAuto-remove completed quests from tracker
defaultPositionPresetstring"top_right"Default position for new players. Options: top_left, top_right, middle_left, middle_right, bottom_left, bottom_right
defaultShowEmptyStatebooltrueShow the HUD even when no quests are tracked
tip

Use "position": "left" if you have other mods (like a minimap) using the right side of the screen.

Notifications

"notifications": {
"enabled": true,
"showProgress": true,
"progressThreshold": 25,
"broadcastCompletion": false
}
FieldTypeDefaultDescription
enabledbooltrueEnable quest notifications
showProgressbooltrueShow progress milestones (25%, 50%, 75%)
progressThresholdint25Percentage interval for progress notifications
broadcastCompletionboolfalseBroadcast quest completions to all players

Economy

Controls quest economy, currency display, reroll costs, and token earnings.

"economy": {
"provider": "auto",
"primaryCurrency": "quest_tokens",
"alternativeCurrency": "gold",
"rewardCurrency": "quest_tokens",
"tokenExchangeRate": 100,
"rerollCostTokens": 5,
"rerollCostGold": 200,
"tokenEarnings": {
"dailyQuestComplete": 1,
"allDailiesBonus": 2,
"weeklyQuestComplete": 5,
"streakBronze": 5,
"streakSilver": 10,
"streakGold": 15,
"streakPlatinum": 20
}
}
FieldTypeDefaultDescription
providerstring"auto"Economy provider. auto detects VaultUnlocked → EliteEssentials. Options: auto, vaultunlocked, eliteessentials, internal, command
primaryCurrencystring"quest_tokens"Primary currency identifier
alternativeCurrencystring"gold"Alternative currency identifier (used for gold rerolls)
rewardCurrencystring"quest_tokens"Currency used for quest rewards. Set to "economy" to grant external currency (e.g. Gold) instead of tokens. Token amounts are converted via tokenExchangeRate
tokenExchangeRateint100Conversion rate: 1 Quest Token = X Gold. Only used when rewardCurrency = "economy"
rerollCostTokensint5Token cost per quest reroll. Set to 0 to disable token rerolls
rerollCostGoldint200Gold cost per quest reroll. Set to 0 to disable gold rerolls. Requires external economy
tokenEarnings.dailyQuestCompleteint1Tokens earned per daily quest completed
tokenEarnings.allDailiesBonusint2Bonus tokens for completing ALL daily quests
tokenEarnings.weeklyQuestCompleteint5Tokens earned per weekly quest completed

Tier System

The tier system assigns rarity tiers to daily/weekly quests. Higher tiers have harder objectives but better rewards.

"tierSystem": {
"enabled": true,
"tiers": [
{ "id": "common", "difficulty": "easy", "color": "#A0A0A0", "multiplier": 1.0, "weight": 50, "name": { "en": "Common", "de": "Gewoehnlich" } },
{ "id": "rare", "difficulty": "medium", "color": "#4169E1", "multiplier": 2.0, "weight": 30, "name": { "en": "Rare", "de": "Selten" } },
{ "id": "epic", "difficulty": "hard", "color": "#9932CC", "multiplier": 3.0, "weight": 15, "name": { "en": "Epic", "de": "Episch" } },
{ "id": "legendary", "difficulty": "legendary", "color": "#FFD700", "multiplier": 5.0, "weight": 5, "name": { "en": "Legendary", "de": "Legendaer" } }
]
}
FieldTypeDescription
idstringUnique tier identifier (referenced in quest definitions)
difficultystringDifficulty label
colorstringHex color code for UI display
multiplierfloatReward multiplier for this tier
weightintSelection weight (higher = more likely to appear)
nameobjectLocalized display name
tip

You can define as many custom tiers as you want. The weight values determine how often each tier appears when daily/weekly quests are assigned.

Reroll System

Allows players to re-roll their daily quests.

"reroll": {
"enabled": true,
"freeRerollsPerDay": 1,
"paidRerollCost": 10,
"maxPaidRerollsPerDay": 5,
"allowRerollStarted": false
}
FieldTypeDefaultDescription
enabledbooltrueEnable quest rerolling
freeRerollsPerDayint1Free rerolls per day
paidRerollCostint10Quest token cost for a paid reroll (doubles each time)
maxPaidRerollsPerDayint5Maximum paid rerolls per day
allowRerollStartedboolfalseAllow rerolling quests that have progress
warning

Paid reroll costs double with each use: 10 -> 20 -> 40 -> 80 -> 160. This prevents abuse while still giving players flexibility.

Per-Quest Reroll Limit

Individual quests can set their own reroll limit via options.maxRerolls in the quest definition. This overrides the global maxPaidRerollsPerDay setting for that specific quest. Default per-quest limit is 1.

Placed Block Tracker (Anti-Exploit)

Prevents players from gaining quest progress by placing and breaking their own blocks.

"placedBlockTracker": {
"enabled": true,
"expiryMinutes": 30
}
FieldTypeDefaultDescription
enabledbooltrueEnable the anti-exploit tracker
expiryMinutesint30After this time, placed blocks count as natural again

Proximity Toast

Shows an NPC toast notification on the HUD when a player approaches a quest NPC.

"proximityToast": {
"enabled": true,
"range": 20,
"cooldown": 300,
"durationMs": 0
}
FieldTypeDefaultDescription
enabledbooltrueEnable proximity toast notifications
rangeint20Detection radius in blocks
cooldownint300Seconds between proximity toasts per NPC per player
durationMsint0Display duration. 0 = stays while in range, >0 = auto-hide after N ms