Overview

Awaiting approval v1.0.0
Platforms
Spigot, Paper, Purpur, Folia
Minecraft
Minecraft 1.20.6 or newer; tested on 1.20.6, 1.21.11 and 26.2
Java
21
Required
None
Optional
EssentialsX, HuskHomes, PlayerPoints, AdvancedBan, LiteBans

Migrate moves homes, warps, balances and punishments between supported Minecraft plugins while keeping every run reviewable and reversible. It prepares a plan, performs a read-only dry run, creates a verified backup, writes in batches and reads the result back before reporting success.

Requirements #

  • Spigot, Paper, Purpur or Folia, Minecraft 1.20.6 or newer.
  • Java 21 or newer.
  • No plugin is required merely to load Migrate. The source and target plugins depend on the migration route you choose.

Data domains #

DomainRoute nameData moved
HomeshomesOwner, name, world, coordinates, yaw and pitch
WarpswarpsName, world, coordinates, yaw and pitch
EconomyeconomyPlayer balance and currency
PunishmentspunishmentsBans, mutes, warnings, kicks and notes, including dates, issuer and reason

Migrate also reads the server's vanilla ban lists and supports a documented JSON Lines exchange format for transfers that do not use a direct adapter.

Installation #

  1. Put Migrate.jar in plugins/ and start the server.
  2. Migrate creates plugins/Migrate/ with its configuration, languages, import folder, backups, reports and state database.
  3. Run /migrate compatibility and /migrate scan before preparing a route.

All commands are administrative and default to server operators. Migrate has no update checker, metrics or unrelated network service. It connects only to database servers that you explicitly configure for a route.

Safe migration workflow #

text
/migrate scan
/migrate prepare essentialsx huskhomes homes
/migrate dryrun MIG-20261008-0001
/migrate start MIG-20261008-0001
/migrate confirm MIG-20261008-0001
/migrate status MIG-20261008-0001
  1. scan detects supported installed data and suggests routes.
  2. prepare reads the source and creates a plan without writing.
  3. dryrun validates the plan, lists conflicts and reports whether the run is safe, safe with warnings or blocked.
  4. start shows the exact write and rollback scope. It still changes nothing.
  5. confirm, entered within the configured confirmation window, creates the backup and starts the migration.
  6. Migrate reads written records back and reports verification as passed, passed with warnings or failed.

A dry run must be recent before a migration may start. The target plugin must be disabled while Migrate writes because supported plugins cache their data. Keep your own full server backup in addition to Migrate's route-specific backup.

Recovery and rollback #

Migrate journals progress in migrate.db. After an interruption it waits for an administrator; it never resumes a write automatically. Inspect the migration and choose resume or rollback. Resume checks a cut-off batch against the target before writing again so that records are not duplicated.

text
/migrate inspect MIG-20261008-0001
/migrate rollback MIG-20261008-0001
/migrate rollback MIG-20261008-0001 confirm

Rollback changes only records written by that migration. A target record edited afterwards is left untouched and reported.

Privacy #

Database passwords remain in config.yml and are excluded from reports and diagnostics. Migration reports contain route, plan, conflict, result, verification and backup information; review any file before sharing it publicly.