How yashr-cmd/crash-explainer works
CrashExplainer is a Minecraft crash-diagnosis mod for Forge and Fabric. Loader adapters invoke the core analyzer, which scans crash reports, rotated logs, and JVM error logs, turns text into reports, and passes them to an explainer. The default heuristic path applies registered rules and produces a diagnosis that the analyzer displays; processed-state storage prevents repeat handling. An optional, user-configured LLM explainer can call an OpenAI-compatible service and fall back to heuristics. Edges reflect README statements and sampled/indexed references; some internal dispatch details are not shown.
Main entry points: CrashAnalyzer.java Crash analyzer · LlmExplainer.java Optional LLM explainer · DiagnosticEngine.java Rule engine · rules Crash pattern rules
Components 19
Loader integration
- Fabric adapter
crashexplainer/loader-fabric/src/main/java/com/yash/crashexplainer/fabric/FabricCrashExplainer.java - Forge adapter
crashexplainer/loader-forge/src/main/java/com/yash/crashexplainer/forge/ForgeEarlyService.java
Crash intake
- Crash analyzer
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash report scan
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashReportScanner.java - Rotated log scan
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/LogFileScanner.java - JVM error scan
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/HsErrScanner.java - Crash report model
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashReport.java
Diagnosis
- Explainer config
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/ExplainerConfig.java - Heuristic explainer
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/HeuristicExplainer.java - Rule engine
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/DiagnosticEngine.java - Rule interface
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/Rule.java - Crash pattern rules
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/rules - Rule text utilities
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/rules/CrashReportUtils.java - Optional LLM explainer
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/LlmExplainer.java - Diagnosis result
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/Diagnosis.java
Results and state
- Report banner
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/BannerPrinter.java - Processed state
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/ProcessedStateStore.java
Other components
- Minecraft runtime
- Configured AI service
Connections 22
- Minecraft runtime → Fabric adapter: runs on
README.md - Minecraft runtime → Forge adapter: runs on
README.md - Fabric adapter → Crash analyzer: invokes
crashexplainer/loader-fabric/src/main/java/com/yash/crashexplainer/fabric/FabricCrashExplainer.java - Forge adapter → Crash analyzer: invokes
crashexplainer/loader-forge/src/main/java/com/yash/crashexplainer/forge/ForgeEarlyService.java - Crash analyzer → Crash report scan: scans
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → Rotated log scan: reads logs
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → JVM error scan: scans
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → Crash report model: creates
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → Explainer config: loads
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → Heuristic explainer: selects default
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → Optional LLM explainer: selects optionally
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → Processed state: tracks processed
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Crash analyzer → Report banner: prints diagnosis
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/CrashAnalyzer.java - Heuristic explainer → Rule engine: delegates to
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/HeuristicExplainer.java - Rule engine → Crash pattern rules: dispatches rules
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/DiagnosticEngine.java - Crash pattern rules → Rule text utilities: uses helpers
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/rules/MixinApplyFailureRule.java - Crash pattern rules → Rule interface: implements
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/rules/MixinApplyFailureRule.java - Rule engine → Diagnosis result: returns
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/DiagnosticEngine.java - Optional LLM explainer → Configured AI service: sends request
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/LlmExplainer.java - Optional LLM explainer → Heuristic explainer: falls back
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/LlmExplainer.java - Optional LLM explainer → Diagnosis result: parses result
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/LlmExplainer.java - Report banner → Diagnosis result: formats
crashexplainer/core/src/main/java/com/yash/crashexplainer/core/BannerPrinter.java