diff options
-rw-r--r-- | src/main/java/gregtech/GT_Mod.java | 4 | ||||
-rw-r--r-- | src/main/java/gregtech/api/util/GT_LanguageManager.java | 31 |
2 files changed, 29 insertions, 6 deletions
diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java index 0d9287bc21..768fe4ceae 100644 --- a/src/main/java/gregtech/GT_Mod.java +++ b/src/main/java/gregtech/GT_Mod.java @@ -373,8 +373,8 @@ public class GT_Mod implements IGT_Mod { new GT_ExtremeDieselFuelLoader().run(); GT_TooltipEventHandler.init(); MinecraftForge.EVENT_BUS.register(new GT_TooltipEventHandler()); - - + GT_LanguageManager.propagateLocalizationServerSide(); + /* * Until this point most crafting recipe additions, and removals, have been buffered. * Go through, execute the removals in bulk, and then any deferred additions. The bulk removals in particular significantly speed up the recipe list diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java index 66cd7e9b50..899a3e731b 100644 --- a/src/main/java/gregtech/api/util/GT_LanguageManager.java +++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java @@ -2,19 +2,23 @@ package gregtech.api.util; import cpw.mods.fml.common.registry.LanguageRegistry; import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; + import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; +import java.lang.reflect.Field; import java.util.HashMap; +import java.util.Map; import java.util.Map.Entry; import static gregtech.api.enums.GT_Values.E; public class GT_LanguageManager { - public static final HashMap<String, String> TEMPMAP = new HashMap<String, String>(), BUFFERMAP = new HashMap<String, String>(), LANGMAP = new HashMap<String, String>(); + public static final HashMap<String, String> TEMPMAP = new HashMap<>(), BUFFERMAP = new HashMap<>(), LANGMAP = new HashMap<>(); public static Configuration sEnglishFile; public static String sLanguage = "en_US"; public static boolean sUseEnglishFile = false; @@ -78,8 +82,9 @@ public class GT_LanguageManager { rTranslation = StatCollector.translateToLocal(tTrimmedKey); if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.equals(rTranslation)) { if (aKey.endsWith(".name")) { - rTranslation = StatCollector.translateToLocal(tTrimmedKey.substring(0, tTrimmedKey.length() - 5)); - if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.substring(0, tTrimmedKey.length() - 5).equals(rTranslation)) { + String trimmedKeyNoName = tTrimmedKey.substring(0, tTrimmedKey.length() - 5); + rTranslation = StatCollector.translateToLocal(trimmedKeyNoName); + if (GT_Utility.isStringInvalid(rTranslation) || trimmedKeyNoName.equals(rTranslation)) { return aKey; } } else { @@ -365,5 +370,23 @@ public class GT_LanguageManager { addStringLocalization("Item_DESCRIPTION_Index_500", "Turbine Efficiency (Loose): %s"); addStringLocalization("Item_DESCRIPTION_Index_501", "Optimal Steam flow (Loose): %s L/t"); } - + + @SuppressWarnings("rawtypes, unchecked") + public static void propagateLocalizationServerSide() { + if (!GT_Values.GT.isServerSide()) + return; + try { + Class cls = Class.forName("net.minecraft.util.StringTranslate"); + Field languageList = cls.getDeclaredField("languageList"); + languageList.setAccessible(true); + Field instance = cls.getDeclaredField("instance"); + instance.setAccessible(true); + Object m = languageList.get(instance.get(null)); + if (!(m instanceof Map)) + return; + ((Map)m).putAll(LANGMAP); + } catch (Throwable ex) { + ex.printStackTrace(); + } + } } |