Main Configuration¶
The main configuration is stored at:
General settings¶
language-file: messages.yml
metric: true
settings:
max-active-quests-per-player: 45
config-schema-version: 110
broadcast-cycle-reset: true
send-progress-messages: true
progress-message-percent-step: 10
database-flush-ticks: 100
player-cache-unload-minutes: 10
install-bundled-quest-updates: true
bundled-quest-pack-version: 301
| Option | Description |
|---|---|
language-file |
File loaded from the message folder |
metric |
Enables bStats metrics |
max-active-quests-per-player |
Global active limit across all cycles |
broadcast-cycle-reset |
Broadcast cycle rotations |
send-progress-messages |
Send progress messages to players |
progress-message-percent-step |
Percentage interval for progress notifications |
database-flush-ticks |
Save/flush interval |
player-cache-unload-minutes |
Delay before offline player data leaves memory |
install-bundled-quest-updates |
Insert missing bundled quests without overwriting custom quests |
Quest cycles¶
Each cycle has its own display name, permission, active limit, selection rules and reset schedule.
cycles:
daily:
enabled: true
display-name: 'KFF75Nhiệm vụ ngày'
permission: ''
active-limit: 15
history-retention-days: 90
selection:
mode: WEIGHTED
total-quests: 15
amounts: {easy: 2, medium: 1, hard: 0}
weights: {easy: 50, medium: 30, hard: 20}
reset:
type: CRON
expression: '0 0 * * *'
timezone: Asia/Ho_Chi_Minh
Selection modes:
| Mode | Behavior |
|---|---|
FIXED |
Select configured amounts from each difficulty |
WEIGHTED |
Random selection using difficulty weights |
ALL |
Make the whole cycle pool available |
Reset types:
| Type | Important options |
|---|---|
CRON |
expression, timezone |
WEEKLY |
day, time, timezone |
MONTHLY |
day-of-month, time, timezone |
INTERVAL |
interval-hours, timezone |
MANUAL |
Reset with /quest admin reset <cycle> |
Default limits:
| Cycle | Selected quests | Active limit |
|---|---|---|
| Daily | 15 | 15 |
| Weekly | 10 | 10 |
| Monthly | 10 | 10 |
| Seasonal | 10 | 10 |
Anti-exploit configuration¶
anti-exploit:
bypass-permission: koraquest.bypass.antiexploit
count-automation: false
placed-block-tracking: true
placed-block-expire-days: 7
gamemode-whitelist: [SURVIVAL, ADVENTURE]
break:
count-player-placed-blocks: false
count-creative-mode: false
count-silk-touch: true
kill:
allowed-spawn-reasons: [NATURAL, SPAWNER]
count-custom-named-mobs: false
count-mythic-mobs: true
fish:
count-hooked-entities: false
worlds:
blacklist: [spawn, build]
whitelist: []
Integration validation:
anti-exploit:
integrations:
worldguard:
blacklist: []
whitelist: []
islands:
require-member: false
plots:
require-member: false
When a required integration is enabled but its lookup fails, restricted progress is blocked for safety.
Reward queue¶
Reward claims are stored before delivery. Failed or interrupted claims can be retried automatically or with /quest admin retryrewards.
Reroll system¶
reroll:
enabled: true
free-per-cycle: 1
blocked-quests: []
cost:
type: VAULT
amount: 10000
check-command: ''
take-command: 'eco take %player% 10000'
Supported cost types:
FREEVAULTPLAYERPOINTSCOMMAND
Streaks and seasonal progression¶
streak:
enabled: true
catch-up:
enabled: true
milestones:
3:
catchup-tokens: 0
commands: ['eco give %player% 5000']
7:
catchup-tokens: 1
commands: ['eco give %player% 25000']
perfect-week:
commands: ['eco give %player% 50000']
season:
xp-per-level: 100
level-rewards:
5: {commands: ['eco give %player% 25000']}
Storage¶
storage:
type: SQLITE
host: 127.0.0.1
port: 3306
database: koraquest
username: root
password: ''
pool-size: 10
table-prefix: kq_
Supported types are SQLITE, MYSQL and MARIADB.
For a single backend, SQLite is the simplest choice. Use MySQL or MariaDB for shared data across multiple servers.
Network synchronization¶
network:
enabled: false
server-id: server-1
poll-ticks: 200
lock-timeout-seconds: 30
redis:
enabled: false
uri: redis://127.0.0.1:6379
channel: koraquest:sync
Each backend must use a unique server-id.
Bedrock forms¶
Floodgate and Cumulus are detected automatically. When Floodgate is missing or the player is not a Bedrock player, KoraQuest opens the Java inventory GUI.
Update checker¶
update-checker:
enabled: true
resource-id: 137091
interval-hours: 6
notify-console: true
notify-permission: koraquest.update-notify
download-url: ''
Leaving download-url empty makes KoraQuest generate the SpigotMC resource link from resource ID 137091.
GUI layout¶
gui:
size: 54
lock-quest-rows: true
quest-slots: [19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34]
filler-material: BLACK_STAINED_GLASS_PANE
previous-page: {slot: 45, material: ARROW}
filter: {slot: 46, material: HOPPER}
sort: {slot: 47, material: COMPARATOR}
search: {slot: 48, material: OAK_SIGN}
claim-all: {slot: 49, material: CHEST_MINECART}
info: {slot: 50, material: CLOCK}
next-page: {slot: 53, material: ARROW}
completion-animation: true
action-bar-tracker: true
When lock-quest-rows is enabled, quest icons remain on rows 3–4 and extra quests automatically create more pages.