-
Notifications
You must be signed in to change notification settings - Fork 12
Data Storage
EliteEssentials stores all persistent data in JSON files within the mod's data folder.
mods/
EliteEssentials/
config.json - Configuration settings
homes.json - Player home locations
warps.json - Server warp locations
back.json - Player back locations (previous positions)
spawn.json - Server spawn location
kits.json - Kit definitions
kit_claims.json - Player kit claim tracking
motd.json - Message of the Day content
rules.json - Server rules content
discord.json - Discord info content
autobroadcast.json - Auto broadcast configuration
first_join.json - First join tracking
Stores all player home locations indexed by player UUID.
{
"550e8400-e29b-41d4-a716-446655440000": {
"base": {
"name": "base",
"location": {
"world": "world",
"x": 100.5,
"y": 64.0,
"z": -200.5
},
"createdAt": 1704067200000
},
"mine": {
"name": "mine",
"location": {
"world": "world",
"x": 500.0,
"y": 12.0,
"z": 300.0
},
"createdAt": 1704153600000
}
}
}Structure:
- Top-level keys are player UUIDs
- Each player has a map of home name to home object
- Home names are stored lowercase
-
createdAtis Unix timestamp in milliseconds
Stores all server warp locations.
{
"shop": {
"name": "shop",
"location": {
"world": "world",
"x": 0.0,
"y": 64.0,
"z": 0.0
},
"permission": "ALL",
"createdBy": "EliteScouter",
"createdAt": 1704067200000
},
"arena": {
"name": "arena",
"location": {
"world": "world",
"x": 1000.0,
"y": 80.0,
"z": 1000.0
},
"permission": "OP",
"createdBy": "Admin",
"createdAt": 1704153600000
}
}Structure:
- Top-level keys are warp names (lowercase)
-
permissionis eitherALLorOP -
createdByis the player name who created the warp -
createdAtis Unix timestamp in milliseconds
Stores player back location history.
{
"550e8400-e29b-41d4-a716-446655440000": [
{
"world": "world",
"x": 100.0,
"y": 64.0,
"z": -200.0
},
{
"world": "world",
"x": 50.0,
"y": 70.0,
"z": -100.0
}
]
}Structure:
- Top-level keys are player UUIDs
- Each player has an array of locations (most recent first)
- Array size is limited by
back.maxHistoryconfig
All location objects share the same structure:
{
"world": "world",
"x": 100.5,
"y": 64.0,
"z": -200.5
}| Field | Type | Description |
|---|---|---|
world |
string | World/dimension name |
x |
double | X coordinate |
y |
double | Y coordinate (height) |
z |
double | Z coordinate |
Stores the Message of the Day content with color code support.
{
"lines": [
"",
"&e&lWelcome to {server}, {player}!",
"&7There are &a{playercount}&7 players online.",
"&7You are in world &b{world}&7.",
"",
"&6> Server Resources:",
"&7* Type &a/help&7 for commands",
"&7* Type &a/rules&7 for rules",
"",
"&7EliteEssentials is brought to you by: &bEliteScouter",
"&9https://github.com/EliteScouter/EliteEssentials",
""
]
}Structure:
- Array of strings, each representing a line
- Supports color codes (
&a,&c,&l,&o,&r) - Supports placeholders:
{player},{server},{world},{playercount} - URLs are automatically detected and made clickable
Stores the server rules content with color code support.
{
"lines": [
"",
"&c&l========================================",
"&e&l SERVER RULES",
"&c&l========================================",
"",
"&a1. &7Be Respectful to others",
"&a2. &7No Cheating / Hacking",
"&a3. &7No Griefing",
"&a4. &7Have fun!",
"",
"&6Breaking these rules may result in a ban.",
""
]
}Structure:
- Array of strings, each representing a line
- Supports color codes for formatting
- Fully customizable content
Tracks which players have joined the server before.
{
"players": [
"550e8400-e29b-41d4-a716-446655440000",
"6ba7b810-9dad-11d1-80b4-00c04fd430c8"
]
}Structure:
- Array of player UUIDs who have joined before
- Used to determine if a player is joining for the first time
- Enables special first-join messages
Stores the server discord information with color code support.
{
"lines": [
"",
"&b&l========================================",
"&e&l JOIN OUR DISCORD!",
"&b&l========================================",
"",
"&aWELCOME TO Our Server!",
"",
"&7Please join our discord at:",
"&bhttps://discord.gg/YourInvite",
"",
"&7Click the link above to join!",
""
]
}Structure:
- Array of strings, each representing a line
- Supports color codes for formatting
- URLs are automatically detected and made clickable
- Fully customizable content
Stores automatic broadcast configurations.
{
"broadcasts": [
{
"id": "example",
"enabled": true,
"intervalSeconds": 600,
"prefix": "",
"random": false,
"requirePlayers": true,
"messages": [
"&5&l[Discord]&7 - &fJoin our community!\n&7Chat, updates & support.\n&bhttps://discord.gg/YourInvite",
"&6&l[Tip]&7 - &fNeed help?\n&7Check out &e/help &7for commands."
]
}
]
}Structure:
-
broadcasts- Array of broadcast group objects - Each broadcast group has:
-
id- Unique identifier -
enabled- Whether this broadcast is active -
intervalSeconds- Time between broadcasts -
prefix- Optional prefix (supports color codes) -
random- If true, picks random message; if false, cycles sequentially -
requirePlayers- Only broadcast when players are online -
messages- Array of messages (use\nfor multi-line)
-
-
Homes - Saved immediately after each
/sethomeor/delhome -
Warps - Saved immediately after each
/setwarpor/delwarp - Back - Saved periodically and on server shutdown
-
MOTD - Loaded on startup and when
/ee reloadis used -
Rules - Loaded on startup and when
/ee reloadis used -
Discord - Loaded on startup and when
/ee reloadis used -
Auto Broadcast - Loaded on startup and when
/ee reloadis used - First Join - Saved immediately when a new player joins
- All Data - Saved on server shutdown
EliteEssentials automatically saves all data when:
- The server shuts down gracefully
- A home or warp is created/deleted
- The
/eliteessentials reloadcommand is run
- Data files use atomic writes to prevent corruption
- Existing data is preserved during mod updates
- Invalid JSON entries are logged and skipped (not deleted)
It is recommended to regularly backup the mods/EliteEssentials/ folder, especially:
- Before updating EliteEssentials
- Before making major configuration changes
- As part of your regular server backup routine
# Linux/Mac
cp -r mods/EliteEssentials/ backups/EliteEssentials-$(date +%Y%m%d)/
# Windows
xcopy mods\EliteEssentials backups\EliteEssentials-%date:~-4,4%%date:~-10,2%%date:~-7,2% /E /IYou can manually edit the JSON files while the server is stopped. Be careful to:
- Stop the server first - Editing while running may cause data loss
- Validate JSON syntax - Use a JSON validator before saving
- Maintain structure - Keep the same field names and types
- Use valid UUIDs - Player UUIDs must be valid format
Player UUIDs can be found:
- In server logs when players join
- Using online UUID lookup tools with player names
- In the existing data files
When updating EliteEssentials:
- Existing data files are preserved
- New fields are added with default values
- Deprecated fields are ignored (not deleted)
No manual migration is required when updating.
- Check file permissions on the data folder
- Ensure the server has write access
- Check server logs for error messages
- Verify disk space is available
If a data file becomes corrupted:
- Stop the server
- Check the file for JSON syntax errors
- Fix the syntax or restore from backup
- Start the server
- Check if the data folder location changed
- Look for data in both old and new locations
- Manually copy data files if needed
- Data files are loaded into memory on server start
- Large numbers of homes/warps may increase memory usage
- Consider periodic cleanup of unused data for very large servers
EliteEssentials by EliteScouter | GitHub | Report Issues