检测到多个原因时提示 (#2293)

This commit is contained in:
zkitefly 2023-06-23 18:21:28 +08:00 committed by GitHub
parent 95b85c13eb
commit 9549819571
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 18 additions and 0 deletions

View File

@ -151,11 +151,18 @@ public class GameCrashWindow extends Stage {
Set<String> keywords = pair.getValue(); Set<String> keywords = pair.getValue();
List<Node> segments = new ArrayList<>(); List<Node> segments = new ArrayList<>();
boolean hasMultipleRules = results.stream().map(CrashReportAnalyzer.Result::getRule).distinct().count() > 1;
if (hasMultipleRules) {
segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason.multiple"), Controllers::onHyperlinkAction));
}
for (CrashReportAnalyzer.Result result : results) { for (CrashReportAnalyzer.Result result : results) {
switch (result.getRule()) { switch (result.getRule()) {
case TOO_OLD_JAVA: case TOO_OLD_JAVA:
segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason.too_old_java", segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason.too_old_java",
CrashReportAnalyzer.getJavaVersionFromMajorVersion(Integer.parseInt(result.getMatcher().group("expected")))), Controllers::onHyperlinkAction)); CrashReportAnalyzer.getJavaVersionFromMajorVersion(Integer.parseInt(result.getMatcher().group("expected")))), Controllers::onHyperlinkAction));
segments.add(new Text("\n"));
break; break;
case MOD_RESOLUTION_CONFLICT: case MOD_RESOLUTION_CONFLICT:
case MOD_RESOLUTION_MISSING: case MOD_RESOLUTION_MISSING:
@ -164,19 +171,23 @@ public class GameCrashWindow extends Stage {
translateFabricModId(result.getMatcher().group("sourcemod")), translateFabricModId(result.getMatcher().group("sourcemod")),
parseFabricModId(result.getMatcher().group("destmod")), parseFabricModId(result.getMatcher().group("destmod")),
parseFabricModId(result.getMatcher().group("destmod"))), Controllers::onHyperlinkAction)); parseFabricModId(result.getMatcher().group("destmod"))), Controllers::onHyperlinkAction));
segments.add(new Text("\n"));
break; break;
case MOD_RESOLUTION_MISSING_MINECRAFT: case MOD_RESOLUTION_MISSING_MINECRAFT:
segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason." + result.getRule().name().toLowerCase(Locale.ROOT), segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason." + result.getRule().name().toLowerCase(Locale.ROOT),
translateFabricModId(result.getMatcher().group("mod")), translateFabricModId(result.getMatcher().group("mod")),
result.getMatcher().group("version")), Controllers::onHyperlinkAction)); result.getMatcher().group("version")), Controllers::onHyperlinkAction));
segments.add(new Text("\n"));
break; break;
case TWILIGHT_FOREST_OPTIFINE: case TWILIGHT_FOREST_OPTIFINE:
segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason.mod", "OptiFine"), Controllers::onHyperlinkAction)); segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason.mod", "OptiFine"), Controllers::onHyperlinkAction));
segments.add(new Text("\n"));
break; break;
default: default:
segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason." + result.getRule().name().toLowerCase(Locale.ROOT), segments.addAll(FXUtils.parseSegment(i18n("game.crash.reason." + result.getRule().name().toLowerCase(Locale.ROOT),
Arrays.stream(result.getRule().getGroupNames()).map(groupName -> result.getMatcher().group(groupName)) Arrays.stream(result.getRule().getGroupNames()).map(groupName -> result.getMatcher().group(groupName))
.toArray()), Controllers::onHyperlinkAction)); .toArray()), Controllers::onHyperlinkAction));
segments.add(new Text("\n"));
break; break;
} }
segments.add(new Text("\n")); segments.add(new Text("\n"));

View File

@ -407,6 +407,7 @@ game.crash.feedback=Is it a common issue that almost everyone has had? Please le
game.crash.info=Crash Info game.crash.info=Crash Info
game.crash.reason=Crash Cause game.crash.reason=Crash Cause
game.crash.reason.analyzing=Analyzing... game.crash.reason.analyzing=Analyzing...
game.crash.reason.multiple=Multiple reasons detected:\n\n
game.crash.reason.block=The game crashed due to a block.\n\ game.crash.reason.block=The game crashed due to a block.\n\
\n\ \n\
You can try to remove this block using MCEdit or delete that mod that added it.\n\ You can try to remove this block using MCEdit or delete that mod that added it.\n\

View File

@ -365,6 +365,7 @@ game.crash.feedback=¿Es un problema común que casi todo el mundo ha tenido? Po
game.crash.info=Información sobre el fallo game.crash.info=Información sobre el fallo
game.crash.reason=Causa del fallo game.crash.reason=Causa del fallo
game.crash.reason.analyzing=Analizando... game.crash.reason.analyzing=Analizando...
game.crash.reason.multiple=Se detectaron múltiples razones:\n\n
game.crash.reason.block=El juego se ha bloqueado debido a un error.\ game.crash.reason.block=El juego se ha bloqueado debido a un error.\
\n\ \n\
Puede tratar de eliminar este bloque utilizando MCEdit o eliminar el mod que lo ha añadido.\n\ Puede tratar de eliminar este bloque utilizando MCEdit o eliminar el mod que lo ha añadido.\n\

View File

@ -334,6 +334,7 @@ game.crash.feedback=問題は非常に一般的ですが、理由がわかりま
game.crash.info=ゲームステータス game.crash.info=ゲームステータス
game.crash.reason=クラッシュアナライザー game.crash.reason=クラッシュアナライザー
game.crash.reason.analyzing=分析中.. game.crash.reason.analyzing=分析中..
game.crash.reason.multiple=複数の理由が検出されました:\n\n
game.crash.reason.block=ブロックが原因でゲームを実行できません。\nMCEditでこのブロックを削除するか、関連するModを直接削除できます。\nブロックタイプ%1$s \nブロックの場所%2$s game.crash.reason.block=ブロックが原因でゲームを実行できません。\nMCEditでこのブロックを削除するか、関連するModを直接削除できます。\nブロックタイプ%1$s \nブロックの場所%2$s
game.crash.reason.bootstrap_failed=mod %1$s がクラッシュしたため、ゲームを実行できません。\n削除または更新を試みることができます。 game.crash.reason.bootstrap_failed=mod %1$s がクラッシュしたため、ゲームを実行できません。\n削除または更新を試みることができます。
game.crash.reason.config=modが構成ファイルを解析できないため、ゲームを実行できません。\nMod %1$s は構成ファイル %2$s を解析できません。 game.crash.reason.config=modが構成ファイルを解析できないため、ゲームを実行できません。\nMod %1$s は構成ファイル %2$s を解析できません。

View File

@ -336,6 +336,7 @@ game.crash.feedback=Проблема настолько распростране
game.crash.info=Статус игры game.crash.info=Статус игры
game.crash.reason=Анализатор сбоев game.crash.reason=Анализатор сбоев
game.crash.reason.analyzing=Анализирование... game.crash.reason.analyzing=Анализирование...
game.crash.reason.multiple=Обнаружено несколько причин:\n\n
game.crash.reason.block=Невозможно запустить игру из-за блока.\nУдалите этот блок с помощью MCEdit или удалите мод связанный с ним напрямую.\nТип блока: %1$s\nРасположение блока: %2$s game.crash.reason.block=Невозможно запустить игру из-за блока.\nУдалите этот блок с помощью MCEdit или удалите мод связанный с ним напрямую.\nТип блока: %1$s\nРасположение блока: %2$s
game.crash.reason.bootstrap_failed=Невозможно запустить игру из-за сбоя мода %1$s.\nПопробуйте удалить или обновить его. game.crash.reason.bootstrap_failed=Невозможно запустить игру из-за сбоя мода %1$s.\nПопробуйте удалить или обновить его.
game.crash.reason.config=Невозможно запустить игру из-за того, что мод не может разобрать файл конфигурации.\nМод %1$s не может разобрать свой файл конфигурации %2$s. game.crash.reason.config=Невозможно запустить игру из-за того, что мод не может разобрать файл конфигурации.\nМод %1$s не может разобрать свой файл конфигурации %2$s.

View File

@ -392,6 +392,7 @@ game.crash.feedback=查看了日誌發現問題很常見?歡迎在 <a href="ht
game.crash.info=遊戲訊息 game.crash.info=遊戲訊息
game.crash.reason=崩潰原因 game.crash.reason=崩潰原因
game.crash.reason.analyzing=分析中... game.crash.reason.analyzing=分析中...
game.crash.reason.multiple=檢測到多個原因:\n\n
game.crash.reason.block=當前遊戲因為某個方塊不能正常工作,無法繼續運行。\n你可以嘗試通過 MCEdit 工具編輯存檔刪除該方塊,或者直接刪除相應的 Mod。\n方塊類型%1$s\n方塊坐標%2$s game.crash.reason.block=當前遊戲因為某個方塊不能正常工作,無法繼續運行。\n你可以嘗試通過 MCEdit 工具編輯存檔刪除該方塊,或者直接刪除相應的 Mod。\n方塊類型%1$s\n方塊坐標%2$s
game.crash.reason.bootstrap_failed=當前遊戲因為模組 %1$s 錯誤,無法繼續運行。\n你可以嘗試刪除或更新該模組以解決問題。 game.crash.reason.bootstrap_failed=當前遊戲因為模組 %1$s 錯誤,無法繼續運行。\n你可以嘗試刪除或更新該模組以解決問題。
game.crash.reason.config=當前遊戲因為無法解析模組配置文件,無法繼續運行\n模組 %1$s 的配置文件 %2$s 無法被解析。 game.crash.reason.config=當前遊戲因為無法解析模組配置文件,無法繼續運行\n模組 %1$s 的配置文件 %2$s 無法被解析。

View File

@ -393,6 +393,8 @@ game.crash.info=游戏信息
game.crash.reason=崩溃原因 game.crash.reason=崩溃原因
game.crash.reason.analyzing=分析中…… game.crash.reason.analyzing=分析中……
game.crash.reason.block=当前游戏因为某个方块不能正常工作,无法继续运行。\n你可以尝试通过 <a href="https://podshot.github.io/MCEdit-Unified">MCEdit</a> 工具编辑存档删除该方块,或者直接删除相应的 Mod。\n方块类型%1$s\n方块坐标%2$s \n你可以在 <a href="https://docs.hmcl.net/help.html ">此处</a> 寻求帮助。 game.crash.reason.block=当前游戏因为某个方块不能正常工作,无法继续运行。\n你可以尝试通过 <a href="https://podshot.github.io/MCEdit-Unified">MCEdit</a> 工具编辑存档删除该方块,或者直接删除相应的 Mod。\n方块类型%1$s\n方块坐标%2$s \n你可以在 <a href="https://docs.hmcl.net/help.html ">此处</a> 寻求帮助。
game.crash.reason.multiple=检测到多个原因:\n\n
game.crash.reason.block=当前游戏因为某个方块不能正常工作,无法继续运行。\n你可以尝试通过 <a href="https://www.mcedit.net">MCEdit</a> 工具编辑存档删除该方块,或者直接删除相应的 Mod。\n方块类型%1$s\n方块坐标%2$s \n你可以在 <a href="https://docs.hmcl.net/help.html ">此处</a> 寻求帮助。
game.crash.reason.bootstrap_failed=当前游戏因为模组 %1$s 错误,无法继续运行。\n你可以尝试删除或更新该模组以解决问题。\n你可以在 <a href="https://docs.hmcl.net/help.html ">此处</a> 寻求帮助。 game.crash.reason.bootstrap_failed=当前游戏因为模组 %1$s 错误,无法继续运行。\n你可以尝试删除或更新该模组以解决问题。\n你可以在 <a href="https://docs.hmcl.net/help.html ">此处</a> 寻求帮助。
game.crash.reason.config=当前游戏因为无法解析模组配置文件,无法继续运行\n模组 %1$s 的配置文件 %2$s 无法被解析。\n你可以在 <a href="https://docs.hmcl.net/help.html ">此处</a> 寻求帮助。 game.crash.reason.config=当前游戏因为无法解析模组配置文件,无法继续运行\n模组 %1$s 的配置文件 %2$s 无法被解析。\n你可以在 <a href="https://docs.hmcl.net/help.html ">此处</a> 寻求帮助。
game.crash.reason.debug_crash=当前游戏因为手动触发崩溃,无法继续运行。\n事实上游戏并没有问题问题都是你造成的 game.crash.reason.debug_crash=当前游戏因为手动触发崩溃,无法继续运行。\n事实上游戏并没有问题问题都是你造成的