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.

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.
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

/cec delete #Next update

/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"

# 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.
  disable-enderchest-click
: false

# 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):

messages
:
  prefix
: "<gray>[<gradient:#C0FFEE:#B4D0FF>EnderChest</gradient>]</gray> "
  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>"

command
:
  usage
: "<red>Usage: <gray>/<label> <usage>"
  player-not-found
: "<red>Player '<player>' not found or has no data."
  delete-success
: "<green>Successfully deleted Ender Chest data for <white><player></white>."
  loading-chest
: "<yellow>Loading <white><player>'s</white> Ender Chest..."

titles
:
  # Placeholders: <player>, <level>
  enderchest
: "<level> &8- <light_purple><player>'s Chest"
  admin_view
: "<dark_red>Admin View: <white><player>"

levels
:
  '0'
: "&fLevel 1"
  '1'
: "&aLevel 2"
  '2'
: "&bLevel 3"
  '3'
: "&eLevel 4"
  '4'
: "&6Level 5"
  '5'
: "&d&lLevel 6"

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):

# File Ngôn ngữ Tiếng Việt cho CustomEnderChest

messages
:
  prefix
: "<gray>[<gradient:#C0FFEE:#B4D0FF>Rương Ender</gradient>]</gray> "
  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>"

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-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
:
  # Biến thay thế: <player>, <level>
  enderchest
: "<level> - <light_purple>Rương của <player>"
  # Biến thay thế: <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'
: "&aCấp 2"
  '2'
: "&bCấp 3"
  '3'
: "&eCấp 4"
  '4'
: "&6Cấp 5"
  '5'
: "&d&lCấp 6"

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ơ, bỏ qua <gray><skipped></gray>."
  error
: "<red>Không thể nhập 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: 32
First Release: Jul 18, 2025
Last Update: Jul 19, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings