Unlucky Launcher v0.0.1-alpha
CI / fmt (rustfmt --check) (push) Canceled after 0s
CI / clippy (ubuntu-latest) (push) Canceled after 0s
CI / clippy (windows-latest) (push) Canceled after 0s
CI / test (ubuntu-latest) (push) Canceled after 0s
CI / test (windows-latest) (push) Canceled after 0s
CI / build release (ubuntu-latest) (push) Canceled after 0s
CI / build release (windows-latest) (push) Canceled after 0s
Guards / core 零 UI 守门 (push) Canceled after 0s
Guards / 文件行数 ≤400 守门 (push) Canceled after 0s
Guards / 依赖许可与来源(cargo-deny) (push) Canceled after 0s
CI / fmt (rustfmt --check) (push) Canceled after 0s
CI / clippy (ubuntu-latest) (push) Canceled after 0s
CI / clippy (windows-latest) (push) Canceled after 0s
CI / test (ubuntu-latest) (push) Canceled after 0s
CI / test (windows-latest) (push) Canceled after 0s
CI / build release (ubuntu-latest) (push) Canceled after 0s
CI / build release (windows-latest) (push) Canceled after 0s
Guards / core 零 UI 守门 (push) Canceled after 0s
Guards / 文件行数 ≤400 守门 (push) Canceled after 0s
Guards / 依赖许可与来源(cargo-deny) (push) Canceled after 0s
Rust 原生单文件 Minecraft 启动器:CLI 完整可用(install/launch/accounts/java/diagnose/agent), MCP server 接入外部 Agent 工具,GUI 开发中。
This commit is contained in:
commit
bc41dfcf7d
517 files changed
+92844
No files matched your search
@@ -0,0 +1,141 @@
|
||||
# 规则库 · Fabric mod 解析(8 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的 Fabric 组(analyse/02 §7.3 第 5 组)。
|
||||
# Fabric 的 ModResolutionException 家族特征:异常后面跟一段以 " - " 开头的列表,
|
||||
# 因此这些规则用 file scope(跨行)。
|
||||
version: 1
|
||||
category: fabric
|
||||
rules:
|
||||
- id: fabric.mod_resolution
|
||||
severity: critical
|
||||
scope: file
|
||||
pattern: 'ModResolutionException: (?<reason>(.*)[\n\r]*( - (.*)[\n\r]*)+)'
|
||||
confidence: 0.75
|
||||
priority: 70
|
||||
cause:
|
||||
key: diagnose.cause.fabric.mod_resolution
|
||||
summary: 'Fabric 解析 mod 依赖失败(缺依赖/版本冲突/模组不配套)'
|
||||
detail: '按下方列出的 mod 名单逐个处理:缺依赖就补装,冲突就删一个'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: disable
|
||||
note: '按 Fabric 报的 mod 名单逐个禁用排查'
|
||||
sample: samples/fabric/mod_resolution.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_RESOLUTION'
|
||||
|
||||
- id: fabric.mod_resolution_conflict
|
||||
severity: critical
|
||||
pattern: 'ModResolutionException: Found conflicting mods: (?<sourcemod>.*) conflicts with (?<destmod>.*)'
|
||||
confidence: 0.92
|
||||
priority: 86
|
||||
suppress:
|
||||
- integrity.no_class_def_found
|
||||
- integrity.no_such_method
|
||||
cause:
|
||||
key: diagnose.cause.fabric.mod_resolution_conflict
|
||||
summary: 'Fabric 报告 mod 冲突:{sourcemod} 与 {destmod} 不能共存'
|
||||
detail: '两个只能留一个(或都升级到互相兼容的版本)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{sourcemod}'
|
||||
- '{destmod}'
|
||||
action: remove
|
||||
sample: samples/fabric/mod_resolution_conflict.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_RESOLUTION_CONFLICT'
|
||||
|
||||
- id: fabric.mod_resolution_missing
|
||||
severity: critical
|
||||
pattern: 'ModResolutionException: Could not find required mod: (?<sourcemod>.*) requires (?<destmod>.*)'
|
||||
confidence: 0.9
|
||||
priority: 85
|
||||
cause:
|
||||
key: diagnose.cause.fabric.mod_resolution_missing
|
||||
summary: '缺少前置 mod:{sourcemod} 需要 {destmod}'
|
||||
detail: '装上 {destmod} 的对应版本;装不上就删掉 {sourcemod}'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{sourcemod}'
|
||||
action: replace
|
||||
note: '补装前置 {destmod},或换掉 {sourcemod}'
|
||||
sample: samples/fabric/mod_resolution_missing.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_RESOLUTION_MISSING'
|
||||
|
||||
- id: fabric.mod_resolution_missing_minecraft
|
||||
severity: critical
|
||||
pattern: 'ModResolutionException: Could not find required mod: (?<mod>.*) requires \{minecraft @ (?<version>.*)\}'
|
||||
confidence: 0.9
|
||||
priority: 85
|
||||
cause:
|
||||
key: diagnose.cause.fabric.mod_resolution_missing_minecraft
|
||||
summary: '{mod} 要求 Minecraft {version},与当前实例版本不一致'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{mod}'
|
||||
action: replace
|
||||
note: '换该 mod 的 {version} 版本,或改实例版本'
|
||||
sample: samples/fabric/mod_resolution_missing_minecraft.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_RESOLUTION_MISSING_MINECRAFT'
|
||||
|
||||
- id: fabric.mod_resolution_collection
|
||||
severity: critical
|
||||
pattern: 'ModResolutionException: Could not resolve valid mod collection \(at: (?<sourcemod>.*) requires (?<destmod>.*)\)'
|
||||
confidence: 0.88
|
||||
priority: 84
|
||||
cause:
|
||||
key: diagnose.cause.fabric.mod_resolution_collection
|
||||
summary: 'mod 集合无法解析:{sourcemod} 与 {destmod} 的版本组合不成立'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{sourcemod}'
|
||||
action: upgrade
|
||||
sample: samples/fabric/mod_resolution_collection.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_RESOLUTION_COLLECTION'
|
||||
|
||||
- id: fabric.mod_resolution_details
|
||||
severity: warning
|
||||
pattern: '(\tMod File:|-- MOD |\tFailure message:)'
|
||||
confidence: 0.5
|
||||
priority: 45
|
||||
cause:
|
||||
key: diagnose.cause.fabric.mod_resolution_details
|
||||
summary: 'Fabric 打印了 mod 解析明细(Mod File / Failure message):具体结论见上方规则'
|
||||
detail: '这条只表示「日志里有解析失败明细」,用于把证据片段指给 AI/用户'
|
||||
fix_action:
|
||||
- kind: seek_help
|
||||
export_diagnostics: true
|
||||
sample: samples/fabric/mod_resolution_details.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_RESOLUTION0'
|
||||
|
||||
- id: fabric.loader_0_12
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.NoClassDefFoundError: org/spongepowered/asm/mixin/transformer/FabricMixinTransformerProxy'
|
||||
confidence: 0.85
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.fabric.loader_0_12
|
||||
summary: 'Fabric Loader 0.12 与旧 mixin 类不兼容(loader 删掉了 deprecated 类)'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: fabric
|
||||
note: '换匹配的 Fabric Loader 版本'
|
||||
sample: samples/fabric/loader_0_12.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FABRIC_VERSION_0_12'
|
||||
|
||||
- id: fabric.warnings
|
||||
severity: warning
|
||||
scope: file
|
||||
pattern: '(Warnings were found!|Incompatible mod set!|Incompatible mods found!)(.*?)[\n\r]+(?<reason>[^\[]+)\['
|
||||
confidence: 0.7
|
||||
priority: 62
|
||||
cause:
|
||||
key: diagnose.cause.fabric.warnings
|
||||
summary: 'Fabric 报告 mod 集合不兼容:{reason}'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: disable
|
||||
note: '按警告列表逐个禁用'
|
||||
sample: samples/fabric/warnings.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FABRIC_WARNINGS'
|
||||
@@ -0,0 +1,136 @@
|
||||
# 规则库 · Forge mod 解析(8 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的 Forge 组(analyse/02 §7.3 第 6 组)。
|
||||
version: 1
|
||||
category: forge
|
||||
rules:
|
||||
- id: forge.missing_dependencies
|
||||
severity: critical
|
||||
scope: file
|
||||
pattern: 'Missing or unsupported mandatory dependencies:(?<reason>(.*)[\n\r]*(\t(.*)[\n\r]*)+)'
|
||||
confidence: 0.85
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.forge.missing_dependencies
|
||||
summary: 'Forge 报「缺少或不支持强制依赖」:有 mod 的前置没装或版本不对'
|
||||
detail: '按报错里的 mod 名补齐前置;装不上就删掉依赖它的 mod'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: disable
|
||||
note: '按报错逐条补齐/禁用'
|
||||
sample: samples/forge/missing_dependencies.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FORGEMOD_RESOLUTION'
|
||||
|
||||
- id: forge.duplicate_mods
|
||||
severity: critical
|
||||
scope: file
|
||||
pattern: 'Found duplicate mods:(?<reason>(.*)(?:\r\n|\n|\r)*(\t(.*)(?:\r\n|\n|\r)*)+)'
|
||||
confidence: 0.9
|
||||
priority: 86
|
||||
cause:
|
||||
key: diagnose.cause.forge.duplicate_mods
|
||||
summary: '同一个 mod 装了两份(mods 目录里重复的 jar)'
|
||||
detail: '删掉重复的那一份,只留一个版本'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: remove
|
||||
note: '保留一个版本'
|
||||
sample: samples/forge/duplicate_mods.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FORGE_FOUND_DUPLICATE_MODS'
|
||||
|
||||
- id: forge.duplicated_mod
|
||||
severity: critical
|
||||
pattern: 'Found a duplicate mod (?<name>.*) at (?<path>.*)'
|
||||
confidence: 0.92
|
||||
priority: 88
|
||||
cause:
|
||||
key: diagnose.cause.forge.duplicated_mod
|
||||
summary: 'mod 重复:{name} 同时出现在 {path}'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{name}'
|
||||
action: remove
|
||||
note: '删除路径 {path} 那一份'
|
||||
sample: samples/forge/duplicated_mod.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.DUPLICATED_MOD'
|
||||
|
||||
- id: forge.repeat_installation
|
||||
severity: critical
|
||||
pattern: 'MultipleArgumentsForOptionException: Found multiple arguments for option (.*?), but you asked for only one'
|
||||
confidence: 0.85
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.forge.repeat_installation
|
||||
summary: 'Forge 被装了两次(同一版本出现多个安装参数)'
|
||||
detail: '删掉重复的 Forge 安装/版本 JSON,再重装一次'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: forge
|
||||
sample: samples/forge/repeat_installation.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FORGE_REPEAT_INSTALLATION'
|
||||
|
||||
- id: forge.optifine_repeat_installation
|
||||
severity: critical
|
||||
pattern: 'ResolutionException: Module optifine reads another module named optifine'
|
||||
confidence: 0.88
|
||||
priority: 82
|
||||
cause:
|
||||
key: diagnose.cause.forge.optifine_repeat_installation
|
||||
summary: 'OptiFine 装了两份(mods 里一个 + 自动安装一个)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- optifine
|
||||
action: remove
|
||||
note: '只保留一种安装方式'
|
||||
sample: samples/forge/optifine_repeat_installation.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.OPTIFINE_REPEAT_INSTALLATION'
|
||||
|
||||
- id: forge.too_many_mods
|
||||
severity: critical
|
||||
pattern: 'maximum id range exceeded'
|
||||
confidence: 0.9
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.forge.too_many_mods
|
||||
summary: '装的 mod 太多,方块/物品 ID 超出上限(1.12 及更早的经典问题)'
|
||||
detail: '删掉一部分 mod,或换用 1.13+ 的版本(不再有 ID 上限)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: disable
|
||||
note: '减量或换版本'
|
||||
sample: samples/forge/too_many_mods.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.TOO_MANY_MODS_LEAD_TO_EXCEEDING_THE_ID_LIMIT'
|
||||
|
||||
- id: forge.module_name_invalid
|
||||
severity: warning
|
||||
pattern: >-
|
||||
Invalid module name: '' is not a Java identifier
|
||||
confidence: 0.8
|
||||
priority: 70
|
||||
cause:
|
||||
key: diagnose.cause.forge.module_name_invalid
|
||||
summary: '某个 mod 的 jar 文件名不含英文字母/数字,Forge 把它当成非法 JPMS 模块名(如「拔刀剑.jar」)'
|
||||
detail: '把该 jar 改成英文文件名(保留 .jar 后缀)再启动'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: replace
|
||||
note: '把 jar 改成英文文件名'
|
||||
sample: samples/forge/module_name_invalid.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_NAME'
|
||||
|
||||
- id: forge.bootstrap_failed
|
||||
severity: critical
|
||||
pattern: 'Failed to create mod instance\. ModID: (?<id>.*?),'
|
||||
confidence: 0.85
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.forge.bootstrap_failed
|
||||
summary: 'mod {id} 的实例创建失败(初始化就抛异常)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{id}'
|
||||
action: disable
|
||||
sample: samples/forge/bootstrap_failed.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.BOOTSTRAP_FAILED'
|
||||
@@ -0,0 +1,221 @@
|
||||
# 规则库 · 显卡 / 图形(11 条 = HMCL 移植 6 + Vulkan 组 5)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的图形组(analyse/02 §7.3 第 3 组);
|
||||
# Vulkan 组见文件末尾(依据 research/05-mc-vulkan.md §3.4 的 renderpearl 原因码)。
|
||||
version: 1
|
||||
category: graphics
|
||||
rules:
|
||||
- id: graphics.gl_operation_failure
|
||||
severity: warning
|
||||
pattern: '(1282: Invalid operation|Maybe try a lower resolution resourcepack\?)'
|
||||
confidence: 0.7
|
||||
priority: 60
|
||||
cause:
|
||||
key: diagnose.cause.graphics.gl_operation_failure
|
||||
summary: '某个 mod/光影包做了非法的 OpenGL 操作(GL_INVALID_OPERATION)'
|
||||
detail: '换掉最近装的光影/资源包,或把资源包分辨率降下来'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: renderer
|
||||
suggested_value: 'OpenGL 兼容模式'
|
||||
note: '先低分辨率资源包验证'
|
||||
sample: samples/graphics/gl_operation_failure.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.GL_OPERATION_FAILURE'
|
||||
|
||||
- id: graphics.opengl_not_supported
|
||||
severity: critical
|
||||
pattern: 'The driver does not appear to support OpenGL'
|
||||
confidence: 0.85
|
||||
priority: 75
|
||||
cause:
|
||||
key: diagnose.cause.graphics.opengl_not_supported
|
||||
summary: '显卡驱动不支持 OpenGL(多半是没装显卡驱动,走了软件渲染)'
|
||||
detail: '装/更新显卡厂商驱动;虚拟机里需要开 3D 加速'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: driver
|
||||
update_driver: true
|
||||
sample: samples/graphics/opengl_not_supported.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.OPENGL_NOT_SUPPORTED'
|
||||
|
||||
- id: graphics.graphics_driver
|
||||
severity: critical
|
||||
# HMCL 的跨行贪婪模式(EXCEPTION_ACCESS_VIOLATION … # C [ig/nvoglv/atio)→ file scope。
|
||||
# 末四段是 SDL 变体:26.3-snapshot-4 起窗口层 GLFW→SDL(lwjgl-glfw 消失、lwjgl-sdl 出现),
|
||||
# 同类故障的原文会变成 SDL_GetError 的文本;旧 GLFW 模式保留(老版本日志仍需要)。
|
||||
scope: file
|
||||
pattern: '(Pixel format not accelerated|GLX: Failed to create context: GLXBadFBConfig|Couldn''t set pixel format|net\.minecraftforge\.fml\.client\.SplashProgress|org\.lwjgl\.LWJGLException|EXCEPTION_ACCESS_VIOLATION(.|\n|\r)+# C {2}\[(ig|atio|nvoglv)|SDL_CreateWindow failed|Couldn''t find matching render driver|No available video device)'
|
||||
confidence: 0.8
|
||||
priority: 78
|
||||
cause:
|
||||
key: diagnose.cause.graphics.graphics_driver
|
||||
summary: '显卡驱动侧创建 OpenGL 上下文失败(像素格式/驱动崩溃)'
|
||||
detail: '更新显卡驱动并重启;老显卡可用软渲染或换 OpenGL 兼容模式'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: driver
|
||||
update_driver: true
|
||||
- kind: change_graphics
|
||||
setting: software_renderer
|
||||
note: '驱动更新无效时用软渲染兜底(性能会掉)'
|
||||
sample: samples/graphics/graphics_driver.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.GRAPHICS_DRIVER'
|
||||
|
||||
- id: graphics.macos_display_port
|
||||
severity: critical
|
||||
# 原 GLFW 模式保留。后两段是 SDL 变体(26.3 起窗口层换 SDL,无显示器/远程会话在 SDL 侧
|
||||
# 报 SDL_Init 失败)——**但它必须和 `cocoa` 同时出现才命中**:SDL 在 macOS 上的视频驱动
|
||||
# 就叫 `cocoa`,用它把本规则的 macOS 特异性钉住,免得 Windows/Linux 的 SDL_Init 失败被
|
||||
# 误归因成「macOS 显示器问题」。⚠️ SDL 侧原文未在 26.3 实机验证(预测模式),拿到真实
|
||||
# 日志后按实际文本收紧;宁可漏诊也不要跨平台误归因。
|
||||
pattern: '(java\.lang\.IllegalStateException: GLFW error before init: \[0x10008\]Cocoa: Failed to find service port for display|(?i:cocoa).*SDL_Init.*failed|SDL_Init.*failed.*(?i:cocoa))'
|
||||
confidence: 0.85
|
||||
priority: 78
|
||||
cause:
|
||||
key: diagnose.cause.graphics.macos_display_port
|
||||
summary: 'macOS 上 GLFW 初始化窗口失败(Cocoa 找不到 display service port)'
|
||||
detail: '多见于远程桌面/无显示器会话;换成本机登录或升级 macOS 后再试'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: any
|
||||
note: 'macOS 会话/显示器问题'
|
||||
sample: samples/graphics/macos_display_port.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MACOS_FAILED_TO_FIND_SERVICE_PORT_FOR_DISPLAY'
|
||||
|
||||
- id: graphics.resolution_too_high
|
||||
severity: warning
|
||||
pattern: 'Maybe try a (lower resolution|lowerresolution) (resourcepack|texturepack)\?'
|
||||
confidence: 0.8
|
||||
priority: 65
|
||||
cause:
|
||||
key: diagnose.cause.graphics.resolution_too_high
|
||||
summary: '资源包分辨率过高(游戏直接提示换低分辨率资源包)'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: resolution
|
||||
suggested_value: '低分辨率资源包'
|
||||
sample: samples/graphics/resolution_too_high.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.RESOLUTION_TOO_HIGH'
|
||||
|
||||
- id: graphics.rtss_sodium
|
||||
severity: warning
|
||||
pattern: 'RivaTuner Statistics Server \(RTSS\) is not compatible with Sodium'
|
||||
confidence: 0.9
|
||||
priority: 70
|
||||
cause:
|
||||
key: diagnose.cause.graphics.rtss_sodium
|
||||
summary: 'RTSS(微星小飞机/帧数显示)与 Sodium 不兼容'
|
||||
detail: '关掉或卸载 RTSS 的 OSD 覆盖层,或改用 Sodium 兼容的帧数显示'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: overlay
|
||||
suggested_value: '关闭 RTSS 覆盖层'
|
||||
sample: samples/graphics/rtss_sodium.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.RTSS_FOREST_SODIUM'
|
||||
|
||||
# ── Vulkan 后端组(MC 26.2+ 的实验性 Vulkan 渲染)────────────────────────────
|
||||
# 证据:research/05-mc-vulkan.md §3.4。renderpearl 的
|
||||
# `BackendCreationException$Reason` 有五个稳定原因码(四个 vulkan_* + opengl_missing),
|
||||
# 它们同时出现在 latest.log 的 `Backend failure reason: <码>` 与崩溃报告的
|
||||
# `Backend failure reason` 行,是最可靠的落点(比英文正文稳,正文会随版本改)。
|
||||
# 注意语义:26.2/26.3 的 Vulkan 首选失败会**自动回落 OpenGL**,所以单条 vulkan_* 命中
|
||||
# 通常不是崩溃主因(warning);只有五个后端全挂才是 critical(见最后一条)。
|
||||
|
||||
- id: graphics.vulkan_loader_missing
|
||||
severity: warning
|
||||
pattern: '(Vulkan loader library is missing|vulkan_loader_missing)'
|
||||
confidence: 0.85
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.graphics.vulkan_loader_missing
|
||||
summary: '机器上没有 Vulkan loader(Vulkan 后端起不来,游戏已回落 OpenGL)'
|
||||
detail: '装/更新显卡驱动(Windows 需要 vulkan-1.dll,Linux 需要 libvulkan.so.1);装不上就改用 OpenGL 后端'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: graphics_api
|
||||
suggested_value: 'opengl'
|
||||
note: 'Vulkan loader 缺失时强制 OpenGL,避免每次启动都白试一遍'
|
||||
- kind: change_graphics
|
||||
setting: driver
|
||||
update_driver: true
|
||||
sample: samples/graphics/vulkan_loader_missing.log
|
||||
source: 'research/05-mc-vulkan.md §3.4(renderpearl BackendCreationException.Reason)'
|
||||
|
||||
- id: graphics.vulkan_device_version_too_low
|
||||
severity: warning
|
||||
pattern: '(vulkan_device_version_too_low|Vulkan [0-9]\.[0-9].{0,40}at least [0-9]\.[0-9] required)'
|
||||
confidence: 0.85
|
||||
priority: 78
|
||||
cause:
|
||||
key: diagnose.cause.graphics.vulkan_device_version_too_low
|
||||
summary: '显卡/驱动支持的 Vulkan 版本低于 1.2(Vulkan 后端起不来)'
|
||||
detail: '更新显卡驱动;驱动停更的老卡(10 年以上)没有 Vulkan 1.2,只能继续用 OpenGL'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: graphics_api
|
||||
suggested_value: 'opengl'
|
||||
- kind: change_graphics
|
||||
setting: driver
|
||||
update_driver: true
|
||||
sample: samples/graphics/vulkan_device_version_too_low.log
|
||||
source: 'research/05-mc-vulkan.md §3.4'
|
||||
|
||||
- id: graphics.vulkan_missing_extension
|
||||
severity: warning
|
||||
pattern: '(vulkan_missing_extension|missing: .*VK_KHR_(dynamic_rendering|push_descriptor))'
|
||||
confidence: 0.85
|
||||
priority: 76
|
||||
cause:
|
||||
key: diagnose.cause.graphics.vulkan_missing_extension
|
||||
summary: '驱动缺 Vulkan 必需扩展(VK_KHR_dynamic_rendering / VK_KHR_push_descriptor)'
|
||||
detail: 'MC 26.2+ 的 Vulkan 后端要求 VK 1.2 + dynamic_rendering + push_descriptor,三者缺一就跑不了;Mesa Dozen 也不支持 push_descriptor'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: graphics_api
|
||||
suggested_value: 'opengl'
|
||||
- kind: change_graphics
|
||||
setting: driver
|
||||
update_driver: true
|
||||
note: '只有在驱动有新版本时才可能补上扩展'
|
||||
sample: samples/graphics/vulkan_missing_extension.log
|
||||
source: 'research/05-mc-vulkan.md §3.4 + §4.4(Dozen 反例)'
|
||||
|
||||
- id: graphics.vulkan_missing_feature
|
||||
severity: warning
|
||||
pattern: '(vulkan_missing_feature|missing capabilities: .*VULKAN_CORE_1_2)'
|
||||
confidence: 0.8
|
||||
priority: 74
|
||||
cause:
|
||||
key: diagnose.cause.graphics.vulkan_missing_feature
|
||||
summary: '驱动缺 Vulkan 必需特性集(VULKAN_CORE_1_2)'
|
||||
detail: '同上,属于驱动能力不足;老核显/虚拟机里常见,用 OpenGL 后端即可'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: graphics_api
|
||||
suggested_value: 'opengl'
|
||||
sample: samples/graphics/vulkan_missing_feature.log
|
||||
source: 'research/05-mc-vulkan.md §3.4'
|
||||
|
||||
- id: graphics.no_graphics_backend
|
||||
severity: critical
|
||||
pattern: 'No supported graphics backend was found'
|
||||
confidence: 0.9
|
||||
priority: 82
|
||||
suppress:
|
||||
- graphics.vulkan_loader_missing
|
||||
- graphics.vulkan_device_version_too_low
|
||||
- graphics.vulkan_missing_extension
|
||||
- graphics.vulkan_missing_feature
|
||||
cause:
|
||||
key: diagnose.cause.graphics.no_graphics_backend
|
||||
summary: 'Vulkan 与 OpenGL 两个后端都创建失败(26.2+ 只有这两条路)'
|
||||
detail: '硬件/驱动两侧都不满足:先更新显卡驱动;虚拟机需要开 3D 加速;实在不行只能换机器'
|
||||
fix_action:
|
||||
- kind: change_graphics
|
||||
setting: graphics_api
|
||||
suggested_value: 'opengl'
|
||||
note: '先确认 Vulkan 失败原因再决定是否强推 OpenGL'
|
||||
- kind: change_graphics
|
||||
setting: software_renderer
|
||||
note: '软渲染兜底能起来但基本没法玩,只用于导数据/排查'
|
||||
sample: samples/graphics/no_graphics_backend.log
|
||||
source: 'research/05-mc-vulkan.md §1.5(两个后端全失败才崩)'
|
||||
@@ -0,0 +1,138 @@
|
||||
# 规则库 · 文件与安装完整性(8 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的完整性组(analyse/02 §7.3 第 4 组)。
|
||||
# 组内约定:通用异常(NoSuchMethodError / NoClassDefFoundError)优先级低,
|
||||
# 让「安装不完整 / jar 被解压 / mod 冲突」这类能定位根因的规则通过 suppress 把它们降级为次生结论。
|
||||
version: 1
|
||||
category: integrity
|
||||
rules:
|
||||
- id: integrity.file_changed
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.SecurityException: SHA1 digest error for (?<file>.*)|signer information does not match signer information of other classes in the same package'
|
||||
confidence: 0.85
|
||||
priority: 85
|
||||
cause:
|
||||
key: diagnose.cause.integrity.file_changed
|
||||
summary: '游戏文件被改过(SHA1 校验不一致):jar 内容与清单哈希对不上'
|
||||
detail: '重新下载/校验该文件;不要手改 jar 里的内容'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: game_jar
|
||||
path_hint: '{file}'
|
||||
sample: samples/integrity/file_changed.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FILE_CHANGED'
|
||||
|
||||
- id: integrity.no_such_method
|
||||
severity: warning
|
||||
pattern: 'java\.lang\.NoSuchMethodError: (?<class>.*?)'
|
||||
confidence: 0.6
|
||||
priority: 40
|
||||
cause:
|
||||
key: diagnose.cause.integrity.no_such_method
|
||||
summary: 'NoSuchMethodError:加载器/coremod 注入的东西与当前库版本不匹配'
|
||||
detail: '常见于 mod 与游戏版本/Forge 版本不配套;重装加载器或删掉冲突 mod'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: loader
|
||||
note: '先重装加载器;仍失败再逐个禁用 mod'
|
||||
sample: samples/integrity/no_such_method.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.NO_SUCH_METHOD_ERROR'
|
||||
|
||||
- id: integrity.no_class_def_found
|
||||
severity: warning
|
||||
pattern: 'java\.lang\.NoClassDefFoundError: (?<class>.*)'
|
||||
confidence: 0.6
|
||||
priority: 40
|
||||
cause:
|
||||
key: diagnose.cause.integrity.no_class_def_found
|
||||
summary: 'NoClassDefFoundError:缺少类文件(库没下全 / jar 被解压 / mod 不配套)'
|
||||
detail: '先检查 libraries 是否完整,再排查 mods 里的解压目录'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: libraries
|
||||
sample: samples/integrity/no_class_def_found.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.NO_CLASS_DEF_FOUND_ERROR'
|
||||
|
||||
- id: integrity.illegal_access
|
||||
severity: warning
|
||||
pattern: 'java\.lang\.IllegalAccessError: tried to access class (.*?) from class (?<class>.*?)'
|
||||
confidence: 0.55
|
||||
priority: 45
|
||||
cause:
|
||||
key: diagnose.cause.integrity.illegal_access
|
||||
summary: 'IllegalAccessError:某个 coremod 想反射访问别的类的内部成员(在新 JDK 上被封了)'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: loader
|
||||
note: '或换该 coremod/mod 的兼容版本'
|
||||
sample: samples/integrity/illegal_access.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.ILLEGAL_ACCESS_ERROR'
|
||||
|
||||
- id: integrity.file_already_exists
|
||||
severity: warning
|
||||
pattern: 'java\.nio\.file\.FileAlreadyExistsException: (?<file>.*)'
|
||||
confidence: 0.75
|
||||
priority: 60
|
||||
cause:
|
||||
key: diagnose.cause.integrity.file_already_exists
|
||||
summary: '某个 mod 要求一个「不该存在」的文件/目录,导致写入失败'
|
||||
detail: '按提示删掉该文件(通常是玩家手建的空目录/unzip 残留)'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: mods
|
||||
path_hint: '{file}'
|
||||
note: '按路径删掉多余文件'
|
||||
sample: samples/integrity/file_already_exists.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FILE_ALREADY_EXISTS'
|
||||
|
||||
- id: integrity.mod_files_decompressed
|
||||
severity: critical
|
||||
pattern: '(The directories below appear to be extracted jar files\. Fix this before you continue|Extracted mod jars found, loading will NOT continue)'
|
||||
confidence: 0.95
|
||||
priority: 90
|
||||
suppress:
|
||||
- integrity.no_class_def_found
|
||||
- integrity.no_such_method
|
||||
cause:
|
||||
key: diagnose.cause.integrity.mod_files_decompressed
|
||||
summary: 'mods 目录里有被解压成文件夹的 jar:加载器会直接拒绝启动'
|
||||
detail: '把解压出来的目录删掉,只保留 .jar 文件(很多压缩软件双击就解压了)'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: mods
|
||||
note: '删掉解压出来的目录'
|
||||
sample: samples/integrity/mod_files_decompressed.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_FILES_ARE_DECOMPRESSED'
|
||||
|
||||
- id: integrity.incomplete_forge
|
||||
severity: critical
|
||||
pattern: '(java\.io\.UncheckedIOException: java\.io\.IOException: Invalid paths argument, contained no existing paths: \[(.*?)(forge-(.*?)-client\.jar|fmlcore-(.*?)\.jar)\]|Failed to find Minecraft resource version (.*?) at (.*?)forge-(.*?)-client\.jar|Cannot find launch target fmlclient, unable to launch|java\.lang\.IllegalStateException: Could not find net/minecraft/client/Minecraft\.class in classloader SecureModuleClassLoader)'
|
||||
confidence: 0.9
|
||||
priority: 88
|
||||
suppress:
|
||||
- integrity.no_class_def_found
|
||||
- integrity.no_such_method
|
||||
cause:
|
||||
key: diagnose.cause.integrity.incomplete_forge
|
||||
summary: 'Forge 安装不完整(缺 forge-*-client.jar / fmlcore)'
|
||||
detail: '重装该版本的 Forge,并检查 libraries 是否下全'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: forge
|
||||
sample: samples/integrity/incomplete_forge.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.INCOMPLETE_FORGE_INSTALLATION'
|
||||
|
||||
- id: integrity.unsatisfied_link
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.UnsatisfiedLinkError: Failed to locate library: (?<name>.*)'
|
||||
confidence: 0.85
|
||||
priority: 82
|
||||
cause:
|
||||
key: diagnose.cause.integrity.unsatisfied_link
|
||||
summary: '找不到原生库(natives):{name} 没解压出来或被杀软删了'
|
||||
detail: '重装组件(重新解压 natives);Windows 上检查杀软隔离区'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: natives
|
||||
path_hint: '{name}'
|
||||
sample: samples/integrity/unsatisfied_link.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.UNSATISFIED_LINK_ERROR'
|
||||
@@ -0,0 +1,142 @@
|
||||
# 规则库 · JVM / Java 版本(8 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule(analyse/02 §7.3 第 1 组)。
|
||||
# schema 见 ../CONTRACT.md §2:pattern(regex) -> {cause, confidence, fix_action[]}
|
||||
version: 1
|
||||
category: jvm
|
||||
rules:
|
||||
- id: jvm.openj9
|
||||
severity: critical
|
||||
pattern: '(Open J9 is not supported|OpenJ9 is incompatible|\.J9VMInternals\.)'
|
||||
confidence: 0.9
|
||||
priority: 88
|
||||
cause:
|
||||
key: diagnose.cause.jvm.openj9
|
||||
summary: '当前用的是 OpenJ9 虚拟机:Minecraft 与绝大多数 mod 只支持 HotSpot(Oracle/OpenJDK)'
|
||||
detail: '请换成 HotSpot 的 Java 8/17/21(Adoptium、Zulu、Microsoft OpenJDK 的 hotspot 版本都可以)'
|
||||
fix_action:
|
||||
- kind: change_java
|
||||
vendor: hotspot
|
||||
note: 'OpenJ9 不兼容,换 HotSpot'
|
||||
sample: samples/jvm/openj9.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.OPENJ9'
|
||||
|
||||
- id: jvm.need_jdk11
|
||||
severity: critical
|
||||
pattern: '(no such method: sun\.misc\.Unsafe\.defineAnonymousClass\(Class,byte\[\],Object\[\]\)Class/invokeVirtual|java\.lang\.UnsupportedClassVersionError: icyllis/modernui/forge/MixinConnector has been compiled by a more recent version of the Java Runtime \(class file version 55\.0\), this version of the Java Runtime only recognizes class file versions up to 52\.0|java\.lang\.IllegalArgumentException: The requested compatibility level JAVA_11 could not be set\. Level is not supported by the active JRE or ASM version)'
|
||||
confidence: 0.92
|
||||
priority: 90
|
||||
cause:
|
||||
key: diagnose.cause.jvm.need_jdk11
|
||||
summary: '模组/加载器需要 Java 11,当前 Java 版本不够'
|
||||
detail: '把实例的 Java 换到 11 或更高(1.17+ 的游戏通常要 17/21)'
|
||||
fix_action:
|
||||
- kind: change_java
|
||||
required_major: 11
|
||||
sample: samples/jvm/need_jdk11.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.NEED_JDK11'
|
||||
|
||||
- id: jvm.too_old_java
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.UnsupportedClassVersionError: (.*?) version (?<expected>\d+)\.0'
|
||||
confidence: 0.92
|
||||
priority: 88
|
||||
cause:
|
||||
key: diagnose.cause.jvm.too_old_java
|
||||
summary: 'Java 版本过低:无法加载用 class file version {expected} 编译的类,请换用更高版本的 Java'
|
||||
detail: '这个 class 版本号减去 44 就是所需的 Java 大版本(52→Java 8、61→Java 17)'
|
||||
fix_action:
|
||||
- kind: change_java
|
||||
class_file_version_group: expected
|
||||
sample: samples/jvm/too_old_java.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.TOO_OLD_JAVA'
|
||||
|
||||
- id: jvm.32bit
|
||||
severity: critical
|
||||
pattern: '(Could not reserve enough space for (.*?)KB object heap|The specified size exceeds the maximum representable size|Invalid maximum heap size)'
|
||||
scope: line
|
||||
confidence: 0.9
|
||||
priority: 92
|
||||
suppress:
|
||||
- memory.out_of_memory
|
||||
cause:
|
||||
key: diagnose.cause.jvm.32bit
|
||||
summary: '分配堆内存失败:多半是 32 位 Java 或 -Xmx 超过系统可用内存'
|
||||
detail: '32 位 Java 最多只能用约 1.5 GB;换 64 位 Java 或把 -Xmx 降到 2048 MB 以下'
|
||||
fix_action:
|
||||
- kind: adjust_memory
|
||||
need_64bit_java: true
|
||||
min_xmx_mb: 1024
|
||||
- kind: change_java
|
||||
required_major: 17
|
||||
note: '32 位换 64 位'
|
||||
sample: samples/jvm/jvm_32bit.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.JVM_32BIT'
|
||||
|
||||
- id: jvm.jdk_9
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.ClassCastException: (java\.base/jdk|class jdk)'
|
||||
confidence: 0.8
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.jvm.jdk_9
|
||||
summary: '游戏只能在 Java 8 上跑(Forge/旧核心库不兼容 Java 9+),当前 Java 版本太高'
|
||||
fix_action:
|
||||
- kind: change_java
|
||||
max_major: 8
|
||||
sample: samples/jvm/jdk_9.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.JDK_9'
|
||||
|
||||
- id: jvm.version_too_high
|
||||
severity: critical
|
||||
pattern: '(Unable to make protected final java\.lang\.Class java\.lang\.ClassLoader\.defineClass|java\.lang\.NoSuchFieldException: ucp|Unsupported class file major version|because module java\.base does not export|java\.lang\.ClassNotFoundException: jdk\.nashorn\.api\.scripting\.NashornScriptEngineFactory|java\.lang\.ClassNotFoundException: java\.lang\.invoke\.LambdaMetafactory|Exception in thread "main" java\.lang\.NullPointerException: Cannot read the array length because "urls" is null)'
|
||||
confidence: 0.85
|
||||
priority: 84
|
||||
cause:
|
||||
key: diagnose.cause.jvm.version_too_high
|
||||
summary: 'Java 版本过高:老版本 Forge/核心库用了被新 JDK 移除或封装的接口'
|
||||
detail: '1.16 及更早优先用 Java 8;1.17–1.20.4 用 Java 17;1.20.5+ 用 Java 21'
|
||||
fix_action:
|
||||
- kind: change_java
|
||||
vendor: hotspot
|
||||
note: '降到该游戏版本要求的 Java'
|
||||
- kind: reinstall
|
||||
component: loader
|
||||
note: '或把 Forge/加载器升级到支持新 Java 的版本'
|
||||
sample: samples/jvm/java_version_is_too_high.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.JAVA_VERSION_IS_TOO_HIGH'
|
||||
|
||||
- id: jvm.modlauncher_8
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.NoSuchMethodError: (''void sun\.security\.util\.ManifestEntryVerifier\.<init>\(java\.util\.jar\.Manifest\)''|sun\.security\.util\.ManifestEntryVerifier\.<init>\(Ljava/util/jar/Manifest;\)V)'
|
||||
confidence: 0.9
|
||||
priority: 86
|
||||
cause:
|
||||
key: diagnose.cause.jvm.modlauncher_8
|
||||
summary: 'ModLauncher 8 与当前 Java 不兼容(JDK-8273826):1.16+ Forge 在新 JDK 上会这样崩'
|
||||
fix_action:
|
||||
- kind: change_java
|
||||
max_major: 8
|
||||
- kind: reinstall
|
||||
component: forge
|
||||
note: '或升级 Forge 到新版'
|
||||
sample: samples/jvm/modlauncher_8.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MODLAUNCHER_8'
|
||||
|
||||
- id: jvm.mac_jdk8u261
|
||||
severity: critical
|
||||
pattern: >-
|
||||
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!'
|
||||
confidence: 0.85
|
||||
priority: 82
|
||||
cause:
|
||||
key: diagnose.cause.jvm.mac_jdk8u261
|
||||
summary: 'macOS 上 JDK 8u261+ 用新 Xcode 编译导致的 Forge/OptiFine 崩溃(sp614x/optifine#4824)'
|
||||
detail: '换 Java 8u252 及更早,或升级 Forge/OptiFine'
|
||||
fix_action:
|
||||
- kind: change_java
|
||||
max_major: 8
|
||||
note: '优先试 8u252'
|
||||
- kind: reinstall
|
||||
component: optifine
|
||||
sample: samples/jvm/mac_jdk8u261.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MAC_JDK_8U261'
|
||||
@@ -0,0 +1,39 @@
|
||||
# 规则库 · 内存(2 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的内存组(analyse/02 §7.3 第 2 组)。
|
||||
version: 1
|
||||
category: memory
|
||||
rules:
|
||||
- id: memory.out_of_memory
|
||||
severity: critical
|
||||
# 最后一条是跨行组合("Error occurred during initialization of VM" + "Too small maximum heap"),
|
||||
# 因此整条规则用 file scope;HMCL 的 \R 在 Rust regex 里写成 (?:\r\n|\n|\r)。
|
||||
scope: file
|
||||
pattern: '(java\.lang\.OutOfMemoryError|The system is out of physical RAM or swap space|Out of Memory Error|Error occurred during initialization of VM(?:\r\n|\n|\r)Too small maximum heap)'
|
||||
confidence: 0.9
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.memory.out_of_memory
|
||||
summary: '游戏内存不足(OutOfMemoryError):-Xmx 太小,或装的 mod 太多/整合包太大'
|
||||
detail: '把 -Xmx 调到物理内存的一半左右(一般 4096–8192 MB),装光影/大量 mod 时适度加大'
|
||||
fix_action:
|
||||
- kind: adjust_memory
|
||||
min_xmx_mb: 2048
|
||||
note: '优先加大 -Xmx;若已经是 32 位 Java,先换 64 位'
|
||||
sample: samples/memory/out_of_memory.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.OUT_OF_MEMORY'
|
||||
|
||||
- id: memory.memory_exceeded
|
||||
severity: critical
|
||||
pattern: 'There is insufficient memory for the Java Runtime Environment to continue'
|
||||
confidence: 0.88
|
||||
priority: 82
|
||||
cause:
|
||||
key: diagnose.cause.memory.memory_exceeded
|
||||
summary: '系统物理内存/交换区耗尽:JVM 连续分配失败,整机内存不够'
|
||||
detail: '关掉占内存的程序、降低 -Xmx,或扩大系统虚拟内存(页面文件)'
|
||||
fix_action:
|
||||
- kind: adjust_memory
|
||||
increase_system_swap: true
|
||||
note: '整机内存不足,不只是 -Xmx 的问题'
|
||||
sample: samples/memory/memory_exceeded.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MEMORY_EXCEEDED'
|
||||
@@ -0,0 +1,152 @@
|
||||
# 规则库 · 模组互斥(8 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的互斥组(analyse/02 §7.3 第 8 组):
|
||||
# 具体到某个知名 mod 与 OptiFine / Sodium 的成名冲突,修复动作几乎都是「删 OptiFine 或其对手」。
|
||||
version: 1
|
||||
category: mod_conflict
|
||||
rules:
|
||||
- id: conflict.optifine_forge
|
||||
severity: critical
|
||||
scope: file
|
||||
# 移植说明:HMCL 原文里的 \> / \< 在这里改成裸 > / <(正则里 \< \> 是词边界断言,要字面量得写裸字符)。
|
||||
# 末尾 alternative 保持 upstream 语义:`\(Reflector\.java)` 的前置 \( 是**字面括号**,尾部裸 ) 才是**闭合外层分组**,
|
||||
# 因此它是前缀匹配。这里显式写成 `\(Reflector\.java(?::\d+)?\))`:裸 `(Reflector.java)` 与带行号的
|
||||
# `(Reflector.java:455)` 两种真实栈帧形态都能命中(P2-1 回归,见 tests/diagnose/engine_rank.rs)。
|
||||
pattern: >-
|
||||
(java\.lang\.NoSuchMethodError: 'java\.lang\.Class sun\.misc\.Unsafe\.defineAnonymousClass\(java\.lang\.Class, byte\[\], java\.lang\.Object\[\]\)'|java\.lang\.NoSuchMethodError: 'void net\.minecraft\.client\.renderer\.texture\.SpriteContents\.<init>\(net\.minecraft\.resources\.ResourceLocation, |java\.lang\.NoSuchMethodError: 'void net\.minecraftforge\.client\.gui\.overlay\.ForgeGui\.renderSelectedItemName\(net\.minecraft\.client\.gui\.GuiGraphics, int\)'|java\.lang\.NoSuchMethodError: 'java\.lang\.String com\.mojang\.blaze3d\.systems\.RenderSystem\.getBackendDescription\(\)'|java\.lang\.NoSuchMethodError: 'net\.minecraft\.network\.chat\.FormattedText net\.minecraft\.client\.gui\.Font\.ellipsize\(net\.minecraft\.network\.chat\.FormattedText, int\)'|java\.lang\.NoSuchMethodError: 'void net\.minecraft\.server\.level\.DistanceManager\.(.*?)\(net\.minecraft\.server\.level\.TicketType, net\.minecraft\.world\.level\.ChunkPos, int, java\.lang\.Object, boolean\)'|java\.lang\.NoSuchMethodError: 'void net\.minecraft\.client\.renderer\.block\.model\.BakedQuad\.<init>\(int\[\], int, net\.minecraft\.core\.Direction, net\.minecraft\.client\.renderer\.texture\.TextureAtlasSprite, boolean, boolean\)'|TRANSFORMER/net\.optifine/net\.optifine\.reflect\.Reflector\.<clinit>\(Reflector\.java(?::\d+)?\))
|
||||
confidence: 0.9
|
||||
priority: 87
|
||||
suppress:
|
||||
- integrity.no_such_method
|
||||
- integrity.no_class_def_found
|
||||
cause:
|
||||
key: diagnose.cause.conflict.optifine_forge
|
||||
summary: 'OptiFine 与 Forge(或某个 Forge mod)不兼容:NoSuchMethodError 指向被 OptiFine 改写的原版方法'
|
||||
detail: '删掉 OptiFine,改用同类替代(Sodium/Iris、Embeddium、Oculus 等),或换 OptiFine 的匹配版本'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- optifine
|
||||
action: remove
|
||||
note: 'OptiFine 与 Forge 冲突,删掉其一'
|
||||
sample: samples/mod_conflict/optifine_forge.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.OPTIFINE_IS_NOT_COMPATIBLE_WITH_FORGE'
|
||||
|
||||
- id: conflict.shaders_mod
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.RuntimeException: Shaders Mod detected\. Please remove it, OptiFine has built-in support for shaders\.'
|
||||
confidence: 0.95
|
||||
priority: 85
|
||||
cause:
|
||||
key: diagnose.cause.conflict.shaders_mod
|
||||
summary: '装了独立的 Shaders Mod,但 OptiFine 自带光影支持,两者不能共存'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- shadersmod
|
||||
action: remove
|
||||
sample: samples/mod_conflict/shaders_mod.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.SHADERS_MOD'
|
||||
|
||||
- id: conflict.multipart_optifine
|
||||
severity: critical
|
||||
pattern: 'Error occurred applying transform of coremod META-INF/asm/multipart\.js function render'
|
||||
confidence: 0.8
|
||||
priority: 80
|
||||
cause:
|
||||
key: diagnose.cause.conflict.multipart_optifine
|
||||
summary: 'Forge Multipart 的 coremod 转换失败(多为 OptiFine 同时存在导致)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- optifine
|
||||
action: remove
|
||||
note: '删 OptiFine 或 ForgeMultipart 之一'
|
||||
sample: samples/mod_conflict/multipart_optifine.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MOD_FOREST_OPTIFINE'
|
||||
|
||||
- id: conflict.performant_optifine
|
||||
severity: critical
|
||||
pattern: 'org\.spongepowered\.asm\.mixin\.injection\.throwables\.InjectionError: Critical injection failure: Redirector OnisOnLadder\(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/entity/LivingEntity;\)Z in performant\.mixins\.json:entity\.LivingEntityMixin failed injection check, \(0/1\) succeeded\. Scanned 1 target\(s\)\. Using refmap performant\.refmap\.json'
|
||||
confidence: 0.9
|
||||
priority: 86
|
||||
cause:
|
||||
key: diagnose.cause.conflict.performant_optifine
|
||||
summary: 'Performant 与 OptiFine 的 mixin 冲突(LivingEntityMixin 注入失败)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- performant
|
||||
- optifine
|
||||
action: remove
|
||||
note: '两者只能留一个'
|
||||
sample: samples/mod_conflict/performant_optifine.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.PERFORMANT_FOREST_OPTIFINE'
|
||||
|
||||
- id: conflict.twilight_optifine
|
||||
severity: warning
|
||||
pattern: 'java\.lang\.IllegalArgumentException: (.*) outside of image bounds (.*)'
|
||||
confidence: 0.6
|
||||
priority: 70
|
||||
cause:
|
||||
key: diagnose.cause.conflict.twilight_optifine
|
||||
summary: '贴图越界(outside of image bounds):1.16 上 Twilight Forest 与 OptiFine 的经典冲突'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- optifine
|
||||
action: remove
|
||||
note: '删 OptiFine 或 Twilight Forest 的兼容版本'
|
||||
sample: samples/mod_conflict/twilight_optifine.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.TWILIGHT_FOREST_OPTIFINE'
|
||||
|
||||
- id: conflict.jade_optifine
|
||||
severity: critical
|
||||
pattern: 'Critical injection failure: LVT in net/minecraft/client/renderer/GameRenderer::m_109093_\(FJZ\)V has incompatible changes at opcode 760 in callback jade\.mixins\.json:GameRendererMixin->@Inject::jade\$runTick\(FJZLorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;IILcom/mojang/blaze3d/platform/Window;Lorg/joml/Matrix4f;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/gui/GuiGraphics;\)V\.'
|
||||
confidence: 0.9
|
||||
priority: 86
|
||||
cause:
|
||||
key: diagnose.cause.conflict.jade_optifine
|
||||
summary: 'Jade 与 OptiFine 在 1.20+ 冲突(GameRendererMixin 注入失败)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- optifine
|
||||
- jade
|
||||
action: remove
|
||||
note: '两者只能留一个'
|
||||
sample: samples/mod_conflict/jade_optifine.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.JADE_FOREST_OPTIFINE'
|
||||
|
||||
- id: conflict.neoforge_optifine
|
||||
severity: critical
|
||||
pattern: 'cpw\.mods\.modlauncher\.InvalidLauncherSetupException: Invalid Services found OptiFine'
|
||||
confidence: 0.9
|
||||
priority: 86
|
||||
cause:
|
||||
key: diagnose.cause.conflict.neoforge_optifine
|
||||
summary: 'NeoForge 与 OptiFine 不兼容(launcher setup 阶段就拒绝)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- optifine
|
||||
action: remove
|
||||
sample: samples/mod_conflict/neoforge_optifine.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.NEOFORGE_FOREST_OPTIFINE'
|
||||
|
||||
- id: conflict.optifine_world_load
|
||||
severity: critical
|
||||
# 移植修正:HMCL 原文写的是 ChunkManager$ProxyTicketManager,Java 正则里 $ 是行尾锚点,
|
||||
# 那条规则实际上永远命中不了。这里转义成字面量 $,规则才能真正生效。
|
||||
pattern: 'java\.lang\.NoSuchMethodError: net\.minecraft\.world\.server\.ChunkManager\$ProxyTicketManager\.shouldForceTicks\(J\)Z'
|
||||
confidence: 0.85
|
||||
priority: 84
|
||||
cause:
|
||||
key: diagnose.cause.conflict.optifine_world_load
|
||||
summary: 'OptiFine 导致世界无法加载(ChunkManager$ProxyTicketManager 方法被改写)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- optifine
|
||||
action: remove
|
||||
sample: samples/mod_conflict/optifine_world_load.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.OPTIFINE_CAUSES_THE_WORLD_TO_FAIL_TO_LOAD'
|
||||
@@ -0,0 +1,136 @@
|
||||
# 规则库 · mod 运行期崩(8 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的运行期组(analyse/02 §7.3 第 7 组)。
|
||||
version: 1
|
||||
category: mod_runtime
|
||||
rules:
|
||||
- id: mod.loading_crashed_forge
|
||||
severity: critical
|
||||
pattern: 'LoaderExceptionModCrash: Caught exception from (?<name>.*?) \((?<id>.*)\)'
|
||||
confidence: 0.9
|
||||
priority: 85
|
||||
cause:
|
||||
key: diagnose.cause.mod.loading_crashed_forge
|
||||
summary: 'Forge 抓到 {name}({id})在加载时抛异常'
|
||||
detail: '禁用该 mod 或换它的兼容版本;同一条栈里往往还有具体异常类型'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{id}'
|
||||
action: disable
|
||||
sample: samples/mod_runtime/loading_crashed_forge.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.LOADING_CRASHED_FORGE'
|
||||
|
||||
- id: mod.loading_crashed_fabric
|
||||
severity: critical
|
||||
pattern: >-
|
||||
Could not execute entrypoint stage '(.*?)' due to errors, provided by '(?<id>.*)'!
|
||||
confidence: 0.9
|
||||
priority: 85
|
||||
cause:
|
||||
key: diagnose.cause.mod.loading_crashed_fabric
|
||||
summary: 'Fabric 在入口点阶段执行 mod {id} 时出错'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{id}'
|
||||
action: disable
|
||||
sample: samples/mod_runtime/loading_crashed_fabric.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.LOADING_CRASHED_FABRIC'
|
||||
|
||||
- id: mod.config_failed
|
||||
severity: warning
|
||||
pattern: 'Failed loading config file (?<file>.*?) of type (.*?) for modid (?<id>.*)'
|
||||
confidence: 0.7
|
||||
priority: 60
|
||||
cause:
|
||||
key: diagnose.cause.mod.config_failed
|
||||
summary: 'mod {id} 的配置文件 {file} 解析失败(多半是被手改坏或版本升级后格式变了)'
|
||||
detail: '删掉该配置文件让 mod 重新生成默认值'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{id}'
|
||||
action: disable
|
||||
note: '删配置文件 {file} 后重试(不一定要禁用 mod)'
|
||||
sample: samples/mod_runtime/config_failed.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.CONFIG'
|
||||
|
||||
- id: mod.mixin_failure
|
||||
severity: critical
|
||||
pattern: '(MixinApplyError|Mixin prepare failed |Mixin apply failed |mixin\.injection\.throwables\.|\.mixins\.json\] FAILED during \))'
|
||||
confidence: 0.7
|
||||
priority: 65
|
||||
cause:
|
||||
key: diagnose.cause.mod.mixin_failure
|
||||
summary: 'Mixin 注入失败:某个 mod 的 mixin 与当前游戏/其他 mod 的代码不匹配'
|
||||
detail: '常见于 mod 与游戏版本不配套;看日志里 mixin 的 target 类名能定位到 mod'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: disable
|
||||
note: '按 mixin 配置文件名(xxx.mixins.json)定位 mod'
|
||||
sample: samples/mod_runtime/mixin_failure.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MODMIXIN_FAILURE'
|
||||
|
||||
- id: mod.mixin_apply_failed
|
||||
severity: critical
|
||||
pattern: 'Mixin apply for mod (?<id>.*) failed'
|
||||
confidence: 0.85
|
||||
priority: 82
|
||||
cause:
|
||||
key: diagnose.cause.mod.mixin_apply_failed
|
||||
summary: 'mod {id} 的 mixin 应用失败'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- '{id}'
|
||||
action: disable
|
||||
sample: samples/mod_runtime/mixin_apply_failed.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.MIXIN_APPLY_MOD_FAILED'
|
||||
|
||||
- id: mod.forge_error
|
||||
severity: warning
|
||||
scope: file
|
||||
pattern: 'An exception was thrown, the game will display an error screen and halt\.(?:\r\n|\n|\r)*(?<reason>.*(?:\r\n|\n|\r)*(\s*at .*(?:\r\n|\n|\r))+)'
|
||||
confidence: 0.6
|
||||
priority: 55
|
||||
cause:
|
||||
key: diagnose.cause.mod.forge_error
|
||||
summary: 'Forge 捕获到未处理异常并已弹出错误界面(Forge 自己给了栈)'
|
||||
detail: '栈顶的 at 行指向哪个 mod 的包名,就去禁用/升级那个 mod'
|
||||
fix_action:
|
||||
- kind: seek_help
|
||||
export_diagnostics: true
|
||||
sample: samples/mod_runtime/forge_error.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.FORGE_ERROR'
|
||||
|
||||
- id: mod.night_config_fixes
|
||||
severity: warning
|
||||
pattern: 'com\.electronwill\.nightconfig\.core\.io\.ParsingException: Not enough data available'
|
||||
confidence: 0.85
|
||||
priority: 75
|
||||
cause:
|
||||
key: diagnose.cause.mod.night_config_fixes
|
||||
summary: 'night-config 配置文件读坏了(常见于 nightconfigfixes 相关 mod 组合)'
|
||||
detail: '删掉对应 mod 的配置文件,或移除 nightconfigfixes'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
mod_ids:
|
||||
- nightconfigfixes
|
||||
action: remove
|
||||
sample: samples/mod_runtime/night_config_fixes.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.NIGHT_CONFIG_FIXES'
|
||||
|
||||
- id: mod.install_mixinbootstrap
|
||||
severity: critical
|
||||
pattern: 'java\.lang\.ClassNotFoundException: org\.spongepowered\.asm\.launch\.MixinTweaker'
|
||||
confidence: 0.8
|
||||
priority: 75
|
||||
cause:
|
||||
key: diagnose.cause.mod.install_mixinbootstrap
|
||||
summary: '缺少 MixinBootstrap 前置(Forge 1.12.2 上很多 mod 需要它)'
|
||||
fix_action:
|
||||
- kind: reinstall
|
||||
component: mixin_bootstrap
|
||||
note: '装上 MixinBootstrap 0.8+'
|
||||
sample: samples/mod_runtime/install_mixinbootstrap.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.INSTALL_MIXINBOOTSTRAP'
|
||||
@@ -0,0 +1,22 @@
|
||||
# 规则库 · 其它(1 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的杂项组(analyse/02 §7.3 第 10 组)。
|
||||
# 将来「用户反馈沉淀的新规则」如果归不了类,也先落这里(标记 source 与需要复核)。
|
||||
version: 1
|
||||
category: other
|
||||
rules:
|
||||
- id: other.debug_crash
|
||||
severity: info
|
||||
pattern: 'Manually triggered debug crash'
|
||||
confidence: 0.95
|
||||
priority: 70
|
||||
cause:
|
||||
key: diagnose.cause.other.debug_crash
|
||||
summary: '这次崩溃是手动触发的(游戏里按 F3+C),不是真的故障'
|
||||
detail: '如果用户点了「导出诊断包」做测试,可以忽略这条'
|
||||
fix_action:
|
||||
- kind: seek_help
|
||||
export_diagnostics: false
|
||||
needs_more_info:
|
||||
- '确认是否手动触发的调试崩溃'
|
||||
sample: samples/other/debug_crash.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.DEBUG_CRASH'
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:40] [main/ERROR]: Failed to start Fabric loader
|
||||
java.lang.NoClassDefFoundError: org/spongepowered/asm/mixin/transformer/FabricMixinTransformerProxy
|
||||
@@ -0,0 +1,3 @@
|
||||
net.fabricmc.loader.impl.FormattedException: net.fabricmc.loader.impl.discovery.ModResolutionException: Mod resolution encountered an incompatible mod set!
|
||||
- Mod 'Sodium' (sodium) 0.5.8 requires version 0.6.0 or later of mod 'Iris' (iris)
|
||||
- Mod 'Iris' (iris) 0.5.0 is present but is incompatible
|
||||
@@ -0,0 +1 @@
|
||||
net.fabricmc.loader.impl.discovery.ModResolutionException: Could not resolve valid mod collection (at: iris requires sodium)
|
||||
@@ -0,0 +1 @@
|
||||
net.fabricmc.loader.impl.discovery.ModResolutionException: Found conflicting mods: sodium conflicts with sodium-extra
|
||||
@@ -0,0 +1,3 @@
|
||||
Mod File: /mods/sodium-fabric-0.5.0.jar
|
||||
Failure message: Mod resolution failed
|
||||
net.fabricmc.loader.impl.discovery.ModResolutionException: see above
|
||||
@@ -0,0 +1 @@
|
||||
net.fabricmc.loader.impl.discovery.ModResolutionException: Could not find required mod: sodium requires iris
|
||||
@@ -0,0 +1 @@
|
||||
net.fabricmc.loader.impl.discovery.ModResolutionException: Could not find required mod: sodium requires {minecraft @ 1.20.1}
|
||||
@@ -0,0 +1,3 @@
|
||||
Warnings were found!
|
||||
- Sodium 0.4.10 is incompatible with Iris 1.6.0
|
||||
[
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:55] [main/ERROR]: Failed to create mod instance. ModID: alexsmobs, Class: com.github.alexthe666.alexsmobs.AlexsMobs
|
||||
@@ -0,0 +1,3 @@
|
||||
Found duplicate mods:
|
||||
jei-1.20.1-15.2.0.27.jar
|
||||
jei-1.20.1-15.2.0.28.jar
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:50] [main/ERROR]: Found a duplicate mod jei at /mods/jei-1.20.1-15.2.0.28.jar
|
||||
@@ -0,0 +1,2 @@
|
||||
Missing or unsupported mandatory dependencies:
|
||||
Mod ID: citadel, Requested by: alexsmobs, Expected range: [1.20.1-2.4.0,), Actual version: MISSING
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:54] [main/ERROR]: java.lang.IllegalArgumentException: Invalid module name: '' is not a Java identifier
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:52] [main/ERROR]: org.spongepowered.asm.launch.platform.MixinPlatformManager threw ResolutionException: Module optifine reads another module named optifine
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:51] [main/ERROR]: joptsimple.MultipleArgumentsForOptionException: Found multiple arguments for option net.minecraftforge, but you asked for only one
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:53] [main/ERROR]: java.lang.RuntimeException: maximum id range exceeded
|
||||
@@ -0,0 +1,3 @@
|
||||
[12:00:20] [Render thread/ERROR]: ########## GL ERROR ##########
|
||||
[12:00:20] [Render thread/ERROR]: @ Pre render
|
||||
[12:00:20] [Render thread/ERROR]: 1282: Invalid operation
|
||||
@@ -0,0 +1,7 @@
|
||||
#
|
||||
# A fatal error has been detected by the Java Runtime Environment:
|
||||
#
|
||||
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffb1a2b3c4d, pid=12344, tid=0x0000000000002a1c
|
||||
#
|
||||
# Problematic frame:
|
||||
# C [ig8d64.dll+0x9b3c4d]
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:22] [main/ERROR]: java.lang.IllegalStateException: GLFW error before init: [0x10008]Cocoa: Failed to find service port for display
|
||||
@@ -0,0 +1,15 @@
|
||||
---- Minecraft Crash Report ----
|
||||
// I let you down. Sorry :(
|
||||
|
||||
Time: 2026-10-30 12:00:21
|
||||
Description: Initializing game
|
||||
|
||||
net.minecraft.client.Minecraft$GameLoadException: No supported graphics backend was found.
|
||||
at net.minecraft.client.Minecraft.<init>(Minecraft.java:612)
|
||||
at net.minecraft.client.main.Main.main(Main.java:184)
|
||||
|
||||
-- Graphics Backend --
|
||||
Backend: VULKAN
|
||||
Backend failure reason: vulkan_loader_missing
|
||||
Backend: OPENGL
|
||||
Backend failure reason: opengl_missing
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:21] [main/ERROR]: The driver does not appear to support OpenGL
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:23] [Render thread/WARN]: Maybe try a lower resolution resourcepack?
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:24] [main/ERROR]: RivaTuner Statistics Server (RTSS) is not compatible with Sodium
|
||||
@@ -0,0 +1,5 @@
|
||||
[12:00:21] [Render thread/INFO]: Using graphics backend VULKAN, using drivers: Intel proprietary driver
|
||||
[12:00:21] [Render thread/ERROR]: Backend failure reason: vulkan_device_version_too_low
|
||||
[12:00:21] [Render thread/ERROR]: Backend failure message: Device NVIDIA GeForce GT 710 reports Vulkan 1.0.0, at least 1.2 required
|
||||
[12:00:21] [Render thread/ERROR]: Failed to create backend VULKAN
|
||||
[12:00:21] [Render thread/INFO]: Falling back to OpenGL
|
||||
@@ -0,0 +1,5 @@
|
||||
[12:00:21] [Render thread/INFO]: Backend library: LWJGL version 3.4.3+13
|
||||
[12:00:21] [Render thread/INFO]: Using graphics backend VULKAN, using drivers: AMD proprietary driver
|
||||
[12:00:21] [Render thread/ERROR]: Vulkan loader library is missing
|
||||
[12:00:21] [Render thread/ERROR]: Failed to create backend VULKAN: Backend failure reason: vulkan_loader_missing
|
||||
[12:00:21] [Render thread/INFO]: Falling back to OpenGL
|
||||
@@ -0,0 +1,5 @@
|
||||
[12:00:21] [Render thread/INFO]: Using graphics backend VULKAN, using drivers: Mesa (zink)
|
||||
[12:00:21] [Render thread/ERROR]: Backend failure reason: vulkan_missing_extension
|
||||
[12:00:21] [Render thread/ERROR]: Device [AMD Radeon RX 580] does not support required extensions from FeatureSet [VULKAN_12], missing: [VK_KHR_dynamic_rendering, VK_KHR_push_descriptor]
|
||||
[12:00:21] [Render thread/ERROR]: Failed to create backend VULKAN
|
||||
[12:00:21] [Render thread/INFO]: Falling back to OpenGL
|
||||
@@ -0,0 +1,5 @@
|
||||
[12:00:21] [Render thread/INFO]: Using graphics backend VULKAN, using drivers: llvmpipe (Mesa)
|
||||
[12:00:21] [Render thread/ERROR]: Backend failure reason: vulkan_missing_feature
|
||||
[12:00:21] [Render thread/ERROR]: Backend failure missing capabilities: VULKAN_CORE_1_2
|
||||
[12:00:21] [Render thread/ERROR]: Failed to create backend VULKAN
|
||||
[12:00:21] [Render thread/INFO]: Falling back to OpenGL
|
||||
@@ -0,0 +1,34 @@
|
||||
#
|
||||
# A fatal error has been detected by the Java Runtime Environment:
|
||||
#
|
||||
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffb1a2b3c4d, pid=12344, tid=0x0000000000002a1c
|
||||
#
|
||||
# JRE version: Java(TM) SE Runtime Environment (8.0_51-b16) (build 1.8.0_51-b16)
|
||||
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.51-b03 mixed mode windows-amd64 compressed oops)
|
||||
# Problematic frame:
|
||||
# C [ig8d64.dll+0x9b3c4d]
|
||||
#
|
||||
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
|
||||
#
|
||||
# If you would like to submit a bug report, please visit:
|
||||
# http://bugreport.java.com/bugreport/crash.jsp
|
||||
# The crash happened outside the Java Virtual Machine in native code.
|
||||
# See problematic frame for where to report the bug.
|
||||
#
|
||||
|
||||
--------------- T H R E A D ---------------
|
||||
|
||||
Current thread (0x000000001f3b8000): JavaThread "Render thread" [_thread_in_native, id=10780, stack(0x000000001a000000,0x000000001a100000)]
|
||||
|
||||
siginfo: ExceptionCode=0xc0000005, ExceptionInformation=0x0000000000000000 0x0000000000000000 0x0000000000000000
|
||||
|
||||
VM Arguments:
|
||||
jvm_args: -Xmx4096m -Xms1024m -Djava.library.path=C:\Users\player\.minecraft\natives
|
||||
java_command: net.minecraft.launchwrapper.Launch --gameDir . --assetsDir assets
|
||||
|
||||
--------------- H E A P ---------------
|
||||
|
||||
Heap:
|
||||
garbage-first heap total 4194304K, used 1048576K [0x0000000700000000, 0x0000000800000000)
|
||||
|
||||
Memory: 4k page, physical 16741480k(4716856k free), swap 18672384k(9433608k free)
|
||||
@@ -0,0 +1,19 @@
|
||||
#
|
||||
# There is insufficient memory for the Java Runtime Environment to continue.
|
||||
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
|
||||
#
|
||||
# Out of Memory Error (os_windows.cpp:3521), pid=9876, tid=0x0000000000001f44
|
||||
#
|
||||
# JRE version: Java(TM) SE Runtime Environment (17.0.9+9) (build 17.0.9+9-LTS-211)
|
||||
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0.9+9-LTS-211, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
|
||||
#
|
||||
|
||||
--------------- T H R E A D ---------------
|
||||
|
||||
Current thread (0x0000021d6f82b1a0): JavaThread "Render thread" [_thread_in_vm, id=14120, stack(0x000000a1b0000000,0x000000a1b0100000)]
|
||||
|
||||
VM Arguments:
|
||||
jvm_args: -Xmx8192m -Xms2048m
|
||||
java_command: net.fabricmc.loader.impl.launch.knot.KnotClient --gameDir .
|
||||
|
||||
Memory: 4k page, physical 8134564k(120944k free), swap 9723904k(550664k free)
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:34] [main/ERROR]: java.nio.file.FileAlreadyExistsException: config/example-mod.toml
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:30] [main/ERROR]: Failed to verify class file
|
||||
java.lang.SecurityException: SHA1 digest error for net/minecraft/client/main/Main.class
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:33] [main/ERROR]: coremod failed
|
||||
java.lang.IllegalAccessError: tried to access class net.minecraft.client.Minecraft from class com.example.coremod.Hook
|
||||
@@ -0,0 +1 @@
|
||||
[12:00:36] [main/ERROR]: java.io.UncheckedIOException: java.io.IOException: Invalid paths argument, contained no existing paths: [/home/user/.minecraft/libraries/net/minecraftforge/forge/1.20.1-47.2.0/forge-1.20.1-47.2.0-client.jar]
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:35] [main/ERROR]: Extracted mod jars found, loading will NOT continue
|
||||
[12:00:35] [main/ERROR]: The directories below appear to be extracted jar files. Fix this before you continue
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:32] [main/ERROR]: A mod crashed on startup
|
||||
java.lang.NoClassDefFoundError: net/minecraftforge/fml/loading/FMLEnvironment
|
||||
@@ -0,0 +1,3 @@
|
||||
[12:00:31] [main/ERROR]: Failed to start
|
||||
java.lang.NoSuchMethodError: net.minecraft.world.World.getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;
|
||||
at com.example.mod.Foo.bar(Foo.java:42)
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:37] [main/ERROR]: Failed to initialise LWJGL
|
||||
java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll
|
||||
@@ -0,0 +1,3 @@
|
||||
[12:00:06] [main/ERROR]: Unable to launch
|
||||
java.lang.NoSuchFieldException: ucp
|
||||
at java.base/java.lang.ClassLoader$UnsafeAccessor.getUnsafe(ClassLoader.java:123)
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:05] [main/ERROR]: Failed to launch
|
||||
java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.net.URLClassLoader
|
||||
@@ -0,0 +1,3 @@
|
||||
[12:00:04] [main/INFO]: Starting JVM with -Xmx4096m
|
||||
Error occurred during initialization of VM
|
||||
Could not reserve enough space for 4194304KB object heap
|
||||
@@ -0,0 +1 @@
|
||||
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!'
|
||||
@@ -0,0 +1,3 @@
|
||||
[12:00:07] [main/ERROR]: ModLauncher failed
|
||||
java.lang.NoSuchMethodError: 'void sun.security.util.ManifestEntryVerifier.<init>(java.util.jar.Manifest)'
|
||||
at cpw.mods.modlauncher.TransformingClassLoader.buildTransformedClassNodeFor(TransformingClassLoader.java:151)
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:02] [main/ERROR]: Failed to start the game
|
||||
java.lang.IllegalArgumentException: The requested compatibility level JAVA_11 could not be set. Level is not supported by the active JRE or ASM version
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:01] [main/INFO]: Loading Minecraft 1.20.1 with Forge 47.2.0
|
||||
OpenJ9 is incompatible with the authentication libraries used by this launcher
|
||||
@@ -0,0 +1,2 @@
|
||||
[12:00:03] [main/ERROR]: Could not find or load main class net.fabricmc.loader.impl.launch.knot.KnotClient
|
||||
java.lang.UnsupportedClassVersionError: net/fabricmc/loader/impl/launch/knot/KnotClient has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
|
||||
@@ -0,0 +1,3 @@
|
||||
#
|
||||
# There is insufficient memory for the Java Runtime Environment to continue.
|
||||
# Native memory allocation (mmap) failed to map 67108864 bytes for committing reserved memory.
|
||||
@@ -0,0 +1,3 @@
|
||||
[12:00:10] [Render thread/ERROR]: Encountered an unexpected exception
|
||||
java.lang.OutOfMemoryError: Java heap space
|
||||
at net.minecraft.client.renderer.chunk.RenderChunk.rebuildChunk(RenderChunk.java:123)
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:15] [main/ERROR]: Critical injection failure: LVT in net/minecraft/client/renderer/GameRenderer::m_109093_(FJZ)V has incompatible changes at opcode 760 in callback jade.mixins.json:GameRendererMixin->@Inject::jade$runTick(FJZLorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;IILcom/mojang/blaze3d/platform/Window;Lorg/joml/Matrix4f;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/gui/GuiGraphics;)V.
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:12] [main/ERROR]: Error occurred applying transform of coremod META-INF/asm/multipart.js function render
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:16] [main/ERROR]: cpw.mods.modlauncher.InvalidLauncherSetupException: Invalid Services found OptiFine
|
||||
@@ -0,0 +1,4 @@
|
||||
[12:01:10] [main/ERROR]: Failed to launch Forge
|
||||
java.lang.NoSuchMethodError: 'java.lang.String com.mojang.blaze3d.systems.RenderSystem.getBackendDescription()'
|
||||
at net.optifine.reflect.Reflector.<clinit>(Reflector.java:455)
|
||||
TRANSFORMER/net.optifine/net.optifine.reflect.Reflector.<clinit>(Reflector.java:455)
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:17] [main/ERROR]: java.lang.NoSuchMethodError: net.minecraft.world.server.ChunkManager$ProxyTicketManager.shouldForceTicks(J)Z
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:13] [main/ERROR]: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Redirector OnisOnLadder(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/entity/LivingEntity;)Z in performant.mixins.json:entity.LivingEntityMixin failed injection check, (0/1) succeeded. Scanned 1 target(s). Using refmap performant.refmap.json
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:11] [main/ERROR]: java.lang.RuntimeException: Shaders Mod detected. Please remove it, OptiFine has built-in support for shaders.
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:14] [main/ERROR]: java.lang.IllegalArgumentException: 512 outside of image bounds 256
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:02] [main/ERROR]: Failed loading config file alexsmobs-common.toml of type COMMON for modid alexsmobs
|
||||
@@ -0,0 +1,3 @@
|
||||
[12:01:05] [main/ERROR]: An exception was thrown, the game will display an error screen and halt.
|
||||
java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.Level.getBlockState()" because "level" is null
|
||||
at com.example.mod.Foo.tick(Foo.java:123)
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:07] [main/ERROR]: java.lang.ClassNotFoundException: org.spongepowered.asm.launch.MixinTweaker
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:01] [main/ERROR]: Could not execute entrypoint stage 'main' due to errors, provided by 'sodium'!
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:00] [main/ERROR]: LoaderExceptionModCrash: Caught exception from Alex's Mobs (alexsmobs)
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:04] [main/ERROR]: Mixin apply for mod examplemod failed examplemod.mixins.json:MixinFoo from mod examplemod->@Inject::handler
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:03] [main/ERROR]: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: Critical injection failure: @Inject annotation could not find target method
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:06] [main/ERROR]: com.electronwill.nightconfig.core.io.ParsingException: Not enough data available
|
||||
@@ -0,0 +1 @@
|
||||
[12:01:30] [Render thread/INFO]: Manually triggered debug crash
|
||||
@@ -0,0 +1,6 @@
|
||||
[12:01:21] [Worker-Main-1/ERROR]: Unable to bake model
|
||||
java.lang.RuntimeException: Failed to tessellate
|
||||
-- Block being tessellated --
|
||||
Details:
|
||||
Block: minecraft:grass_block
|
||||
Block location: World: (12,64,-34)
|
||||
@@ -0,0 +1,6 @@
|
||||
[12:01:20] [Server thread/ERROR]: Encountered an unexpected exception
|
||||
java.lang.NullPointerException: Ticking entity
|
||||
-- Entity being ticked --
|
||||
Details:
|
||||
Entity Type: minecraft:cow (net.minecraft.world.entity.animal.Cow)
|
||||
Entity's Exact location: 123.45, 64.00, -67.89
|
||||
@@ -0,0 +1,39 @@
|
||||
# 规则库 · 游戏实体/方块(2 条)
|
||||
# 移植自 HMCL CrashReportAnalyzer.Rule 的实体/方块组(analyse/02 §7.3 第 9 组):
|
||||
# 崩在 tick 时能拿到实体类型/方块类型与坐标,是「哪个 mod 的实体坏了」的直接线索。
|
||||
version: 1
|
||||
category: world
|
||||
rules:
|
||||
- id: world.entity_tick
|
||||
severity: critical
|
||||
scope: file
|
||||
pattern: "Entity Type: (?<type>.*)[\\w\\W\\n\\r]*?Entity's Exact location: (?<location>.*)"
|
||||
confidence: 0.75
|
||||
priority: 70
|
||||
cause:
|
||||
key: diagnose.cause.world.entity_tick
|
||||
summary: '崩在实体 tick:实体 {type}(坐标 {location})'
|
||||
detail: '看看这个实体来自哪个 mod(血条/怪物增强/刷怪类 mod 居多),禁用该 mod 或删掉存档里这个实体'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: disable
|
||||
note: '按实体类型定位 mod'
|
||||
sample: samples/world/entity_tick.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.ENTITY'
|
||||
|
||||
- id: world.block_model
|
||||
severity: warning
|
||||
scope: file
|
||||
pattern: 'Block: (?<type>.*)[\w\W\n\r]*?Block location: (?<location>.*)'
|
||||
confidence: 0.65
|
||||
priority: 65
|
||||
cause:
|
||||
key: diagnose.cause.world.block_model
|
||||
summary: '崩在方块({type},坐标 {location}):多半是方块模型/贴图相关 mod 的问题'
|
||||
detail: '定位该方块所属 mod;资源包也可能导致(先换回原版资源包验证)'
|
||||
fix_action:
|
||||
- kind: remove_mod
|
||||
action: disable
|
||||
note: '按方块类型定位 mod / 先换回原版资源包'
|
||||
sample: samples/world/block_model.log
|
||||
source: 'HMCL CrashReportAnalyzer.Rule.BLOCK'
|
||||
Reference in new issue
Block a user