-
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