Dechantments
A Paper plugin that adds a rebellious aesthetic to vanilla enchantments.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Dechantments
✦ 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
1. Put `Dechantments-*.jar` into your server's `plugins/` folder. 2. Start the server once to generate default config and locale files. 3. Edit files under `plugins/Dechantments/` as needed: - `config.yml` - `locale/zh_CN.yml` - `locale/en.yml` 4. Use `/de reload` to 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 toggle - `global.enable-loot-transform`: loot conversion toggle - `global.enable-villager-trade-transform`: villager trade conversion toggle - `enchantments.<vanilla_key>`: per-enchantment controls for `enabled/probability/max-level`
---
🌐 Localization
Locale files are located in: `plugins/Dechantments/locale/`
- `zh_CN.yml` - `en.yml`
Built-in locale files are auto-extracted on first run, and can be edited directly afterward.
---
🧪 Local Development
```bash ./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: true` in `config.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.yml` - `plugins/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.