Skip to main content

Storage, Backups, and Migration

DadaProgressions beta stores data in YAML files.

Data layout

plugins/DadaProgressions/data/
meta.yml
player-names.yml
community-goals/<goalId>.yml
players/<uuid>.yml
indexes/player-goals/<goalId>.yml

The important source files are:

  • meta.yml
  • player-names.yml
  • community-goals/<goalId>.yml
  • players/<uuid>.yml

Back these up before updates or manual data edits.

Leaderboard indexes

Files under data/indexes/player-goals/ are derived indexes. They are useful, but not the source of truth.

If they go missing or look wrong, rebuild them:

/dp admin rebuildindexes

or run the broader repair command:

/dp admin repair

Backups

Create a manual backup with:

/dp admin backup

The backup is written under:

plugins/DadaProgressions/backups/manual-<timestamp>/data/

Use this before risky changes, updates, or manual storage edits.

Validation and repair

Run validation with:

/dp admin validate

It checks for corrupt files, missing indexes, orphan indexes, invalid period keys, and unknown goal IDs.

Run repair with:

/dp admin repair

Repair recreates missing directories and rebuilds derived indexes. It does not quietly rewrite source progress files.

Corrupt files

Corrupt source YAML is quarantined with a .corrupt-<timestamp> suffix.

Corrupt derived index YAML is deleted and rebuilt.

If a source file is quarantined, restore it manually from backup.

Legacy data.yml

Older beta data may exist as:

plugins/DadaProgressions/data.yml

During migration, the plugin backs it up to:

plugins/DadaProgressions/backups/pre-migration-<timestamp>/data.yml

After a successful migration, the old file becomes:

plugins/DadaProgressions/data.yml.bak

If migration fails, the original file stays in place.

Old plugin folder

Old beta builds used:

plugins/DadaAchievements/

If plugins/DadaProgressions is missing or empty and plugins/DadaAchievements exists, startup copies the old folder to the new one. The old folder is not deleted.

If plugins/DadaProgressions already contains files, nothing is copied. This avoids overwriting live data.