██████╗ ███████╗███████╗ ██████╗██████╗ ██╗██████╗ ████████╗██╗ ██████╗ ███╗ ██╗███████╗██████╗
██╔══██╗██╔════╝██╔════╝██╔════╝██╔══██╗██║██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝██╔══██╗
██║ ██║█████╗ ███████╗██║ ██████╔╝██║██████╔╝ ██║ ██║██║ ██║██╔██╗ ██║█████╗ ██████╔╝
██║ ██║██╔══╝ ╚════██║██║ ██╔══██╗██║██╔═══╝ ██║ ██║██║ ██║██║╚██╗██║██╔══╝ ██╔══██╗
██████╔╝███████╗███████║╚██████╗██║ ██║██║██║ ██║ ██║╚██████╔╝██║ ╚████║███████╗██║ ██║
╚═════╝ ╚══════╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝
A lightweight Paper plugin for Minecraft 1.21.4 that injects readable enchantment descriptions directly into item tooltips.
Descriptioner keeps vanilla enchant visuals while adding short lore lines under each enchantment, with configurable language files and optional advanced styling.
- Supports Paper/Purpur 1.21.4
- Kotlin-based, modern and fast implementation
- Uses Adventure components (no legacy ChatColor formatting)
- Language files are editable YAML files
- Built-in
en_USandes_ES - Auto fallback locale support
- Handles regular enchanted items and enchanted books
- Marker-based tooltip management for deterministic, idempotent rebuilds
- Includes
/descriptioner normalize [batchSize]admin command for bulk normalization - Safe behavior when a description is missing (silently skipped)
- Optional per-enchant/per-level styling rules
- Java: 21+
- Server software:
- Paper 1.21.4
- Purpur 1.21.4 (supported)
- Download or build the plugin jar.
- Put the jar in your server
plugins/folder. - Start the server once to generate default files.
- Configure
plugins/Descriptioner/config.ymlif needed. - Restart the server.
./gradlew shadowJarGenerated artifact:
build/libs/Descriptioner-1.0.2.jar
Main file: plugins/Descriptioner/config.yml
Key settings:
language: active locale file name (without extension)fallback-language: fallback locale if the main one is missingrefresh-period-ticks: inventory sync intervalenchant-name-styling.enabled: enable advanced enchant title stylingenchant-name-styling.enchant-overrides: per-enchant/per-level visual overrides
Available in name-segments and level-segments:
{name}{level_roman}{level_arabic}
Directory:
plugins/Descriptioner/languages/
Bundled files:
en_US.ymles_ES.yml
Each YAML key must match the vanilla enchantment key (for example sharpness, unbreaking, mending).
For each enchanted item tooltip:
- Descriptioner reads the enchant list.
- It appends one line for the enchant name/level.
- It appends one line for the localized description (if configured).
- If no description exists for an enchant, that enchant is left without a description line.
- Verify server is Paper/Purpur 1.21.4.
- Verify Java 21 is being used.
- Check if your selected locale file exists.
- Check server logs for config YAML errors.
- Restart the server after config edits.
- Reopen inventories/items to force tooltip refresh.
- Use spaces for indentation, not tabs.
- Keep valid YAML block structure (avoid mixed inline map + nested block).
This project is intentionally focused on vanilla enchantment descriptions only. No custom enchant system, GUI, or command layer is included by design.
