Added leather armor dye color support (dye-color field in items.yml, accepts hex, R,G,B, or named colors)
Fixed isSimilar breaking on dyed leather armor for all protection checks
Full rewrite and modernization
Added compatibility layer: VersionUtil, SoundUtil, MaterialUtil, EnchantUtil, ItemFlagUtil, ActionBarUtil, TitleUtil, ItemUtil
Fixed armor trim support for 1.20+ with trim-material / trim-pattern in items.yml
Fixed isSimilar ignoring trims causing all protection checks to fail on 1.20+
Fixed OldPlayerData storing live Player reference (now UUID-based, prevents stale refs)
Fixed deepCloneArmor — each ItemStack now individually cloned, trims/dye preserved on restore
Fixed disablePvP sending message to offline players on quit
Fixed disable() ConcurrentModificationException when iterating player states
Fixed PvPManager registered as listener twice (removed duplicate registration)
Fixed Enchantment.getByName() broken on 1.21+ — now uses Registry API with full alias fallback map
Fixed lore toString() producing [item1, item2] brackets in 1.21.5
Fixed ItemFlags from config never being applied
Fixed VectorGenerator.nextDouble(bound) — Java 17+ only, replaced with nextDouble() * bound
Fixed isOnGround() deprecation in crit detection
Fixed LP_1_20 only registered for 1.20+ — now registers for 1.9+ where the swap event exists
Fixed ProtectionListeners ClassCastException with NPCs
Fixed tab complete using lambda — replaced with explicit loop
Added pvp-enable-delay / pvp-disable-delay with instant mode when set to 0
Added messages.killed — sent to victim on PvP death with %killer% placeholder
Added custom-model-data support (1.14+) per gear item
Added startup config validation with warnings for invalid values
Added ConfigDefaults — new config keys auto-written on first install or after reload
Fixed Maven resource filtering corrupting UTF-8 glyphs (⚔ ☠ ☣) — only plugin.yml now filtered
Fixed vanilla death message %player% has died! no longer appears; replaced by configurable death-broadcast
Fixed health reward applied on kill with %killed% and %extra% placeholders
Weapon re-given to victim 5 ticks after PvP death
plugin.yml api-version corrected from invalid 1.8 to 1.13
