Dechantments
A Paper plugin that adds a rebellious aesthetic to vanilla enchantments.
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.