Compatibility
Minecraft: Java Edition
Platforms
Creators
Details
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.
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
Click to view Commands & Permissions
Player Commands: /ec - Opens your Ender Chest.
Aliases: /ec, /cec, /customenderchest
Size Permissions:
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)
Admin Commands:
/cec reload - Reloads the config and language files
/cec importlegacy - Imports data from the old plugin version's format.
/cec delete <player> - Delete all items in enderchest player
/cec open <player> - Open EnderChest Player
Permission: CustomEnderChest.admin
Configuration
The plugin is extremely easy to configure. You can control everything from the storage type to every sound effect.# -------------------------------------------------- #
# 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
Click to view lang/lang_en.yml
# 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."
Click to view lang/lang_vi.yml
# 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
- Download the latest version.
- Place the .jar file into your server's plugins folder.
- Start your server to generate the default configuration files.
- Stop the server, edit config.yml and lang/lang_en.yml to your liking.
- Start your server again. Done!
Support
If you have any questions or need support, please use the discussion thread or discord: https://discord.gg/sGZ2QSMDEg.


