config.yml
plugins/EasyMenu/config.yml manages global plugin settings, thread pools, caching limits, and default presentation behaviors.
Default Configuration File
# Language setting (en_us, ja_jp, ru_ru)
language: "en_us"
# Debug mode (verbose console logging)
debug: false
# Startup behavior
load-on-startup: true # Load menu definitions on server startup
precache-submenus: true # Pre-cache submenu definitions on startup
# Async worker settings
async:
worker-threads: 2
# Cache settings
cache:
submenu-expiry-seconds: 300 # Submenu cache expiry in seconds
submenu-max-size: 100 # Maximum cached submenus
cleanup-interval-seconds: 60 # Cache cleanup cycle interval in seconds
resolved-path-max-size: 200 # Maximum cached resolved menu paths
# Submenu search
submenu:
search-depth: 3 # Directory traversal depth inside sub/
# Runtime presentation
runtime:
default-presentation: inventory # Default UI format (inventory, native-preferred, auto, etc.)
# Diagnostics
diagnostics:
log-warnings-on-load: true # Log warnings during reload parsing
# Input settings
input:
default-timeout-seconds: 60 # Default timeout for input collection
# Cooldown settings
cooldown:
cleanup-interval-seconds: 60 # Cleanup interval for expired cooldown records
Dynamic Reload Coverage
Running /menu reload re-reads config.yml, and every setting except load-on-startup takes effect together once validation succeeds.
If config.yml itself cannot be read (for example, a YAML syntax error), the reload is rejected and the previous settings stay active.
| Configuration Key | Refreshed on /menu reload |
|---|---|
language | Refreshed immediately (reloads message files) |
debug | Refreshed immediately |
precache-submenus | Refreshed immediately |
async.worker-threads | Refreshed immediately (replaces thread pool) |
cache.* | Refreshed immediately |
submenu.search-depth | Refreshed immediately |
runtime.default-presentation | Refreshed immediately |
diagnostics.log-warnings-on-load | Refreshed immediately |
input.default-timeout-seconds | Refreshed immediately |
cooldown.cleanup-interval-seconds | Refreshed immediately (reschedules periodic task) |
load-on-startup | Startup only (ignored during reload) |
Value Ranges and Invalid Values
For numeric settings, an out-of-range or non-numeric value does not fail startup or reload; it is silently replaced by the default (no warning is logged).
| Key | Valid range | Value used when invalid |
|---|---|---|
async.worker-threads | 1 or more | 2 |
cache.submenu-expiry-seconds | 1 or more | 300 |
cache.submenu-max-size | 1 or more | 100 |
cache.cleanup-interval-seconds | 1 or more | 60 |
cache.resolved-path-max-size | 1 or more | 200 |
submenu.search-depth | 1-16 | 3 |
input.default-timeout-seconds | 1 or more | 60 |
cooldown.cleanup-interval-seconds | 1 or more (the actual period is at least 20 ticks = 1 second) | 60 |
language is lower-cased. An invalid runtime.default-presentation becomes an error (invalid-presentation) when each menu is loaded.
Keys missing from config.yml are appended with their defaults and saved when the server starts (/menu reload does not append them).