18 KiB
18 KiB
Changelog
2.5.0 (2026-05-23)
Features
- add per-player module override api (53780bc)
- add per-player module override api (c2043e2)
- api: expose per-player modeset controls (b3a6039)
- api: publish player state change events (6f33807)
- improve API & introduce API.md (a091b06)
- migrate default world modesets (8e9ee90)
- per-item cooldown (890c41f), closes #856
- rewrite in kotlin (d4eee15)
- show build commit in version output (e20fe98)
- support default world modesets (7d3b417)
Bug Fixes
- armour: apply mixed-mode armour strength by defender (f32671b)
- armour: respect modesets for explosion defence (#861) (729c311)
- attack-range: detect Paper data component support (b12829d)
- compat: avoid hot-path optional API reflection (8f14b8b)
- compat: clarify semantic version gates (b5341f3)
- compat: detect API capabilities for version gates (bfbb2e4)
- damage: respect bypasses_cooldown damage types #864 (83a7154)
- modesets: correct stale stored world modesets (#865) (b0f451d)
- reflection: compare Minecraft versions lexicographically (67e266c)
- respect MythicMobs no-knockback damage (#860) (a25e0ed)
- shields: apply mixed-mode blocking by defender (20249db)
- tool-damage: apply mixed-mode weapon damage by attacker (eb905f2)
- validate module override bulk updates (c6e14ba)
2.4.0 (2026-03-08)
Features
- togglable paper sword blocking (5d3887d)
Bug Fixes
- don't overwrite swords on every click #843 (4323853)
- inventory: harden stale deferred item mutation paths (a92664d)
- reflection: tighten chooser compatibility fallback (f383340)
- strip sword consumable component (4624ac0)
- sword-blocking: clear sword consumable components on reload when disabled (b887a28), closes #845
- sword-blocking: fall back to shield for pre-1.20.5 clients (388bee5), closes #842
- sword-blocking: harden inventory fail-safes to prevent ghosting (8889bfe)
- sword-blocking: harden legacy death shield drop reconciliation (2bb730e)
- sword-blocking: prevent GUI click/drag item rewrites & fallback unknown clients to shield (cfc596c)
- sword-blocking: prevent legacy fallback from cancelling unrelated shield interactions (727fa97)
- sword-blocking: restore offhand item for pre-1.20.5 fallback clients (68073e8)
- sword-blocking: sweep stale consumable state on join/quit/world (96d6981)
2.3.0 (2026-01-24)
Features
- 1.8 hitbox (5cbd93d), closes #69
- always & disabled modules lists (5f7bf12)
- always & disabled modules lists (18dd6e1)
- copper tools support #822 #823 (47ffa96)
- custom trident & mace damage (be70c5b), closes #757
- item damage lore (0ca855a), closes #775
- kotlin integration tests (c63c940)
- switch from protocollib to packetevents (44afce1), closes #790
- sword blocking animation #769 (8596c9d)
- warn on unknown effects, enchants, etc (fa828d3)
Bug Fixes
- 'disable-offhand' module working even if disabled (ecca0b5)
disable-offhandhandling on modeset change (54aaf0c)- apply old tool damage to all mobs (91b121f), closes #735
- chorus fruit tp into blocks (bba1ecb), closes #748
- clear modules list on reload (ebdfd10)
- double strength effect when old-potion-effects disabled (4cecb64), closes #781
- fire damage overwriting lastDamage (9af8a0f), closes #707
- legacy (pre-1.11) sweep detection (2825b35)
- negative last damage (1321717), closes #765
- only strip consumable on swords (e01faea), closes #841
- reflection error on weapon enchant (10ff4ce), closes #840
- skip unknown sound packets (cfa1e58)
- unknown particles. (1408720), closes #825
- weakness calc on >=1.20 (f502adb)
- weakness calculations for amplifier > 1 (d866015)
Performance
- attack-cooldown-tracker: gate sampler by API presence and use HashMap for stable caching (b605501)
- disable-enderpearl-cooldown: use HashMap and lazily drop expired cooldown entries (83ff726)
- fishing-rod-velocity: replace per-hook gravity tasks with single shared tick runner (5856bed)
- old-armour-durability: replace per-explosion suppression task with shared 1-tick expiry cleaner (c7932d6)
- old-player-regen: switch to tick-based interval tracking with shared counter task (4f8df3c)
- player-knockback: replace per-hit cleanup tasks with shared 1-tick expiry cleaner (9667ef5)
- shield-damage-reduction: replace per-hit fully-blocked cleanup tasks with shared 1-tick expiry cleaner (a18b1ef)
- sword-block: reduce amount of recurring tasks (a08b5b4)
- use one task to clear EDBEE map (11ec51b)
2.2.0 (2025-10-14)
Features
- add fallback sound reflection logic (1592dc2)
Bug Fixes
- ocm mode permissions (e2f0369), closes #818
- update checker versioning logic (8d88a49)
- use reflection for inventory view (462e536), closes #812
Documentation
2.1.0 (2025-08-21)
Features
- compat with 1.21.8 enums (68c51ab)
- make config upgrader remove deprecated keys (e728374)
- remove deprecated modules (da3d5f0)
Bug Fixes
- check fishing knockback module enabled when reeling in (31e3877), closes #803
- disable attack sounds not working in >1.21 (b355322), closes #794
- ExceptionInInitialiserError in enchantment compat (b2379cc), closes #782
- improve sound packet compatibility (4ef28fb), closes #780
- null pointer in potion compat (b30e27d), closes #791
- unmentioned worlds modesets not allowed #792 (95c9446)
Refactoring
- improve fishing knockback cross-version compat (d119c9f)
2.0.4 (2024-10-28)
Bug Fixes
- avoid ghost items after sword block restore (822fb1f), closes #749
- don't prevent moving shield to chests in disable offhand module (b299df2)
- error when right clicking air while holding block in <1.13 (cbc0c4b), closes #754
- listen to dynamically loaded worlds for modesets (f5b59d7), closes #747
- resolve elytras always unequipped by removing out-of-scope module (07106e6), closes #725
- fix sword blocking shield ending up in inventory on world change (8aa3fa3), closes #753