Achievements Optimizer is a lightweight performance mod that optimizes how item-based achievements and advancements are processed — reducing unnecessary inventory scans and improving overall tick efficiency.
It doesn’t change any gameplay mechanics or logic — only makes achievement checks faster and cleaner under the hood.
⚙️ Key Optimizations
- Early tick skipping — heavy slot calculations (empty/occupied/full) are skipped early, preventing extra work per event.
- Instant empty stack discard — with ignoreEmptyStacks enabled, empty stacks are removed immediately without scanning the entire inventory.
- Fast multi-item matching — single-pass inventory check using boolean[] flags with early exit. No allocations, noticeably faster on large inventories or long condition lists.
- Early slot filtering — slots.matches(full, empty, occupied) is evaluated first, avoiding deeper checks when slots don’t match.
- Preserved fast path for single targets — when items.size() == 1, the comparison is done directly on the changed slot without a full inventory pass.
🚀 Result
Fewer redundant checks, less memory churn, and faster responses to inventory events. Particularly beneficial for servers or modpacks with many players and complex advancement triggers.
From version 2.0.0 required Forge Config API Port (only for fabric version). Feel free to write about all problems and suggestions on my github! Good luck!
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 |
- Ported 1.21.9
- required Architectury API
- Ported 1.21.9
- required Architectury API
- Skipping ticks is done before the heavy calculation of occupied/empty/full slots — less extra work on each event.
- With ignoreEmptyStacks enabled, empty stacks are discarded immediately, without causing an inventory scan.
- Fast matching of many items (one pass through the inventory with boolean[] flags and early exit — without allocations, noticeably faster on large inventories and long lists of conditions).
- Early filtering by slots (slots.matches(full, empty, occupied) is performed first, excluding further calculations in case of a mismatch.).
- Preserved fast path for one target (with items.size() == 1, the check is done on changed without a full scan — the behavior is left, but surrounded by earlier cutoffs.).
- Skipping ticks is done before the heavy calculation of occupied/empty/full slots — less extra work on each event.
- With ignoreEmptyStacks enabled, empty stacks are discarded immediately, without causing an inventory scan.
- Fast matching of many items (one pass through the inventory with boolean[] flags and early exit — without allocations, noticeably faster on large inventories and long lists of conditions).
- Early filtering by slots (slots.matches(full, empty, occupied) is performed first, excluding further calculations in case of a mismatch.).
- Preserved fast path for one target (with items.size() == 1, the check is done on changed without a full scan — the behavior is left, but surrounded by earlier cutoffs.).
- moved to multiloader code
- added config for fabric version (now required Forge Config API Port)
- refactor mixins
- added config option to skip empty stacks
- moved to multiloader code
- added config for fabric version (now required Forge Config API Port)
- refactor mixins
- added config option to skip empty stacks
- moved to multiloader code
- added config for fabric version (now required Forge Config API Port)
- refactor mixins
- added config option to skip empty stacks
- moved to multiloader code
- added config for fabric version (now required Forge Config API Port)
- refactor mixins
- added config option to skip empty stacks
- upd 1.21.4
- refactor mixins
- added config option to skip empty stacks