promotional bannermobile promotional banner

CritMatic

Adds animated crit, hit, and heal alerts with a scrolling crit log and biggest-hit tracker

File Details

CritMatic Fabric 1.2.0

  • R
  • May 16, 2026
  • 2.51 MB
  • 8
  • 1.21.1
  • Fabric

File Name

critmatic-fabric-1.21.1-1.2.0.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:critmatic-1540621:8099913"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

CritMatic for Minecraft, Change Log

v1.2.0 - 2026-05-16

Added

  • Fabric build alongside NeoForge for Minecraft 1.21.1, with near-full feature parity: popup notifications, custom sounds, Crit Log widget, tabbed settings screen, slash commands, key bindings, dedicated multiplayer server support.
  • Per-gear randomized crit affix. Each weapon and tool is stamped with its own crit chance + multiplier roll the first time you swing it, scaled by player level and a modded-gear heuristic. The old global Combat tab is gone; every gear piece now has its own personality.
  • About / support screen with author profile, X (Twitter), Discord, and Buy Me A Coffee links, opened from the settings screen.
  • 52 locales backfilled with the full v1.2.0 key set so command output, popups, and settings labels translate cleanly.
  • Bidirectional settings sync: /cm edits on the client now reach the dedicated Fabric server, and server-wide personal-best sound + chat packets feed every connected client.

Changed

  • Settings UI on Fabric rewritten 1:1 with NeoForge's three-layer flow (Settings -> tab -> editor) so the two loaders look and behave the same.
  • Repo split into multiloader layout (common/ + neoforge/ + fabric/). End users pick whichever loader jar matches their setup.

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/infiniteloopalc through 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 at com.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.properties and propagated to the generated neoforge.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 of CritMaticData + IgnoredItems, mirrors the WoW addon's Critmatic.db.profile.
  • PersistenceJson: load/save PlayerState as JSON at <MC>/config/critmatic/<uuid>.json with 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 @EventBusSubscriber that wires ClientPlayerNetworkEvent.LoggingIn/LoggingOut to the registry. Initialised from FMLClientSetupEvent.
  • 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 to CriticalHitEvent + LivingDamageEvent.Post + LivingHealEvent, keys by source item (mainhand for melee, projectile owner's mainhand for ranged), routes to CritMaticData.recordCrit / recordHit / recordHeal. Phase 3.0 uses critmatic:natural_regen as 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 -Xmx2G to give the modded client headroom during dev runs.