aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/gregtech/GT_Mod.java4
-rw-r--r--src/main/java/gregtech/api/util/GT_LanguageManager.java31
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();
+ }
+ }
}