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 fb7cb66a6..bab78d7e2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameLauncher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLGameLauncher.java @@ -21,8 +21,16 @@ import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.auth.AuthInfo; import org.jackhuang.hmcl.launch.DefaultLauncher; import org.jackhuang.hmcl.launch.ProcessListener; +import org.jackhuang.hmcl.util.Logging; +import org.jackhuang.hmcl.util.i18n.I18n; +import org.jackhuang.hmcl.util.io.FileUtils; +import org.jackhuang.hmcl.util.platform.ManagedProcess; +import java.io.File; +import java.io.IOException; +import java.util.Locale; import java.util.Map; +import java.util.logging.Level; /** * @author huangyuhui @@ -48,4 +56,26 @@ public final class HMCLGameLauncher extends DefaultLauncher { res.put("${launcher_version}", Metadata.VERSION); return res; } + + private void generateOptionsTxt() { + try { + // TODO: Dirty implementation here + if (I18n.getCurrentLocale().getLocale() == Locale.CHINA) + FileUtils.writeText(new File(repository.getRunDirectory(version.getId()), "options.txt"), "lang:zh_cn\nforceUnicodeFont:true\n"); + } catch (IOException e) { + Logging.LOG.log(Level.WARNING, "Unable to generate options.txt", e); + } + } + + @Override + public ManagedProcess launch() throws IOException, InterruptedException { + generateOptionsTxt(); + return super.launch(); + } + + @Override + public void makeLaunchScript(File scriptFile) throws IOException { + generateOptionsTxt(); + super.makeLaunchScript(scriptFile); + } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java index 0d851312f..056fcda10 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/I18n.java @@ -30,7 +30,7 @@ public final class I18n { private I18n() {} - private static SupportedLocale getCurrentLocale() { + public static SupportedLocale getCurrentLocale() { try { return ConfigHolder.config().getLocalization(); } catch (IllegalStateException e) {