mirror of
https://github.com/barkeser2002/Not-Enough-Crashes.git
synced 2026-09-25 05:19:59 +03:00
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.
58 lines
2.7 KiB
Markdown
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.
|