Files
Claude ff04a40c1d Add 1.12.2 Forge backport with CI build
Reimplements the core Not Enough Crashes features for Minecraft 1.12.2 on
the legacy Forge toolchain (ForgeGradle 2.3, MCP mappings, SpongePowered
Mixin), since Architectury/Fabric/Yarn do not support 1.12.2.

Features:
- Catches client game-loop crashes and shows a recoverable crash screen
  instead of closing the game (return to title / quit / open report).
- Blames the mod most likely responsible by mapping stack-trace classes
  back to their owning mod.
- Adds a Suspected Mods line to every crash report (client and server).

Mixin is shaded and bootstrapped by a small Forge core plugin. A GitHub
Actions workflow (.github/workflows/build-1.12.2.yml) builds it on JDK 8.
2026-06-03 17:18:32 +00:00
..

Not Enough Crashes — 1.12.2 (Forge) backport

This folder contains a standalone Forge 1.12.2 backport of Not Enough Crashes by Fudge.

The original mod (1.16+) is built with Architectury + Fabric Loom + Yarn mappings, none of which exist for 1.12.2. Fabric itself only started at 1.14, so a 1.12.2 port can only be Forge. This is therefore a reimplementation of the mod's core features against the legacy Forge 1.12.2 toolchain (ForgeGradle 2.3, MCP mappings, SpongePowered Mixin), not a literal copy of the 1.16 source.

What it does

  • Catches client crashes in the game loop and shows a recoverable crash screen instead of closing the game. From there you can return to the title screen, quit, or open the crash report.
  • Blames the mod that most likely caused the crash (by mapping the classes in the stack trace back to the jar they came from, and then to the owning mod).
  • Adds a "Suspected Mods" line to every crash report — this part also runs on the dedicated server, so server crash reports tell you which mod is at fault.

Client vs. server

The recoverable crash screen is, by nature, a client feature. On a dedicated server this mod does not prevent the server from stopping when it crashes — Forge/Minecraft has no equivalent of a client "crash screen" on the server. What it does do on the server is improve crash reports by listing the suspected mod(s). The mod is safe to install on both sides (acceptableRemoteVersions = "*").

Building

Requires JDK 8 (ForgeGradle 2.3 does not work on newer JDKs). The Gradle wrapper is pinned to Gradle 4.10.3, which ForgeGradle 2.3 requires.

cd 1.12.2
./gradlew build

The finished mod jar is written to 1.12.2/build/libs/.

CI builds this automatically on JDK 8 — see .github/workflows/build-1.12.2.yml.

Configuration

A config file is generated at config/notenoughcrashes.cfg:

  • catchCrashes (default true) — show the recoverable crash screen instead of quitting.
  • disableReturnToMainMenu (default false) — disable the "Back to title screen" button.
  • crashLimit (default 20) — quit after this many crashes in a row.
  • debugModIdentification (default false) — verbose logging of mod blaming.

Technical notes

  • Mixin is shaded into the jar and bootstrapped by a tiny Forge core plugin (fudge.notenoughcrashes.coremod.NecCoreMod), so no extra dependency is required.
  • MixinMinecraft cancels Minecraft#displayCrashReport (which would System.exit) and re-enters the game loop after showing the crash screen.
  • MixinCrashReport appends the suspected-mods list to the report's system details, on both sides.