Data Migration
Migrate data from other plugins to zEssentials
zEssentials includes built-in data converters that allow you to migrate player data from other popular plugins. Each converter reads data from the source plugin's storage format and imports it into the zEssentials database.
Prerequisites
All converters require zEssentials to be configured with SQL storage (SQLITE, MYSQL, MARIADB or HIKARICP). The JSON storage is not supported as a target for data migration. Ensure your database is configured and working before running any converter. For production, use MySQL/MariaDB rather than SQLite.
Before You Start
- Back up your database before running any converter.
- Close the server to players (e.g. with the whitelist) or ensure no players are online during migration to prevent data conflicts.
- Verify that the source plugin's data files are accessible from the server.
- Run the converter from the server console for best results.
Command
All converters are started with the same command:
/zessentials convert <plugin>| Argument | Values |
|---|---|
<plugin> | essentialsx, cmi, sunlight, playervaultx, coinsengine, huskhomes, axvaults |
- Aliases:
/ess convert,/zessentials conv,/zessentials c - Permission:
essentials.convert
The conversion runs asynchronously. Progress and the final result (You have just converted your ... data to zEssentials !) are sent to the command sender.
Homes only from EssentialsX
If you only want to import the homes of EssentialsX (without balances), you can also use /homeimport essentialsx (permission essentials.home.import). It reads the same plugins/Essentials/userdata/ files, skips homes whose world does not exist, and works with every storage type. See the Home module.
EssentialsX
Migrates player data from EssentialsX to zEssentials.
Data Migrated
| Data Type | Details |
|---|---|
| Users | Player UUID and last known username |
| Economy | Player money balances |
| Homes | All player homes with full location data |
How It Works
The converter reads from EssentialsX's flat-file storage located at plugins/Essentials/userdata/. Each file in this directory is named after a player's UUID (e.g., 550e8400-e29b-41d4-a716-446655440000.yml) and contains that player's data.
From each player file, the converter extracts:
money-- The player's economy balancelast-account-name-- The player's last known usernamehomes-- A map of home names, each containing:world-name-- The world the home is inx,y,z-- The coordinatesyaw,pitch-- The player's facing direction
Prerequisites
- EssentialsX userdata files must be present at
plugins/Essentials/userdata/ - zEssentials must be configured with SQL storage
Usage
- Ensure the
plugins/Essentials/userdata/directory contains the player.ymlfiles - Run
/zessentials convert essentialsxfrom the console - The converter will iterate through all
.ymlfiles and import each player's data
CMI
Migrates player data from CMI to zEssentials.
Data Migrated
| Data Type | Details |
|---|---|
| Users | Player UUID and username |
| Economy | Player money balances |
| Homes | All player homes with full location data |
How It Works
The converter reads from CMI's SQLite database file (cmi.sqlite.db). This file must be placed in the plugins/zEssentials/ folder before running the converter.
Home locations in CMI are stored as serialized strings. The converter parses these strings to extract the world name, coordinates, yaw, and pitch for each home.
Prerequisites
- Copy
cmi.sqlite.dbfrom the CMI plugin folder intoplugins/zEssentials/ - zEssentials must be configured with SQL storage
Usage
- Copy the
cmi.sqlite.dbfile toplugins/zEssentials/ - Run
/zessentials convert cmifrom the console - The converter will read the CMI database and import users, balances, and homes
CoinsEngine
Migrates multi-currency balances from CoinsEngine to zEssentials.
Data Migrated
| Data Type | Details |
|---|---|
| Economy | All multi-currency balances per player |
How It Works
The converter reads from two sources:
plugins/CoinsEngine/data.db-- The SQLite database containing player balance dataplugins/CoinsEngine/currencies/*.yml-- Currency configuration files used to determine the column names in the database
Each currency defined in CoinsEngine maps to a column in the database. The converter reads the column names from the currency configuration files and extracts the corresponding balance values for each player.
Prerequisites
- The CoinsEngine data file must be present at
plugins/CoinsEngine/data.db - Currency configuration files must be present at
plugins/CoinsEngine/currencies/ - All currencies must already exist in your zEssentials economy configuration before running the converter. Create matching currencies in zEssentials first, then run the migration.
- zEssentials must be configured with SQL storage
Usage
- Ensure
plugins/CoinsEngine/data.dbandplugins/CoinsEngine/currencies/are accessible - Create all matching currencies in the zEssentials economy module configuration
- Run
/zessentials convert coinsenginefrom the console - The converter will map each CoinsEngine currency to its zEssentials equivalent and import all balances
HuskHomes
Migrates player data from HuskHomes to zEssentials.
Data Migrated
| Data Type | Details |
|---|---|
| Users | Player UUID and username |
| Homes | All player homes with full location data |
How It Works
The converter reads from HuskHomes' SQLite database (HuskHomesData.db) if the file is present in plugins/zEssentials/, otherwise it reads the HuskHomes tables from the zEssentials database (useful when both plugins share the same MySQL database). The converter reads four tables:
huskhomes_users-- Contains player UUIDs and usernameshuskhomes_homes-- Contains home names and owner referenceshuskhomes_saved_positions-- Links each home to a positionhuskhomes_position_data-- Contains the actual coordinates (world, x, y, z, yaw, pitch)
These tables are combined to reconstruct each player's complete home data.
Prerequisites
- Either copy
HuskHomesData.dbfrom the HuskHomes plugin folder intoplugins/zEssentials/, or ensure zEssentials can access the existing HuskHomes database tables - zEssentials must be configured with SQL storage
Usage
- Copy the
HuskHomesData.dbfile toplugins/zEssentials/(or configure access to the shared database) - Run
/zessentials convert huskhomesfrom the console - The converter will combine the users, homes, and positions tables and import all player home data
PlayerVaultX
Migrates vault items from PlayerVaultX to zEssentials.
Data Migrated
| Data Type | Details |
|---|---|
| Vaults | All player vault contents (items) |
How It Works
The converter reads from PlayerVaultX's flat-file storage located at plugins/PlayerVaults/newvaults/. Each file contains a player's vault data with items stored as Base64-encoded ItemStack arrays using the CardboardBoxSerialization format.
The converter decodes each Base64 string back into Minecraft ItemStack objects and imports them into the zEssentials vault system.
Prerequisites
- PlayerVaultX data files must be present at
plugins/PlayerVaults/newvaults/ - The PlayerVaults plugin must be enabled on the server (required for the
CardboardBoxSerializationdeserialization classes) - zEssentials must be configured with SQL storage
Usage
- Ensure the PlayerVaults plugin is installed and enabled on the server
- Verify that
plugins/PlayerVaults/newvaults/contains the player vault.ymlfiles - Run
/zessentials convert playervaultxfrom the console - The converter will decode and import all vault items for each player
AxVaults
Migrates vault items from AxVaults to zEssentials.
Data Migrated
| Data Type | Details |
|---|---|
| Vaults | All player vault contents (items) |
How It Works
The converter reads vault data directly from the AxVaults database. It uses Java reflection to access the AxVaults plugin's internal database connection, then queries the vault tables to retrieve all stored items for each player.
Prerequisites
- The AxVaults plugin must be enabled on the server (required for database connection access via reflection)
- zEssentials must be configured with SQL storage
Usage
- Ensure the AxVaults plugin is installed and enabled on the server
- Run
/zessentials convert axvaultsfrom the console - The converter will access the AxVaults database connection and import all vault items
Sunlight
Migrates player data from Sunlight to zEssentials.
Data Migrated
| Data Type | Details |
|---|---|
| Users | Player UUID and username |
| Homes | All player homes with full location data |
How It Works
The converter reads from Sunlight's SQLite database (data.db). This file must be placed in the plugins/zEssentials/ folder before running the converter.
Sunlight stores location data in a different format than zEssentials. The converter handles the format translation:
| Sunlight Format | zEssentials Format |
|---|---|
x, y, z, pitch, yaw, world | world, x, y, z, yaw, pitch |
The converter remaps the fields to match the zEssentials location structure during import.
Prerequisites
- Copy
data.dbfrom the Sunlight plugin folder intoplugins/zEssentials/ - zEssentials must be configured with SQL storage
Usage
- Copy the
data.dbfile toplugins/zEssentials/ - Run
/zessentials convert sunlightfrom the console - The converter will read the Sunlight database, translate the location format, and import users and homes
Summary
| Converter | Users | Economy | Homes | Vaults | Source Format | File Placement |
|---|---|---|---|---|---|---|
| EssentialsX | Yes | Yes | Yes | -- | Flat-file YAML | plugins/Essentials/userdata/ (in-place) |
| CMI | Yes | Yes | Yes | -- | SQLite | Copy cmi.sqlite.db to plugins/zEssentials/ |
| CoinsEngine | -- | Yes | -- | -- | SQLite + YAML | plugins/CoinsEngine/ (in-place) |
| HuskHomes | Yes | -- | Yes | -- | SQLite / MySQL | Copy HuskHomesData.db to plugins/zEssentials/ or use a shared database |
| PlayerVaultX | -- | -- | -- | Yes | Flat-file YAML (Base64) | plugins/PlayerVaults/newvaults/ (in-place) |
| AxVaults | -- | -- | -- | Yes | Database (via reflection) | Plugin must be enabled |
| Sunlight | Yes | -- | Yes | -- | SQLite | Copy data.db to plugins/zEssentials/ |
All converters require an SQL storage (SQLITE, MYSQL, MARIADB or HIKARICP) to be configured in zEssentials. The JSON storage cannot be used as the target storage for migrations.