> For the complete documentation index, see [llms.txt](https://enchantedmobs.superiormc.cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://enchantedmobs.superiormc.cn/for-ultimatequest/features/storage.md).

# Storage and Saving

YAML is the default (`database.enabled: false`), stored under data/. SQL supports SQLite, MySQL/MariaDB, PostgreSQL, and H2 through JDBC. Backend changes require restart; switching does not automatically migrate existing data. Back up the current backend first.

```yaml
auto-save:
  enabled: true
  hide-message: false
  period-tick: 6000
  message: '{lang:auto-save.message}'
database:
  enabled: false
  jdbc-url: jdbc:sqlite:{plugin_folder}/quests.db
  properties:
    user: ''
    password: ''
```

`{plugin_folder}` is expanded in JDBC settings. database.properties.user and password supply SQL credentials. Additional JDBC drivers can be downloaded by the dialect loader. Player and scroll records are separate persisted records; keep both when backing up.

Auto-save uses ticks (20 ticks = one second). Default period is 6000 ticks; first scheduled save is delayed 180 ticks. hide-message hides feedback. Quitting, critical claims, and shutdown still save if periodic saving is disabled. Reload reschedules auto-save.

Instances save resolved definitions, objective progress, fixed rewards, and claim states. Stages/scroll tokens retain their own snapshots. Loading can return LOADING; commands wait for player state readiness. Unresolved claims need delivery review rather than deleting records or blindly issuing rewards again.
