## 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
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }