File Details
CritMatic 1.1.1
- R
- May 15, 2026
- 2.38 MB
- 7
- 1.21.1
- NeoForge
File Name
critmatic-1.1.1.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
CritMatic for Minecraft, Change Log
v1.1.1 - 2026-05-15
Added
- Settings screen support block now shows an X (Twitter) link under the author profile row. Click the X row to open
https://x.com/infiniteloopalcthrough the standard ConfirmLink flow used by the Buy Me A Coffee and Discord rows.
v1.1.0 - 2026-05-13
Added
- Action-bar tooltip: when you switch hotbar slots, the vanilla item-name pop-up above the hotbar now carries the same CritMatic personal-best lines (Highest Crit, Highest Hit, Highest Crit Heal, Highest Heal) you already see in the inventory tooltip. Same gold-for-crit / gray-for-hit colors, same wording, fades in lockstep with the vanilla item name. Self-managed 40-tick / 10-tick-fade timer, no reflection.
- Held-item and inventory tooltips now share a single line builder (
CritMaticTooltipLines) so the wording can never drift between the two surfaces.
Unreleased
Added (Phase 1, scaffold)
- Initial scaffold from the NeoForge MDK (
archive/1.21-mdg), targeting Minecraft 1.21.1 and NeoForge 21.1.228. @Mod("critmatic")entry point atcom.infiniteloopalchemist.critmatic.CritMatic, logging on client setup.- Repository metadata: LICENSE (All Rights Reserved), README, change log scaffold.
- License set to All Rights Reserved in
gradle.propertiesand propagated to the generatedneoforge.mods.toml. - Localization scaffold at
src/main/resources/assets/critmatic/lang/en_us.json.
Added (Phase 2, data + persistence)
CritMaticData: per-item highest-hit store, four event types (crit, hit, crit-heal, heal) with old/current tracking and last-seen timestamp. Injectable clock for deterministic tests.IgnoredItems: per-player set of item IDs the recorder should skip.PlayerState: per-player aggregate ofCritMaticData+IgnoredItems, mirrors the WoW addon'sCritmatic.db.profile.PersistenceJson: load/savePlayerStateas JSON at<MC>/config/critmatic/<uuid>.jsonwith a version field for future migrations. Empty-state fallback on missing file or bad JSON.PlayerStateRegistry: in-memory active-player tracker, loads on join, persists on leave,saveAll()for world stop.PlayerLifecycleHandler: client-only@EventBusSubscriberthat wiresClientPlayerNetworkEvent.LoggingIn/LoggingOutto the registry. Initialised fromFMLClientSetupEvent.- 28 unit tests covering the data layer (parameterized over the four record types), persistence round-trip across multiple items and UUIDs, ignored-items round-trip, and registry lifecycle.
Added (Phase 3, combat hook)
CombatHandler: subscribes toCriticalHitEvent+LivingDamageEvent.Post+LivingHealEvent, keys by source item (mainhand for melee, projectile owner's mainhand for ranged), routes toCritMaticData.recordCrit/recordHit/recordHeal. Phase 3.0 usescritmatic:natural_regenas a synthetic heal source; consumable attribution (golden apple, potion, totem) lands in Phase 3.5.
Build / dev environment
- JDK 21 (Homebrew
openjdk@21). - Gradle 8.14.2 wrapper bundled by the MDK; first run downloads NeoForge / Minecraft / Parchment artefacts.
- JUnit 5.11.0 + Gson 2.10.1 declared as test dependencies; Gson is provided by Minecraft at production runtime.
- Mod group, ID, name, and authors swapped from MDK example to CritMatic / Infinite Loop Alchemist.
- Bumped Gradle JVM args to
-Xmx2Gto give the modded client headroom during dev runs.

