promotional bannermobile promotional banner

CritMatic

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

File Details

CritMatic 1.1.0

  • R
  • May 13, 2026
  • 3.35 MB
  • 5
  • 1.21.1
  • NeoForge

File Name

critmatic-1.1.0.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

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

Learn more about Curse Maven

CritMatic for Minecraft, Change Log

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.