
Dechantments
A Paper plugin that adds a rebellious aesthetic to vanilla enchantments.
✦ Dechantments
A Paper plugin that adds a rebellious aesthetic to vanilla enchantments.
Positive enchantments can turn into negative ones by chance—your gear now comes with stylish risk.
✨ What is this plugin?
Dechantments converts vanilla enchantments into matching negative enchantments (de_*) by probability across multiple sources.
Currently supported scenarios:
- Enchanting table result conversion
- Loot enchantment conversion (chests / fishing, etc.)
- Villager trade result conversion
Also includes:
- Compatibility with Paper
1.21 ~ 1.21.11 - Built-in localization:
zh_CN/en - Styled command panel and startup logs
- Player notification when a conversion happens ("your enchantment looks a bit strange" vibe)
🧷 Requirements
- Java
21 - Paper
1.21+
📦 Installation
- Put
Dechantments-*.jarinto your server'splugins/folder. - Start the server once to generate default config and locale files.
- Edit files under
plugins/Dechantments/as needed:config.ymllocale/zh_CN.ymllocale/en.yml
- Use
/de reloadto hot-reload configuration.
🎮 Commands
Main command: /dechantments (aliases: /dechant, /de)
/de reload: Reload config/de add <enchantment> [level]: Add a negative enchantment to the item in hand/de remove <enchantment>: Remove a negative enchantment from the item in hand/de list: List negative enchantments on the item in hand/de info: Show plugin info
Permission node:
dechantments.admin
⚙️ Configuration (Quick Overview)
Core structure of config.yml:
global.locale: language (e.g.zh_CN/en)global.default-probability: default conversion probability (0~1)global.enable-enchant-table-transform: enchanting table conversion toggleglobal.enable-loot-transform: loot conversion toggleglobal.enable-villager-trade-transform: villager trade conversion toggleenchantments.<vanilla_key>: per-enchantment controls forenabled/probability/max-level
🌐 Localization
Locale files are located in: plugins/Dechantments/locale/
zh_CN.ymlen.yml
Built-in locale files are auto-extracted on first run, and can be edited directly afterward.
🧪 Local Development
./gradlew build
Build artifacts are generated at:
build/libs/
🖤 Design Philosophy
This is not about nerfing you.
It's about adding a bit of uncontrollable elegance to your enchantment system.
❓ FAQ
1) Why can’t I see negative enchantments?
Check these first:
- You are running Paper
1.21+ - The target enchantment has
enabled: trueinconfig.yml - The relevant source toggle is enabled (enchanting table / loot / villager trade)
2) How do I adjust conversion probability?
- Global default probability:
global.default-probability - Per-enchantment override:
enchantments.<vanilla_key>.probability
The value range is 0 ~ 1. For example, 0.15 means 15%.
3) Why do I sometimes not get the “strange enchantment” notification?
The message only appears when a conversion actually occurs in that event.
If RNG doesn’t trigger, or that source event is disabled, no message is shown.
4) Can I switch the plugin to English display?
Yes. Set global.locale in config.yml to en, then run /de reload.
5) Can I customize enchantment names and message texts?
Yes. Edit:
plugins/Dechantments/locale/zh_CN.ymlplugins/Dechantments/locale/en.yml
🙏 Inspiration
This project is inspired by:
Based on that idea, this project independently implements and extends support for the new Paper registry system, localization, and command/log experience.
