Files
Not-Enough-Crashes/1.12.2/README.md
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

58 lines
2.7 KiB
Markdown

# Not Enough Crashes — 1.12.2 (Forge) backport
This folder contains a **standalone Forge 1.12.2** backport of
[Not Enough Crashes](https://github.com/natanfudge/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.
```bash
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.