All Classes and Interfaces

Class
Description
JDBC-backed StorageBackend shared by all three dialects.
Which native upsert conflict clause the dialect speaks.
Write-back scheduling for the lazy cache: an async repeating timer at the configured database.autosave-interval (default 3m) that calls CachedStorage.flush() and then CachedStorage.evictIdle() (releasing owners who are offline and fully flushed), plus the per-player write-back a few seconds after a quit (AutosaveService.flushQuitterLater(java.util.UUID)).
Migrates vaults from an AxVaults installation into EnhancedEchest's storage.
Outcome of a migration run.
Reads an AxVaults (Artillex-Studios) database directly and decodes its vault contents into Bukkit ItemStack arrays, ready to be re-encoded into EnhancedEchest's own storage.
A single AxVaults vault as decoded for migration.
Takes scheduled, self-pruning snapshots of the database.
Lazy-loading write-back cache over the SQL backend, and the EnderChestStorage the rest of the plugin sees.
A bounded, batched audit pipeline designed for busy servers.
Admin chest management: /ee add|resize|delete <player> ...
Builds the /ec list management dialogs using Paper's (experimental) Dialog API.
The owner/permission context a per-chest detail dialog operates in.
Whether an ender chest is a permanent ("normal") chest, a transient overflow ("temp") chest, or a permission-granted chest.
Marker holder for the simple 27-slot /eclist inventory menu — the alternative to the Dialog-API list, selected with enderchest.list-menu: inventory.
Builds the simple /eclist inventory menu — the alternative to ChestDialogs' Dialog-API list, chosen with enderchest.list-menu: inventory.
Drives the simple 27-slot /eclist inventory menu (ChestListHolder).
Decides what to open for /ec, /eclist, right-click and the admin /ee view, and orchestrates the management dialogs.
Owns the shared-live-inventory registry and the dupe-safety contract for every open chest: this is the single closed class that mutates the ChestSessionManager.sessions map, and it does so only on the ChestSessionManager.onGlobal(java.lang.Runnable) bookkeeping thread.
Item-moving chest operations: shrink-spill, delete (spill or force), bulk delete, and the reverse move that pulls a temp chest back into a newly granted chest (ChestSpillService.reclaimTempInto(java.util.UUID, int)).
Lightweight description of one of a player's ender chests, used to build the /ec list management dialog and to decide which chest /ec opens.
/ee transfer <from> <to> <index|name|all> [override|temp] — moves a player's ender chests onto another account when someone switches accounts.
Moves a player's ender chests onto another account (/ee transfer) for the "I switched account" case.
What to do when the destination already holds items in chests this transfer would replace.
 
Central registry for all YAML key renames across plugin versions.
Encodes and decodes a 54-slot inventory for DB storage.
Coordination contract that makes the lazy write-back cache safe to run on several servers sharing one database (cross-server.enabled).
Thrown by CrossServerCoordinator.acquireOwner(java.util.UUID) when an owner's lock could not be obtained within the acquire timeout — typically because the player is still online on another server, or that server is still writing their data back.
Migrates ender chests from a CustomEnderChest (maiminhdung) installation into EnhancedEchest's storage.
Outcome of a migration run.
Reads a CustomEnderChest (maiminhdung) installation's storage.type: yml player files and decodes them into Bukkit ItemStack arrays, ready to be re-encoded into EnhancedEchest's own storage.
One player's CustomEnderChest data as decoded for migration.
Copies all EnhancedEchest data from an old database backend into the plugin's active backend (/ee import).
Outcome of an import run: how many rows landed in the destination.
Shared daemon thread-pool for all asynchronous storage work (EnhancedEchest-db).
Parses and formats human-friendly durations.
One unit component of a formatted duration: a whole count of the unit named by unit (one of year month week day hour minute second).
Triggers the vanilla ender chest open/close lid animation and sound.
A single ender chest belonging to a player, as loaded from storage for opening.
 
Marker holder attached to every custom enderchest Inventory.
 
All methods execute synchronously on the calling thread.
Lightweight reference to an expired chest, returned by EnderChestStorage.findExpired(long).
One known player for the in-memory name index: their UUID, last recorded name, and last-seen time.
 
 
Adventure Translator backing EnhancedEchest's per-viewer localization.
Periodically scans for expired chests and disposes of them.
FastStats-backed Telemetry: one BukkitContext carrying custom metrics and error tracking.
Catalog of pickable chest icons, backed by the server's Material registry, plus helpers to render a chosen icon as an Adventure sprite object component — the icon shown inside Dialog action buttons (since 1.21.9 / Adventure 4.25.0, no resource pack required).
One pickable icon: a material with its precomputed display name, reusable sprite component, and a translatable name component.
/enhancedechest import — opens the DB→DB import dialog so an admin can copy all EnhancedEchest data from an old database backend into the plugin's active backend.
Auto-migrates un-migrated players on join when migration mode is ON.
Loads the plugin's language files and exposes them as Adventure Components.
/enhancedechest migrate axvaults [all|<player>] — imports vaults from an AxVaults database into EnhancedEchest.
/enhancedechest migrate customenderchest [all|<player>] — imports ender chests from a CustomEnderChest installation into EnhancedEchest.
/enhancedechest migrate playervaultsx [all|<player>] — imports vaults from a PlayerVaultsX installation into EnhancedEchest.
/enhancedechest migrate vanilla [all|<player>] — migrates online players' vanilla ender chests into their EnhancedEchest chest #1.
Orchestrates migration of vanilla enderchest data into the plugin's storage.
 
Grants and revokes ender chests based on a player's permissions.
Both permission-derived targets, resolved together: the PERM-chest target as size → count and the base-chest size override (the largest valid default_size permission held, or 0 for none).
In-memory index of every player name the plugin has ever recorded (the players.username column — see PlayerSettingsCache#markSeenAsync), used to answer offline-player tab-completion and name resolution from memory instead of hitting the DB on every keystroke.
One recorded player: their current known name, UUID, and the epoch-ms they were last seen (0 when never recorded — a row that predates last-online tracking).
Backstop detach when the player disconnects while the custom GUI is open.
Resolves a player name to a UUID for admin commands, working for offline players.
Per-player state, persisted one row per player in players.
Write-through read cache of per-player settings, keyed by UUID.
Drives the lifecycle of per-player transient state around join/quit: Join: pin the player in the lazy storage cache (never evicted while online), then preload their settings — the preload's loadSettings call is also what materializes the player's chest rows into the cache, so it doubles as the join prefetch and their first chest open touches no database. Quit: stamp last_online, evict the settings cache entry and the sort-cooldown timestamp, unpin the storage cache entry, and schedule the delayed write-back + eviction of their rows (AutosaveService.flushQuitterLater(java.util.UUID)) — so a leaver's changes reach the database within seconds and their memory is freed.
Migrates vaults from a PlayerVaultsX installation into EnhancedEchest's storage.
Outcome of a migration run.
Reads a PlayerVaultsX installation's flat-file vault data and decodes it into Bukkit ItemStack arrays, ready to be re-encoded into EnhancedEchest's own storage.
A single PlayerVaultsX vault as decoded for migration.
 
TLS mode for a remote database connection, mirroring the drivers' own sslMode/sslmode levels.
How the /eclist chest list is rendered.
 
Redis implementation of CrossServerCoordinator: one lock key per owner (<prefix>lock:<uuid> holding this server's id, TTL-protected and heartbeat-extended) plus one pub/sub channel (<prefix>events) used to hand owners over quickly.
 
Task scheduler built directly on Paper's own region-aware scheduler API (io.papermc.paper.threadedregions.scheduler.*).
Opens an EnhancedEchest database of any supported dialect read-only and reads its players and enderchests tables (under the active install's database.table-prefix) verbatim, for the /ee import DB→DB copy.
The two tables read from the source, kept in memory (data is modest — see the import plan).
Connection details for the source database of a /ee import DB→DB conversion, as filled in by the import dialog.
 
The SQL half of the lazy-load + write-back cache model: the narrow contract CachedStorage needs from a database backend.
Primary key of one enderchests row, used to flush a deletion.
Primary key + kind of one expired enderchests row, returned by StorageBackend.findExpired(long).
One player's full cache-miss load: their enderchests rows plus their (nullable) players row.
 
Thin async wrapper over EnderChestStorage: every method dispatches a single synchronous storage call onto the shared DbExecutor.
Plugin-facing telemetry facade.
Reminds a player on join, when they still have items sitting in one or more temporary chests, to collect them before those chests expire (config temp-enderchest.join-notify, default on).
Tells a player where their temporary-chest items went when ChestSpillService.reclaimTempInto(java.util.UUID, int) moved them into a newly granted chest (temp-enderchest.reclaim-notify, default on).
 
 
 
Generic YAML migrator that runs on startup for every config/language file.
A key rename for one specific version upgrade.