File Details
EliteEssentials-2.0.0.jar
- R
- Mar 27, 2026
- 8.33 MB
- 314
- Early Access
File Name
EliteEssentials-2.0.0.jar
Supported Versions
- Early Access
2.0.0 - 2026-03-26
Thank you all for using EliteEssentials, we're really proud of how far this addon has come, and that's thanks to every one of you and the suggestions you've sent in. This release brings H2/SQL storage support; fresh installs will default to H2, and existing users can migrate from JSON to H2 or MySQL using /eemigration. There's also a brand new /admin UI, the Hytale UI system is not exactly my strong suit, so please go easy on me. If you have any feedback or suggestions, drop them in Discord or GitHub.
Huge thanks again to everyone using EliteEssentials!
Fixed
- Hytale API compatibility — updated all calls to match Hytale's latest API changes:
PacketHandler.disconnect()now requiresMessageinstead ofString— wrapped all disconnect calls withMessage.raw()across ban, tempban, IP ban, warn, kick, and Admin UI pagesPlayerSetupConnectEvent.setReason()now requiresMessageinstead ofString— updated ban/tempban/IP ban connection denial inConnectListenerPlayer.sendInventory()removed from the API — removed all calls in kit claiming, starter kits, clear inventory, and kit selection GUI. Inventory changes are now applied directly without explicit sync- Migrated from deprecated
Inventoryclass to new ECS-basedInventoryComponentsystem — inventory sections (hotbar, storage, armor, utility, tools, backpack) are now accessed as individual ECS components viastore.getComponent()instead of the monolithicplayer.getInventory(). Updated across clear inventory, kit claiming, kit creation, repair, starter kits, and kit selection GUI manifest.jsonnow specifiesServerVersionmatching the build target instead of wildcard*, eliminating the "does not specify a target server version" warning on startup. Version is driven fromgradle.propertiesfor single-source-of-truth updates
Added
- SQL database storage support — EliteEssentials can now persist all data to a SQL database instead of JSON files. Choose between three storage backends via
config.json:"json"(default) — existing JSON file storage, no changes to current behavior"h2"— embedded H2 database, zero setup required. Database file stored in the plugin data folder. Great for single-server setups that want SQL performance and data integrity without installing external software"mysql"— external MySQL/MariaDB database for multi-server networks. Player data is shared across all connected servers. Reads fresh data on player join to avoid stale caches
- Storage provider abstraction — all services now depend on
PlayerStorageProviderandGlobalStorageProviderinterfaces instead of concrete storage classes. JSON and SQL backends implement these interfaces identically - Connection pooling — SQL storage uses HikariCP for efficient connection management. Pool size, idle connections, and timeout are all configurable
- Automatic schema management — SQL tables and indexes are created automatically on first startup. Schema versioning via a metadata table supports incremental migrations in future updates
- Async SQL writes — write operations run on a background thread to avoid blocking the server main thread. In-memory cache for online players matches existing JSON behavior
- JSON-to-SQL migration command —
/eemigration sql [force]reads all existing JSON data (players, warps, spawns, first-join spawn) and writes it into the configured SQL database- Reports progress during migration (records processed)
- Continues on individual record failures, logging the specific UUID/identifier
- Reports summary on completion (total migrated, failed, elapsed time)
- Refuses to run when
storageTypeis"json" - Checks if target tables are empty before migrating; use
forceto overwrite
- Configurable table prefix — all SQL table names use a configurable prefix (default
ee_) to avoid conflicts when sharing a database with other plugins - Graceful shutdown — all pending SQL writes are flushed before the connection pool closes. Pool waits up to 30 seconds for active queries to complete
- Multi-server freshness — when using MySQL, player data is loaded fresh from the database on join rather than relying on stale cache. Data is flushed to DB and evicted from cache on disconnect
- Post-migration cleanup —
/eemigration cleanupmoves migrated JSON files (players/,warps.json,spawn.json,firstjoinspawn.json,player_index.json) into abackup/subfolder. Only available whenstorageTypeis not"json". Keeps the data folder clean after switching to SQL - Smart storage defaults for new installs — fresh installs (no existing data files) now default to
"h2"storage for better out-of-the-box performance. Existing installs upgrading to 2.0.0 keep"json"unless manually changed. Ifconfig.jsonis missing but JSON data files exist (e.g.player_index.json,players/,warps.json,spawn.json), the plugin stays on"json"to protect existing data
Configuration
- New
storagesection inconfig.json:
"storage": {
"storageType": "json",
"mysql": {
"host": "localhost",
"port": 3306,
"database": "eliteessentials",
"username": "root",
"password": "",
"tablePrefix": "ee_",
"connectionPool": {
"maximumPoolSize": 10,
"minimumIdle": 2,
"connectionTimeout": 30000
}
}
}
storageTypeoptions:"json"(default, file-based),"h2"(embedded SQL database, stored in plugin folder),"mysql"(remote MySQL/MariaDB server)- The
mysqlsection is only used whenstorageTypeis"mysql" - Unrecognized
storageTypevalues log an error and fall back to"json" - Schema migration failures log an error and fall back to
"json"to prevent data corruption