Dechantments

A Paper plugin that adds a rebellious aesthetic to vanilla enchantments.

8

Dechantments

✦ Dechantments

Locale

Build

> 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:

- Iseason2000/DeEnchantment

Based on that idea, this project independently implements and extends support for the new Paper registry system, localization, and command/log experience.

ADS