Sueta

Next-Gen Custom Ender Chest - Async, Multi-Storage (MySQL, H

2.1.2

The recode version of Custom EnderChest

·Plugin

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 strict 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 vast Velocity proxy network, our multi-storage backend has you completely covered.

⭐ Features
️ Permission-Based Sizes: Easily configure up to 6 different Ender Chest sizes, granted to players dynamically via permission nodes ( CustomEnderChest.level.0 to CustomEnderChest.level.5). The chest will automatically resize instantly when their permission changes!

⚡ High-Performance & Asynchronous: All database queries, loading, and saving sequences are handled asynchronously. Your server's TPS will never drop, even with hundreds of players spamming commands.

Flexible Storage System: You choose how to securely store your data!
- MySQL: Perfect for multi-server networks (BungeeCord/Velocity) to sync player data seamlessly across servers.
- H2: A fast, high-performance local database for single servers. Offers drastically better TPS than YML with zero setup required.
- YML: Simple, classic, and manually editable, saving each player's data in a separate file.

Folia Compatible: Built with the future in mind. Our scheduler and data handling logic are explicitly built for Folia's multi-threaded Region Thread environment!

Fully Customizable UI: Customize all messages, prefixes, and inventory pop-up titles using the powerful MiniMessage format. Gradients, hex colors, and legacy codes (&c) are all natively supported. Drop-in support for multiple languages (lang_en, lang_vi, etc.).

Dynamic Overflow Protection: If a player's VIP rank expires and their chest is downgraded, items exceeding their new size limit are NOT deleted! They are safely moved into a secure Overflow Storage. Players can manually view and claim these items using the

/ec overflow

command, or they will automatically be restored back into the Ender Chest when the player upgrades their chest size again. Includes customizable Vault retrieval fees and automatic expiration timers!

Real-Time Admin Sync: Admins can view and interact with any player's Ender Chest in real-time. Any item you put in or take out will instantly mirror directly onto the player's screen!

Anti-Dupe Data Lock: Robust, thread-safe asynchronous locks guarantee that quit-saving, rapid relogging, and cross-server Bungee transfers are completely immune to item duplication and corruption.

Database Migration & Stats Validation: Move smoothly between databases (YML <-> H2 <-> MySQL) using the powerful

/cec migrate

command. Run

/cec stats validate

to quickly scan and validate the integrity of stored player data!

Commands & Permissions

Click to view Commands & Permissions

Player Commands:

/cec - Opens your Ender Chest. (Aliases: /ec, /customenderchest)
/cec overflow - Opens your Overflow Storage to retrieve saved items.

General & Interaction Permissions:

CustomEnderChest.commands - Allows using command aliases (/cec, /ec, /customec) to open your Ender Chest (needed if allow-command is set to false in config).
CustomEnderChest.command.open.self - Allows opening your chest via /cec open.
CustomEnderChest.block.open - Allows opening your Ender Chest by right-clicking an Ender Chest block.
CustomEnderChest.command.overflow - Allows viewing and claiming your overflow items via /cec overflow.

Size Permissions (Levels):

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 & Permissions:

/cec open <player> - Open and modify another player's Ender Chest in real-time. (Requires CustomEnderChest.command.open.other)
/cec overflow <player> - View and manage another player's overflow items. (Requires CustomEnderChest.command.overflow.other)
/cec delete <player> - Delete all items in a specific player's Ender Chest. (Requires CustomEnderChest.command.delete)
/cec reload - Reloads the config.yml and language files. (Requires CustomEnderChest.admin)
/cec migrate <source> <target> - Migrate all player data from one storage type to another. (Requires CustomEnderChest.admin)
/cec stats [validate|help] - View database statistics or validate data integrity. (Requires CustomEnderChest.admin)
/cec import vanilla - Bulk import vanilla ender chest data for all players. (Requires CustomEnderChest.admin)

Configuration & Languages

Click to view config.yml
# -------------------------------------------------- #
#      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", "zhcn" will load lang_zhcn.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
  # Set to true to enable FastStats metrics for error tracking and analytics.
  # Set to false to disable it.
  faststats-metrics: true
  # Enable or disable automatic update checking.
  update-checker: true

# Backup settings
backup:
  # Enable automatic backups of player data
  enabled: true
  # Interval between automatic backups (in minutes)
  interval-minutes: 60
  # Maximum number of backup files to keep
  # Old backups will be automatically deleted when this limit is exceeded
  max-backups: 10
  # Number of days to keep backups (older backups will be deleted)
  retention-days: 7
  # Create a backup when the server shuts down
  backup-on-shutdown: 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

  # Automatically migrate data by player name if their UUID changes (e.g. Crack -> Premium).
  # WARNING: Enabling this can allow a cracked player to steal a premium player's items if they change their name.
  # It is recommended to leave this false and contact server staff to transfer data manually if needed.
  # Only enable this if your server move from offline server to online server or you know what you're doing.
  migrate-uuid-by-name: false

# Overflow settings
overflow:
  # Expiration timer for overflow items
  # If enabled, overflow items that are not claimed will be automatically deleted
  expiration:
    enabled: false
    # Number of days before overflow items expire (default: 30)
    days: 30
    # How often to check for expired items (in minutes, default: 60)
    check-interval-minutes: 60
  # Warning shown to players on login if they have overflow items
  login-warning:
    enabled: true
  # Retrieval fees (requires Vault)
  # Charge players when they claim overflow items
  retrieval-fee:
    enabled: false
    # Flat fee charged once when claiming any overflow items (default: 0)
    flat-fee: 0
    # Fee charged per item in overflow (default: 0)
    per-item-fee: 0

# 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 or players will need
  # "CustomEnderChest.block.open" permission to open via block.
  # Note: If this option is true, don't set true for `disable-plugin-on-endechest-block` below.
  disable-enderchest-click: false
  # 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.
  vanilla-enderchest-block: false
  # Play the physical lid open/close animation of the Ender Chest block.
  # Note: Disabling this prevents the vanilla ender chest sound from playing,
  # allowing you to hear ONLY the custom sound configured in the `sounds` section.
  play-block-animation: true

# Default settings for players
default-player:
  # Enable this to give players a default chest size.
  # This allows 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
  # Allow players to use /cec, /ec, /customec commands by default.
  # If false, players will need "CustomEnderChest.commands" permission to use commands.
  allow-command: true

# 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

Similar projects

Plugin →