Next-Gen Custom Ender Chest - Async, Multi-Storage (MySQL, H2, YML) & Folia Support icon

Next-Gen Custom Ender Chest - Async, Multi-Storage (MySQL, H2, YML) & Folia Support -----

The recode version of Custom EnderChest



Next-Gen Custom Ender Chest
The ultimate, high-performance, and fully customizable Ender Chest solution for modern servers. Built from the ground up for Paper & Folia.
Join support discord: https://discord.gg/sGZ2QSMDEg

Overview
  • Tired of basic Ender Chest plugins that lag your server, lack features, or don't support modern server software? Next-Gen Custom Ender Chest is a complete rewrite of the classic concept, engineered for the demands of today's high-performance servers.
  • Our plugin offers a powerful, flexible, and completely asynchronous experience, ensuring zero lag while providing your players with permission-based Ender Chests. Whether you're running a single server or a large network, our multi-storage backend has you covered.
⭐ Features
Permission-Based Sizes: Easily configure up to 6 different Ender Chest sizes, granted to players via permission nodes (CustomEnderChest.level.0 to CustomEnderChest.level.5).
⚡ High-Performance & Asynchronous: All data operations (loading and saving) are handled asynchronously, meaning your server's performance will never be affected, even with hundreds of players online. Flexible Storage System: You choose how to store your data!
  • MySQL: Perfect for multi-server networks (BungeeCord/Velocity) to sync player data seamlessly.
  • H2: A fast, file-based database for single servers. Offers better performance than YML with zero setup.
  • YML: Simple and easy to edit manually, saving each player's data in a separate file.
Folia Compatible: Built with the future in mind. Our scheduler and data handling logic are fully compatible with Folia's multi-threaded environment, something very few plugins offer.
Fully Customizable (MiniMessage): Customize all messages, prefixes, and even inventory titles using the powerful MiniMessage format. Support for gradients, hex colors, and legacy codes (&c) is built-in.
Multi-Language Support: Create and switch between different language files (lang_en.yml, lang_vi.yml, etc.) with a simple change in the config.
Powerful Admin Commands: Reload the plugin, open/delete any player's chest (online or offline), and manage the plugin with ease.
Easy Migration: A simple command (/cec importlegacy) allows you to import all player data from Custom EnderChest, file-based versions of this plugin.
Overflow Items: Save items player on enderchest if player got downgrade permission and the items outsize range permission limit, it would be saved and comeback if player got permission again.
Sync Inventory: Admin can open enderchest player in realtime and can modify their inventory when they open enderchest.
Data Lock: Lock data after player disconnect server to prevent some dupe and corrupt file in some case.

Commands & Permissions
Player Commands:
Code (Text):
/ec - Opens your Ender Chest. Aliases: /ec, /cec, /customenderchest Permission: CustomEnderChest.level.0 (or higher)
Admin Commands:
Code (Text):
/cec reload - Reloads the config and language files. Permission:
CustomEnderChest.admin
/cec open <player> // Open enderchest inventory player
/cec delete <player> // Delete all items in enderchest player
/cec importlegacy // Imports data from the old plugin version's format. Permission: CustomEnderChest.admin
Size Permissions:
Code (Text):

CustomEnderChest.level.0 - 9 Slots (1 row) CustomEnderChest.level.1 - 18 Slots (2 rows) CustomEnderChest.level.2 - 27 Slots (3 rows) CustomEnderChest.level.3 - 36 Slots (4 rows) CustomEnderChest.level.4 - 45 Slots (5 rows) CustomEnderChest.level.5 - 54 Slots (6 rows)

Configuration
The plugin is extremely easy to configure. You can control everything from the storage type to every sound effect.
Code (YAML):

# -------------------------------------------------- #
#      Configuration for CustomEnderChest v2.0       #
# -------------------------------------------------- #
# Thank you for using the refactored version!
# All messages, titles, and user-facing text are now managed in the /lang directory.
# General plugin settings
general
:
  # Select the language file to use.
  # Example: "en" will load "lang_en.yml", "vi" will load "lang_vi.yml".
  # Make sure the corresponding file exists in the plugin's /lang folder.
  locale
: "en"
  # Set to true to enable debug logging. Useful for troubleshooting.
  debug
: false
  # Set to true to enable bStats metrics, which helps the developer understand how the plugin is used.
  # Set to false to disable it.
  bstats-metrics
: true
# Database settings
storage
:
  # Storage type. Options:
  # yml     - Stores data in YAML files, no external setup needed.
  # h2      - (Default & Recommended for single servers) Fast, lightweight, stores data in a single file, no external setup needed.
  # mysql   - (Recommended for multi-server networks) Requires a separate MySQL server.
  type
: "h2"
  # The table name that will be used in the database.
  table_name
: "custom_enderchests"
  # Periodically auto-save data for online players.
  # This helps minimize data loss in case of a server crash.
  # Time is in seconds.
  auto-save-interval-seconds
: 300 # Default is 5 minutes
  # Settings for MySQL (only apply if `type` is "mysql")
  mysql
:
    host
: "127.0.0.1"
    port
: 3306
    database
: "enderchest_db"
    username
: "user"
    password
: "password"
    # Enable/disable SSL encryption for the connection.
    use-ssl
: false
  # Settings for the Connection Pool (HikariCP).
  # These settings optimize database connection performance.
  # You generally don't need to change these unless you know what you're doing.
  pool-settings
:
    max-pool-size
: 10
    min-idle
: 5
    connection-timeout
: 30000 # 30 seconds
  # Automatically clean up old user data in MySQL
  auto-cleanup
:
    # Enable/disable the automatic deletion of inactive player data.
    enabled
: false
    # Number of inactive days. Data for players who have been offline for this duration will be deleted.
    inactive-days
: 90
# Ender Chest gameplay options
enderchest-options
:
  # Disable opening the custom ender chest by right-clicking an Ender Chest block.
  # Useful if you only want players to open the chest via command.
  # Note: If this option is true, don't set true for `disable-plugin-on-endechest-block` below.
  disable-enderchest-click
: true
  # Disable the plugin's functionality when interacting with an Ender Chest block.
  # The block will function as a normal vanilla Ender Chest.
  # Useful if you want to reserve the block for vanilla use only.
  # Note: If this option is true, don't set true for `disable-enderchest-click` above.
  disable-plugin-on-endechest-block
: false
# Default settings for new players
default-player
:
  # Enable this to give new players a default chest size.
  # This allows new players to use the Ender Chest block without needing a specific permission.
  enabled
: true
  # The default chest size (number of slots, must be a multiple of 9, max 54).
  # 27 equals 3 rows, the same as a vanilla Ender Chest.
  # Default permission level is CustomEnderChest.level.3 (27 slots).
  size
: 27
# Sound customization
sounds
:
  # Disable all plugin sounds if set to `true`.
  disable-all
: false
  # You can find valid sound names here:
  # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
  # (Use the names from the Enum column)
  open
:
    name
: "BLOCK_ENDER_CHEST_OPEN"
    volume
: 1.0
    pitch
: 1.0
  close
:
    name
: "BLOCK_ENDER_CHEST_CLOSE"
    volume
: 1.0
    pitch
: 1.0
  fail
:
    name
: "BLOCK_NOTE_BLOCK_PLING"
    volume
: 1.0
    pitch
: 0.5
  reload
:
    name
: "ENTITY_PLAYER_LEVELUP"
    volume
: 0.8
    pitch
: 1.5
 
Code (YAML):

# Prefix used for all messages
prefix
: "<gray>[<gradient:#C0FFEE:#B4D0FF>EnderChest</gradient>]</gray> "
messages
:
  no-permission
: "<red>You don't have permission for that.</red>"
  players-only
: "<red>This command can only be run by a player.</red>"
  reload-success
: "<green>Configuration and language files have been reloaded.</green>"
  data-still-loading
: "<yellow>Your data is still loading, please wait a moment...</yellow>"
  data-busy
: "<red>Player data is busy. Please try again shortly.</red>"
  enderchest-click-disabled
: "<red>Please use the command to open the EnderChest instead of using a chest.</red>"
  save-error
: "<red>An error occurred while saving data. Please check the console.</red>"
  invalid-player
: "<red>Invalid player name.</red>"
  # Migration messages
  migration-data-incompatible
: "<yellow>Warning: Your Ender Chest data is incompatible with the new server version (1.21.5+)."
  migration-data-cleared
: "<yellow>Your Ender Chest has been reset due to incompatibility. Old data is still preserved in the database."
  migration-contact-admin
: "<gray>Please contact an admin if you need item recovery."
  # Overflow messages
  overflow-items-saved
: "<yellow>⚠ Some items beyond your permission have been saved to overflow storage."
  overflow-will-restore
: "<gray>They will be automatically restored when you upgrade your Ender Chest."
  overflow-items-restored
: "<green>✓ Restored <count> items from overflow storage!"
command
:
  usage
: "<red>Usage: <gray>/<label> <usage>"
  player-not-found
: "<red>Player '<player>' not found or has no data."
  delete-usage
: "<red>Usage: <gray>/<label> delete <player>"
  delete-success
: "<green>Successfully deleted Ender Chest data for <white><player></white>."
  loading-chest
: "<yellow>Loading <white><player>'s</white> Ender Chest..."
titles
:
  enderchest
: "<level> - <light_purple><player>'s Chest"
  admin_view
: "<dark_red>Admin View: <white><player>"
levels
:
  '0'
: "&fLevel 1" # 1 row (9 slots)
  '1'
: "&aLevel 2" # 2 rows (18 slots)
  '2'
: "&bLevel 3" # 3 rows (27 slots)
  '3'
: "&eLevel 4" # 4 rows (36 slots)
  '4'
: "&6Level 5" # 5 rows (45 slots)
  '5'
: "&d&lLevel 6" # 6 rows (54 slots)
import
:
  started
: "<green>Starting import from legacy flat files. This may take a while..."
  progress
: "<gray>Import progress: <yellow><processed>/<total></yellow> files processed."
  no-folder
: "<red>Could not find the old 'PlayerData' folder to import from."
  complete
: "<green>Data import complete! <white><imported></white> legacy profiles imported."
  error
: "<red>Failed to import file <yellow><file></yellow>. See console for details."
 
Code (YAML):

# Prefix dùng cho tất cả messages
prefix
: "<gray>[<gradient:#C0FFEE:#B4D0FF>Rương Ender</gradient>]</gray> "
messages
:
  no-permission
: "<red>Bạn không có quyền để làm điều này.</red>"
  players-only
: "<red>Lệnh này chỉ có thể được thực thi bởi người chơi.</red>"
  reload-success
: "<green>Đã tải lại tệp cấu hình và ngôn ngữ.</green>"
  data-still-loading
: "<yellow>Dữ liệu của bạn đang được tải, vui lòng chờ trong giây lát...</yellow>"
  data-busy
: "<red>Dữ liệu người chơi hiện đang bận. Vui lòng thử lại sau giây lát.</red>"
  enderchest-click-disabled
: "<red>Vui lòng sử dụng lệnh để mở EnderChest hay vì sử dụng rương.</red>"
  save-error
: "<red>Đã xảy ra lỗi khi lưu dữ liệu. Vui lòng kiểm tra console.</red>"
  invalid-player
: "<red>Tên người chơi không hợp lệ.</red>"
  # Migration messages
  migration-data-incompatible
: "<yellow>Cảnh báo: Dữ liệu Rương Ender của bạn không tương thích với phiên bản server mới (1.21.5+)."
  migration-data-cleared
: "<yellow>Rương Ender của bạn đã bị reset do không tương thích. Dữ liệu cũ vẫn được lưu trong database."
  migration-contact-admin
: "<gray>Vui lòng liên hệ admin nếu cần khôi phục vật phẩm."
  # Overflow messages
  overflow-items-saved
: "<yellow>⚠ Một số vật phẩm vượt quyền hạn đã được lưu vào kho dự phòng."
  overflow-will-restore
: "<gray>Chúng sẽ tự động được khôi phục khi bạn nâng cấp Rương Ender."
  overflow-items-restored
: "<green>✓ Đã khôi phục <count> vật phẩm từ kho dự phòng!"
command
:
  usage
: "<red>Sử dụng: <gray>/<label> <usage>"
  player-not-found
: "<red>Không tìm thấy người chơi '<player>' hoặc họ chưa có dữ liệu."
  delete-usage
: "<red>Sử dụng: <gray>/<label> delete <tên_người_chơi>"
  delete-success
: "<green>Đã xóa thành công dữ liệu Rương Ender của <white><player></white>."
  loading-chest
: "<yellow>Đang tải Rương Ender của <white><player></white>..."
titles
:
  enderchest
: "<level> - <light_purple>Rương của <player>"
  admin_view
: "<dark_red>Admin Xem: <white><player>"
# Tên cấp độ được dùng trong biến <level>
levels
:
  '0'
: "&fCấp 1" # 1 hàng (9 ô)
  '1'
: "&aCấp 2" # 2 hàng (18 ô)
  '2'
: "&bCấp 3" # 3 hàng (27 ô)
  '3'
: "&eCấp 4" # 4 hàng (36 ô)
  '4'
: "&6Cấp 5" # 5 hàng (45 ô)
  '5'
: "&d&lCấp 6" # 6 hàng (54 ô)
import
:
  started
: "<green>Bắt đầu nhập dữ liệu từ file cũ. Quá trình này có thể mất một lúc..."
  progress
: "<gray>Tiến trình nhập: Đã xử lý <yellow><processed>/<total></yellow> file."
  no-folder
: "<red>Không tìm thấy thư mục 'PlayerData' cũ để nhập dữ liệu."
  complete
: "<green>Nhập dữ liệu hoàn tất! Đã nhập <white><imported></white> hồ sơ."
  error
: "<red>Không thể chuyển hóa file <yellow><file></yellow>. Vui lòng kiểm tra console."
 

Installation
  1. Download the latest version.
  2. Place the .jar file into your server's plugins folder.
  3. Start your server to generate the default configuration files.
  4. Stop the server, edit config.yml and lang/lang_en.yml to your liking.
  5. Start your server again. Done!
If you have any questions or need support, please use the discussion thread or discord: maiminhdung.
Resource Information
Author:
----------
Total Downloads: 137
First Release: Jul 18, 2025
Last Update: Nov 1, 2025
Category: ---------------
All-Time Rating:
1 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings