From feb39f02ecb33e676efa4db398f50b1695bfa05f Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Thu, 22 Mar 2018 14:49:36 +0100 Subject: [PATCH] Fix Optifine language data missing when localization extra is enabled (fixes #109) --- .../replaymod/compat/optifine/OptifineReflection.java | 11 +++++++++++ .../java/com/replaymod/extras/LocalizationExtra.java | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java b/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java index 49d54e44..07aab724 100644 --- a/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java +++ b/src/main/java/com/replaymod/compat/optifine/OptifineReflection.java @@ -3,6 +3,7 @@ package com.replaymod.compat.optifine; import net.minecraft.client.settings.GameSettings; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; public class OptifineReflection { @@ -24,4 +25,14 @@ public class OptifineReflection { } } + public static void reloadLang() { + try { + Class.forName("Lang").getDeclaredMethod("resourcesReloaded").invoke(null); + } catch (ClassNotFoundException ignore) { + // no optifine installed + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + e.printStackTrace(); + } + } + } diff --git a/src/main/java/com/replaymod/extras/LocalizationExtra.java b/src/main/java/com/replaymod/extras/LocalizationExtra.java index 1abd70ca..13f4d1d2 100644 --- a/src/main/java/com/replaymod/extras/LocalizationExtra.java +++ b/src/main/java/com/replaymod/extras/LocalizationExtra.java @@ -1,6 +1,7 @@ package com.replaymod.extras; import com.google.common.collect.ImmutableSet; +import com.replaymod.compat.optifine.OptifineReflection; import com.replaymod.core.ReplayMod; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.IResourcePack; @@ -66,6 +67,8 @@ public class LocalizationExtra implements Extra { List defaultResourcePacks = mc.defaultResourcePacks; defaultResourcePacks.add(new LocalizedResourcePack(languages)); mc.getLanguageManager().onResourceManagerReload(mc.getResourceManager()); + // Optifine does its own, additional language data loading + OptifineReflection.reloadLang(); LOGGER.debug("Added language files to resource packs and reloaded LanguageManager"); }); } catch (Throwable t) {