All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Disenchantment

Disenchantment

by H7KZ • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Disenchantment

GitHub Release License Minecraft Java Modrinth SpigotMC Players Servers

event.png

A lightweight Spigot/Paper/Folia plugin that enhances the vanilla enchanting system by adding powerful, intuitive mechanics to the standard anvil. Give your players the tools to manage their enchantments efficiently, without adding any new blocks or complex systems.

Features

Disenchanting: Reclaim Your Enchantments

Ever found a nearly-broken tool with a rare enchantment you wish you could save? The disenchanting mechanic provides a straightforward solution.

  • Simple Anvil Process - Place the enchanted item in the first anvil slot and a book in the second.
  • Controlled Transfer - For a configurable XP cost, the enchantment is removed from the item and transferred to the book, leaving the original item clean. Players can salvage valuable enchantments from worn-out or obsolete gear.

Book Splitting: Divide Your Enchanted Books

Need just one enchantment from a book with many? Book Splitting allows for precise, strategic use of your enchanted books.

  • Intuitive Splitting - Combine a multi-enchantment book with a blank book on the anvil to lift a single enchantment off the original.
  • Strategic Application - Results in two books: the original with one less enchantment, and a new book with the single enchantment that was split off. This enables targeted application and a more dynamic server economy.

Economy Integration

Server owners can optionally require players to pay an in-game currency cost for each disenchant or shatter operation, in addition to (or instead of) the XP cost.

  • Requires Vault and any compatible economy plugin (EssentialsX, CMI, PlayerPoints, etc.).
  • Configurable flat cost per operation, independently for disenchanting and book splitting.
  • Cost is previewed in the action bar while the player has a result ready in the anvil.
  • Disabled by default — zero impact if Vault is not installed.

Why Choose This Plugin?

  • Truly Vanilla-Friendly - No new machines or confusing UIs. All functions are handled through the standard anvil.
  • Lightweight & Efficient - Adds valuable features without causing server lag or performance issues.
  • Fully Customizable - Configure XP costs, economy costs, per-world/per-enchantment/per-material restrictions, event priorities, and more.
  • Economy Ready - Optional Vault integration lets server owners add a currency cost to every operation.
  • Folia Support - Compatible with the Folia server software for regionized multithreading.

Installation

Requirements

  • Java 21 or newer
  • Spigot, Paper, or Folia server running Minecraft 1.18 - 1.21.+

Download

Get the latest release from any of these sources:

Setup

  1. Download the Disenchantment-<version>.jar file.
  2. Place the JAR in your server's plugins/ directory.
  3. Restart the server.
  4. Edit plugins/Disenchantment/config.yml to customize settings or use ingame admin UI with /disenchantment gui.

Supported Custom Enchantment Plugins

Plugin 1.21.8 - 1.21.11+ 1.21.7 - 1.21.5 1.21.4 - 1.21 1.20.6 - 1.20.5 1.20.4 - 1.18
AdvancedEnchantments ✓ ✓ ✓ ✓ ✓
EcoEnchants ✓ ✓ ✓ ✓ ✓
EnchantsSquared ✓ ✓ ✓ ✓ ✓
UberEnchant ✓ ✓ ✓ ✓ ✓
ExcellentEnchants ✓ ✓ ✓ - -
Vane ✓ ✓ ✓ - -
Zenchantments ✓ ✓ ✓ - -

Note: EcoEnchants V13.0.0 is supported natively with Disenchantment 6.4.0+. No patched build is required.

Documentation

Full documentation lives in the docs/ directory.

Audience Start here
Server admins & players docs/user/ — installation, commands, config, permissions, FAQ
Plugin developers (API) docs/api/ — public events, PlaceholderAPI
Contributors & engineers docs/engineering/ — architecture, setup, contributing
Deep internals / LLM agents docs/internals/ — NMS, events, GUI, config system

Quick links:

Document Description
Commands Full command reference with usage and permissions
Permissions All permission nodes and their defaults
Configuration Complete configuration reference
FAQ Frequently asked questions and troubleshooting

Building from Source

mvn clean package

The output JAR is written to target/Disenchantment-<version>.jar. See CONTRIBUTING.md for prerequisites and development setup.

Contributing

Contributions are welcome! Please read the Contributing Guidelines before opening a pull request.

Links

License

This project is licensed under the MIT License.

Dependencies and Attribution

Bundled Libraries

The following libraries are included in the distributed plugin JAR:

Library License Author Purpose
bStats MIT Bastian Oppermann Anonymous plugin usage statistics (optional, can be disabled in config)

Runtime Dependencies (Provided by Server)

These APIs are provided by the Minecraft server and are not bundled with the plugin:

API License Link
Spigot API GPL-3.0 github.com/SpigotMC/Spigot-API
Paper API GPL-3.0 github.com/PaperMC/Paper
Folia API GPL-3.0 github.com/PaperMC/Folia

Optional Runtime Dependencies

These plugins are not required but unlock additional features when present:

Plugin License Link Purpose
Vault LGPL-3.0 github.com/MilkBowl/Vault Economy integration — charge players a currency cost per operation

Custom Enchantment Plugin Adapters (Compile-time Only)

Disenchantment includes adapters for the following plugins. These plugins are NOT bundled or distributed with Disenchantment. They are used only as compile-time dependencies to create integration adapters. Server administrators must obtain and install these plugins separately if they wish to use the integration features.

Plugin License Author Link
AdvancedEnchantments Proprietary GC-spigot github.com/GC-spigot/AdvancedEnchantments
EcoEnchants GPL-3.0 Auxilor github.com/Auxilor/EcoEnchants
EnchantsSquared No public license Athlaeos github.com/Athlaeos/EnchantsSquared
UberEnchant GPL-3.0 sciguymjm github.com/Sciguymjm/UberEnchant
ExcellentEnchants GPL-3.0 NightExpress github.com/nulli0n/ExcellentEnchants-spigot
Zenchantments GPL-3.0 Zedly github.com/Zedly/Zenchantments
Vane MIT oddlama github.com/oddlama/vane

Note: The adapters created by Disenchantment merely interface with these plugins' public APIs and do not contain any code from the plugins themselves. Each plugin retains its own independent license.

Build Tools

The following tools are used during the build process but are not included in the final plugin:

Tool License Link
Maven Shade Plugin Apache-2.0 maven.apache.org/plugins/maven-shade-plugin
Maven Compiler Plugin Apache-2.0 maven.apache.org/plugins/maven-compiler-plugin

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.2 26.1.x 1.21.x +3
Folia Paper Purpur Spigot
21h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur Spigot
21h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur Spigot
21h ago 1
26.1.x 1.21.x 1.20.x +2
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur Spigot
21h ago 1
### New Features

#### Restriction Modes
  • ALLOWLIST / DENYLIST modes for worlds** — the per-world list can now act as either a denylist (block only listed worlds) or an allowlist (permit only listed worlds). Config migration 12 adds the new setting automatically.
  • ALLOWLIST / DENYLIST modes for materials** — same allowlist/denylist model applied to the per-material restriction list.
  • mode subcommand** — /disenchantment worlds mode, /disenchantment materials mode, and the shatter variants toggle the restriction mode from chat.
  • Restriction-mode GUI toggle** — the Worlds and Materials GUIs gained an in-panel control to switch between allowlist and denylist.
  • i18n strings** — new English and Czech localization entries for all restriction-mode controls.

### Bug Fixes

  • Anvil result-slot item duplication** — fixed a duplication exploit on the anvil result slot; shared guard logic centralized in AnvilEventGuards.
  • Single-source-item enforcement** — disenchant and shatter now reject stacked source items and operate on a single item only, preventing unintended multi-item processing.

### Internal

  • Logging refactor** — debug messages are now built lazily, webhook payloads are serialized as safe JSON, and duplicate startup log lines were removed.
  • Diagnostics** — DiagnosticUtils updated to report the active restriction modes.
  • Added regression tests for anvil guards and single-item enforcement (AnvilEventGuardsTest, EventUtilsDisenchantTest, EventUtilsShatterTest).
  • Documented the restriction-mode model across the user and engineering docs.

### New Features

#### Stats & Analytics
  • SQLite operation logging** — every disenchant/shatter is persisted to a local SQLite database (logging.operations config gate).
  • /disenchantment stats [player]** — new command showing lifetime operation counts, XP spent, and economy costs.
  • StatsGUI** — in-game stats screen accessible via the Navigation GUI.
  • PlaceholderAPI expansion** — 6 new PAPI placeholders for stats (total operations, XP, economy, per-type breakdowns).
  • Post-event enrichment** — PostDisenchantEvent and PostShatterEvent now carry xpCost and economyCost; Creative-mode players report xpCost = 0.

#### Cost & Economy
  • LuckPerms XP discounts** — per-player XP cost reduction via LP meta keys or permission nodes.
  • Per-enchantment economy overrides** — set a flat economy cost for specific enchantments, overriding the default formula.
  • Repair max-cost cap** — configurable cap on anvil prior-work penalty fed into cost calculations.
  • Enchantment success chances** — configurable per-enchantment or global probability that a disenchant/shatter succeeds.

#### Cooldowns
  • Per-player anvil cooldown** — configurable cooldown between operations; delegates to **CMI** or **EssentialsX** cooldown APIs when those plugins are present.

#### Permissions & Bypass
  • Maintenance mode** — lock the plugin to ops only via /disenchantment maintenance.
  • World bypass permission** — players with the bypass node ignore per-world disable rules.
  • Material bypass permission** — players with the bypass node ignore per-material disable rules.
  • Anvil cost bypass permission** — skip XP/economy cost entirely.

#### Shatterment (Book Splitting)
  • Random split-count range** — instead of a fixed split count, configure [min, max] and get a random value per operation.
  • SplitCountGUI panel** — in-game GUI to configure the split count range.
  • Disabled-materials list for shatterment** — independent material blocklist for book splitting (separate from disenchanting).
  • Dual-toggle Materials GUI** — updated Materials GUI shows separate toggles for disenchant vs. shatter per material.

#### Commands & Config
  • Enchantment groups** — define named groups of enchantments and bulk-enable/disable them with a single command.
  • Namespaced enchantment keys** — minecraft:sharpness, advancedenchantments:fire_wave, etc. are now valid in config and state lookups.

#### Monitoring
  • Discord webhook crash reporting** — uncaught plugin exceptions POST a structured report to a configured webhook.
  • DISE-NNN error codes** — internal errors now carry short stable codes for support/debugging.
  • --json flag on /disenchantment status** — machine-readable status output for monitoring scripts.

### Bug Fixes

  • Fixed inverted boolean in CommandBuilder argument validation (commands with required args were accepting zero args).
  • Fixed null-guard order and economy-charge timing in anvil click handlers (economy was charged before confirming the operation succeeded).
  • Fixed deprecated permission warning message (was showing the wrong permission node name).
  • Fixed zero-xpCost not being sent in Post events for Creative-mode players.
  • Removed dead code and fixed copy-paste comment in several utility classes.
  • Added missing i18n key that caused a silent NPE on certain locale configurations.
## v6.5.0

### New Features

  • PlaceholderAPI support** — DisenchantmentPlaceholderExpansion registered on startup; add PAPI as a soft-dependency
  • Per-enchantment XP cost overrides** — configure individual enchantment costs in repair.enchantment-costs; config migration 8 adds the new map automatically
  • Configurable shatter split-count** — default 1, configurable per server
  • Economy GUI** — in-game panel for managing disenchant/shatter economy settings (disenchant:economy and shatter:economy commands)
  • Custom locale support** — locales are copied to the data folder so admins can override/translate them
  • /disenchantment reload** — full hot-reload: listeners re-registered, adapters re-detected, economy re-hooked
  • /disenchantment debug [on|off]** — runtime toggle for debug logging without a restart
  • Pre/Post events** — cancellable PreDisenchantEvent, PreShatterEvent, PostDisenchantEvent, PostShatterEvent for API consumers
  • Custom enchantment tab-complete** — third-party enchantment keys now appear in tab suggestions
  • ExcellentEnchants API bump** — updated to 5.4.3

### Fixes

  • Repair cost double-count bug in AnvilCostUtils base XP calculation
  • collectEnchantments deduplication across adapters
  • isPrepare=true not passed in ShatterEvent.collectEnchantments
  • NMS_v1_21_R5.setItemRepairCost missing repairCost parameter
  • Plugin now disables gracefully when locale resource is missing
  • Enchantment states cache not invalidated on config reload
  • Debug flag not synced from config on startup
  • 14 additional in-code bugs resolved across two full review passes

### Performance

  • Config saves batched — saveConfig() deferred until commitBatch() to reduce I/O

### Internal

  • Replaced system-scope PAPI JAR with Maven repo dependency
  • DisenchantSoundGUI + ShatterSoundGUI merged into SoundGUI
  • DisenchantmentRepairGUI + ShattermentRepairGUI merged into RepairGUI
  • Shared anvil event guard logic extracted into AnvilEventGuards
  • AnvilFeature enum added; Config.forFeature() accessor introduced
See the GitHub release for the full changelog. https://github.com/H7KZ/Disenchantment/releases
See the GitHub release for the full changelog. https://github.com/H7KZ/Disenchantment/releases
## New Features

  • Vane enchantments support — Disenchantment now integrates with the
https://github.com/nicholasgasior/vane enchantment plugin. Supported on Minecraft 1.21+ (v1_21_R1,
v1_21_R4, v1_21_R5).
plugin. Supported on Minecraft 1.21+ (v1_21_R1, v1_21_R4, v1_21_R5).
  • Improved GitHub issue templates — Replaced the old Markdown-based issue templates with new structured
YAML forms, including separate templates for bug reports, compatibility issues, and feature requests.

## Bug Fixes

  • UberEnchant shattering — Fixed a bug where shattering (book splitting) did not work correctly with
UberEnchant enchantments.
  • Compatibility issue template — Added a dedicated compatibility issue report template to help track
third-party plugin conflicts.
  • License update — Corrected the project license.

## Internal

  • Codebase cleanup and minor refactoring.

## Linked issues



Full Changelog: https://github.com/H7KZ/Disenchantment/compare/v6.3.3...v6.3.4
  • added folia support
### Fixes
  • NMS default to latest version if it is up 1.21 and is not specifically listed in NMS enum
  • Basic anvil usage permission default to true
### Fixes
  • Compability with Advanced Enchantments
### Fixes
  • EcoEnchants support + Compiled EcoEnchants v12.24.0 with required changes
### Fixes

  • on config error shut the plugin down and wait for user to fix it, since it will overrite the config with the default one
### Fixes

  • Support custom enchantments
  • Bug with Enchants Squared replace books with null
Disenchantment Icon
Download Disenchantment
Select game version
Select platform