Skip to main content

Config.yml

The config.yml file is the main configuration file for zMenu. It controls global plugin settings, database configuration, performance options, and more.

File Location​

plugins/zMenu/config.yml

Complete Configuration Reference​

#######################################
# Debug Settings #
#######################################

# Enable debug messages in console
enable-debug: false

# Enable debug timing information
enable-debug-time: false

# Enable per-operation performance debugging for inventory opening
enable-performance-debug: false

performance-debug:
# Minimum execution time (ms) for an operation to appear in output
threshold-ms: 10
filter:
# DISABLED - show all, WHITELIST - only listed, BLACKLIST - hide listed
# Supports wildcards: "buildButton.*"
mode: DISABLED
operations: []

# Show informational messages about inventory/order loading
enable-information-message: true

# Skip the update check on startup
skip-update-check: false

#######################################
# Storage Settings #
#######################################

# Storage type for player data
# Options: SQLITE, MYSQL, MARIADB, NONE
storage-type: SQLITE

# Database configuration (for MySQL/MariaDB)
database-configuration:
table-prefix: "zmenu_"
host: "localhost"
port: 3306
user: "username"
password: "password"
database: "zmenu"
debug: false

# Interval (seconds) for batching SQL saves instead of one query per update
batch-task: 10

#######################################
# Logging Settings #
#######################################

# Log inventory opens to the database
enable-player-open-inventory-logs: true

# Print console messages when files are saved or loaded
enable-log-storage-file: false

# Show a message to the player when /zm open <inventory> <player> <display> is used
enable-open-message: true

#######################################
# Formatting Settings #
#######################################

# Enable MiniMessage format (requires Minecraft 1.17+)
# This allows modern formatting like <gradient:red:blue>
enable-mini-message-format: true

#######################################
# Command Settings #
#######################################

# Force player commands to run via chat (useful for fake commands not registered in Spigot)
enable-player-command-in-chat: false

# Allow buttons to execute commands with OP-level permissions.
# WARNING: Security-sensitive. Only enable if you understand the risks.
# Requires server restart to take effect.
enable-player-commands-as-op-action: false

# Method used to grant temporary elevated permissions (when enable-player-commands-as-op-action is true)
# ATTACHMENT: grants permission * temporarily (recommended)
# SET_OP: temporarily sets player as OP
# BOTH: combines both methods
op-grant-method: ATTACHMENT

#######################################
# Inventory Behavior #
#######################################

# Action types to skip when a player switches between zMenu inventories (prevents re-opening old menus)
skip-close-actions-on-inventory-switch:
- inventory
- inv
- back

# Use the faster FastEvent system (refer to documentation before enabling)
enable-fast-event: false

# Disable double-click detection to avoid duplicate interactions
disable-double-click-event: true

# Click types that are handled in menus
all-clicks-type:
- MIDDLE
- RIGHT
- LEFT
- SHIFT_RIGHT
- SHIFT_LEFT

#######################################
# Performance Settings #
#######################################

# Cache item stacks for better performance
enable-cache-item-stack: true

# Enable click cooldown to prevent spam clicking
enable-cooldown-click: true

# Cooldown duration (milliseconds) between clicks
cooldown-click-milliseconds: 100

# Limit click packets received from players (requires PacketEvents plugin)
enable-packet-event-click-limiter: false

# Minimum time (ms) between packet-level click events
packet-event-click-limiter-milliseconds: 50

# Enable PlaceholderAPI caching
enable-cache-placeholder-api: false

# PlaceholderAPI cache duration (ticks, 20 = 1 second)
cache-placeholder-api: 20

# Cache offline player data (seconds)
cache-offline-player: 300

# Auto-save player data interval (seconds)
seconds-save-player-data: 600

# Auto-save player inventories interval (seconds)
seconds-save-player-inventories: 600

#######################################
# Security Settings #
#######################################

# Enable anti-dupe protection
enable-anti-dupe: true

# Send a Discord notification when a dupe attempt is detected
enable-anti-dupe-discord-notification: false

# Webhook URL for anti-dupe Discord notifications
anti-dupe-discord-webhook-url: "https://discord.com/api/webhooks/<your webhook url>"

# Message sent to Discord on dupe detection. Supports %player%, %amount%, %itemname%
anti-dupe-message: "**%player%** used %amount% %itemname% from zMenu. It has been removed!"

#######################################
# Menu Settings #
#######################################

# Default main menu inventory name
main-menu: "example"

# Use swap item offhand key (F) to open main menu
use-swap-item-off-hand-key-to-open-main-menu: false

# Require shift + offhand key instead of just offhand key
use-swap-item-off-hand-key-to-open-main-menu-needs-shift: false

# Specific menu paths to load at startup (leave empty to load all)
specify-path-menus: []

# Generate default configuration files if they don't exist
generate-default-file: true

#######################################
# Download / API #
#######################################

# Allow use of /zm download command
enable-download-command: false

# API URL for Minecraft Inventory Builder (do not change this value)
api-url: "https://minecraft-inventory-builder.com/api/v2/"

Configuration Options Explained​

Debug Settings​

enable-debug​

Enables detailed debug messages in the console. Useful for troubleshooting issues.

enable-debug: false

When to enable:

  • Troubleshooting inventory loading issues
  • Debugging placeholder problems
  • Reporting bugs to the developer

enable-debug-time​

Shows timing information for operations.

enable-debug-time: false

enable-performance-debug​

Logs per-operation execution times when opening inventories (button building, item rendering, etc.).

enable-performance-debug: false

performance-debug:
threshold-ms: 10 # Only show operations slower than this
filter:
mode: DISABLED # DISABLED | WHITELIST | BLACKLIST
operations: [] # Supports wildcards: "buildButton.*"

enable-information-message​

Shows informational messages in console when an inventory or command is successfully loaded.

enable-information-message: true

skip-update-check​

Skips the automatic update check on startup.

skip-update-check: false

Storage Settings​

storage-type​

Determines how player data is stored.

TypeDescription
SQLITELocal file-based database (default)
MYSQLMySQL server
MARIADBMariaDB server
NONENo persistent storage
storage-type: SQLITE

Recommendations:

  • Single server: Use SQLITE
  • Network/BungeeCord: Use MYSQL or MARIADB
  • No player data needed: Use NONE

database-configuration​

MySQL/MariaDB connection settings.

database-configuration:
table-prefix: "zmenu_"
host: "localhost"
port: 3306
user: "minecraft"
password: "secure_password"
database: "minecraft_db"
debug: false
OptionDescription
table-prefixPrefix for database tables
hostDatabase server address
portDatabase port (default: 3306)
userDatabase username
passwordDatabase password
databaseDatabase name
debugEnable SQL debug logging

batch-task​

Interval in seconds for batching SQL saves. Instead of one query per update, all pending changes are saved in a single query.

batch-task: 10

Logging Settings​

enable-player-open-inventory-logs​

Logs when players open zMenu inventories to the database.

enable-player-open-inventory-logs: true

enable-log-storage-file​

Prints console messages when configuration files are saved or loaded.

enable-log-storage-file: false

enable-open-message​

When enabled, using /zm open <inventory> <player> <display> shows the display message to the target player.

enable-open-message: true

Formatting Settings​

enable-mini-message-format​

Enables MiniMessage formatting for text. Requires Minecraft 1.17+ and Paper (or a Paper fork).

enable-mini-message-format: true

When enabled, you can use:

name: "<gradient:red:blue>Gradient Text</gradient>"
lore:
- "<rainbow>Rainbow!</rainbow>"
- "<bold><gold>Bold gold</gold></bold>"

Command Settings​

enable-player-command-in-chat​

Forces player commands to run via chat rather than command dispatch. Useful for "fake" commands not registered in Paper/Spigot.

enable-player-command-in-chat: false

enable-player-commands-as-op-action​

Allows buttons to execute commands with OP-level permissions.

enable-player-commands-as-op-action: false
Security Warning

Only enable this if you fully understand the security implications. Misuse can give players elevated permissions.


op-grant-method​

The method used to temporarily grant elevated permissions (only when enable-player-commands-as-op-action: true).

MethodDescription
ATTACHMENTGrants * permission temporarily (recommended, safer)
SET_OPTemporarily sets the player as OP
BOTHCombines both methods (maximum compatibility)
op-grant-method: ATTACHMENT

Inventory Behavior​

skip-close-actions-on-inventory-switch​

Lists action types that are skipped when a player opens another zMenu inventory. Prevents actions like back or inventory from reopening old menus on inventory switch.

skip-close-actions-on-inventory-switch:
- inventory
- inv
- back

enable-fast-event​

Replaces some Bukkit events with a faster alternative for better performance.

enable-fast-event: false

disable-double-click-event​

Prevents interactions from being triggered by double-clicking.

disable-double-click-event: true

all-clicks-type​

List of click types handled by zMenu menus. Remove click types you don't want to handle.

all-clicks-type:
- MIDDLE
- RIGHT
- LEFT
- SHIFT_RIGHT
- SHIFT_LEFT

Performance Settings​

enable-cache-item-stack​

Caches created ItemStacks to improve performance.

enable-cache-item-stack: true

Recommendation: Keep enabled unless you experience issues.


enable-cache-placeholder-api​

Caches PlaceholderAPI results to reduce parsing overhead.

enable-cache-placeholder-api: false
warning

Enabling this means placeholders won't update instantly. Use with caution.


cache-placeholder-api​

Duration to cache placeholder results (in ticks).

cache-placeholder-api: 20  # 1 second

cache-offline-player​

How long to cache offline player data (seconds).

cache-offline-player: 300  # 5 minutes

Click Settings​

enable-cooldown-click​

Prevents spam clicking by adding a cooldown between clicks.

enable-cooldown-click: true

cooldown-click-milliseconds​

The cooldown duration between clicks.

cooldown-click-milliseconds: 100  # 0.1 seconds

Adjust based on your needs:

  • Lower = More responsive, risk of accidental double-clicks
  • Higher = Safer, might feel sluggish

Security Settings​

enable-anti-dupe​

Enables the anti-item-duplication system.

enable-anti-dupe: true

This detects and prevents common item duplication exploits involving inventory GUIs.


enable-anti-dupe-discord-notification​

Sends a Discord webhook notification when a duplication attempt is detected.

enable-anti-dupe-discord-notification: false
anti-dupe-discord-webhook-url: "https://discord.com/api/webhooks/..."
anti-dupe-message: "**%player%** used %amount% %itemname% from zMenu. It has been removed!"

Supported placeholders in anti-dupe-message: %player%, %amount%, %itemname%.


enable-packet-event-click-limiter​

Limits click packets received from players (requires the PacketEvents plugin).

enable-packet-event-click-limiter: false
packet-event-click-limiter-milliseconds: 50

The default inventory opened by the MAIN_MENU button type and the F key shortcut.

main-menu: "example"

This should match an inventory filename (without .yml) in your inventories/ folder.


use-swap-item-off-hand-key-to-open-main-menu​

Allow players to press F (swap offhand key) to open the main menu.

use-swap-item-off-hand-key-to-open-main-menu: false

When to enable:

  • You want easy menu access without commands
  • Your server has a main hub menu

When to keep disabled:

  • Players need the F key for actual item swapping
  • You use custom resource packs with F key bindings

use-swap-item-off-hand-key-to-open-main-menu-needs-shift​

When combined with use-swap-item-off-hand-key-to-open-main-menu: true, the player must also hold Shift to open the menu.

use-swap-item-off-hand-key-to-open-main-menu-needs-shift: false

specify-path-menus​

List of specific menu file paths to load at startup. Leave empty to load all menus in the inventories/ folder.

specify-path-menus: []

generate-default-file​

When enabled, creates default configuration files if they do not already exist.

generate-default-file: true

seconds-save-player-data​

How often (in seconds) player data is automatically saved.

seconds-save-player-data: 600  # 10 minutes

seconds-save-player-inventories​

How often (in seconds) player inventory data is automatically saved.

seconds-save-player-inventories: 600  # 10 minutes

Download / API Settings​

enable-download-command​

Enables the /zm download <url> [force] command to download inventories from a URL.

enable-download-command: false

api-url​

The API URL for the Minecraft Inventory Builder website integration. Do not change this value.

api-url: "https://minecraft-inventory-builder.com/api/v2/"

Example Configurations​

Basic Server (SQLite)​

enable-debug: false
storage-type: SQLITE
enable-mini-message-format: true
enable-cache-item-stack: true
enable-anti-dupe: true
enable-cooldown-click: true
cooldown-click-milliseconds: 100
main-menu: "main"

Network Server (MySQL)​

enable-debug: false
storage-type: MYSQL
database-configuration:
table-prefix: "zmenu_"
host: "mysql.mynetwork.com"
port: 3306
user: "zmenu_user"
password: "secure_password_here"
database: "minecraft_network"
enable-mini-message-format: true
enable-cache-item-stack: true
enable-cache-placeholder-api: true
cache-placeholder-api: 40
enable-anti-dupe: true
main-menu: "hub_menu"

Performance-Focused​

enable-debug: false
storage-type: SQLITE
enable-cache-item-stack: true
enable-cache-placeholder-api: true
cache-placeholder-api: 60
cache-offline-player: 600
enable-cooldown-click: true
cooldown-click-milliseconds: 150

Development/Testing​

enable-debug: true
enable-debug-time: true
enable-performance-debug: true
performance-debug:
threshold-ms: 5
filter:
mode: DISABLED
operations: []
skip-update-check: true
storage-type: SQLITE
enable-cache-item-stack: false
enable-cache-placeholder-api: false
enable-cooldown-click: false
enable-player-open-inventory-logs: true

Reloading Configuration​

After making changes:

/zm reload config

Or reload everything:

/zm reload
note

Database configuration changes require a server restart to take effect.

Best Practices​

  1. Start with defaults: Only change what you need
  2. Enable caching on large servers: Improves performance
  3. Use MySQL for networks: Allows data sharing across servers
  4. Keep anti-dupe enabled: Protects your economy
  5. Test debug mode: Useful when setting up, disable in production
  6. Set appropriate click cooldown: Balance responsiveness and safety

Troubleshooting​

Database Connection Failed​

  1. Verify credentials are correct
  2. Check database server is running
  3. Ensure the database exists
  4. Check firewall allows connections
  5. Verify user has proper permissions

Placeholders Not Updating​

  1. Disable placeholder caching temporarily
  2. Check if PlaceholderAPI is installed
  3. Verify the expansion is downloaded

Performance Issues​

  1. Enable item stack caching
  2. Enable placeholder caching
  3. Increase click cooldown
  4. Check for inventory loops (A opens B opens A)

Next Steps​

Copyright © 2026 GroupeZ|Build #loading...|-