From a5ee6b05e88fbff4e564966bcd2c8e4dcb9da846 Mon Sep 17 00:00:00 2001 From: Burning_TNT <88144530+burningtnt@users.noreply.github.com> Date: Thu, 6 Jul 2023 23:28:41 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20#2305=20=E4=BF=AE=E5=A4=8D=E6=B8=B8?= =?UTF-8?q?=E6=88=8F=E8=AF=AD=E8=A8=80=E8=87=AA=E5=8A=A8=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=B8=8E=E4=B8=8D=E5=90=8C=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=9A=84=E5=85=BC=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98=20(#2345?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix #2305 * fix --- .../jackhuang/hmcl/game/HMCLGameLauncher.java | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameLauncher.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameLauncher.java index a8a9678a3..9a477adb4 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameLauncher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameLauncher.java @@ -61,17 +61,42 @@ public final class HMCLGameLauncher extends DefaultLauncher { File optionsFile = new File(repository.getRunDirectory(version.getId()), "options.txt"); File configFolder = new File(repository.getRunDirectory(version.getId()), "config"); - if (optionsFile.exists()) + if (optionsFile.exists()) { return; - if (configFolder.isDirectory()) - if (findFiles(configFolder, "options.txt")) + } + + if (configFolder.isDirectory()) { + if (findFiles(configFolder, "options.txt")) { return; - try { - // TODO: Dirty implementation here - if (I18n.getCurrentLocale().getLocale() == Locale.CHINA) - FileUtils.writeText(optionsFile, "lang:zh_CN\nforceUnicodeFont:true\n"); - } catch (IOException e) { - Logging.LOG.log(Level.WARNING, "Unable to generate options.txt", e); + } + } + + if (I18n.getCurrentLocale().getLocale() != Locale.CHINA) { + return; + } + + String lang; + /* + 1.0- :没有语言选项,遇到这些版本时不设置 + 1.1 ~ 5 :zh_CN 时正常,zh_cn 时崩溃(最后两位字母必须大写,否则将会 NPE 崩溃) + 1.6 ~ 10 :zh_CN 时正常,zh_cn 时自动切换为英文 + 1.11 ~ 12:zh_cn 时正常,zh_CN 时虽然显示了中文但语言设置会错误地显示选择英文 + 1.13+ :zh_cn 时正常,zh_CN 时自动切换为英文 + */ + if (this.version.compareTo(new Version("1.1")) < 0) { + lang = null; + } else if (this.version.compareTo(new Version("1.10")) <= 0) { + lang = "zh_CN"; + } else { + lang = "zh_cn"; + } + + if (lang != null) { + try { + FileUtils.writeText(optionsFile, String.format("lang:%s\nforceUnicodeFont:true\n", lang)); + } catch (IOException e) { + Logging.LOG.log(Level.WARNING, "Unable to generate options.txt", e); + } } }