Skip to content

Main Configuration

The main configuration is stored at:

plugins/KoraQuest/config.yml

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: '&#75FF75Nhiệ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

rewards:
  retry-batch-size: 50
  auto-retry-ticks: 6000
  delivered-retention-days: 30

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:

  • FREE
  • VAULT
  • PLAYERPOINTS
  • COMMAND

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

bedrock:
  enabled: true

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.