diff --git a/MinecraftClient/ChatParser.cs b/MinecraftClient/ChatParser.cs
index 9bbdb80e..5f9daf6b 100644
--- a/MinecraftClient/ChatParser.cs
+++ b/MinecraftClient/ChatParser.cs
@@ -96,14 +96,37 @@ namespace MinecraftClient
TranslationRules["commands.message.display.outgoing"] = "ยง7You whisper to %s: %s";
//Use translations from Minecraft assets if translation file is not found but a copy of the game is installed?
- if (!System.IO.File.Exists(Settings.TranslationsFile) //Try en_US.lang
+ if (!System.IO.File.Exists(Settings.TranslationsFile) //Try en_GB.lang
&& System.IO.File.Exists(Settings.TranslationsFile_FromMCDir))
- { Settings.TranslationsFile = Settings.TranslationsFile_FromMCDir; }
- if (!System.IO.File.Exists(Settings.TranslationsFile) //Still not found? try en_GB.lang
- && System.IO.File.Exists(Settings.TranslationsFile_FromMCDir_Alt))
- { Settings.TranslationsFile = Settings.TranslationsFile_FromMCDir_Alt; }
+ {
+ Settings.TranslationsFile = Settings.TranslationsFile_FromMCDir;
+ Console.ForegroundColor = ConsoleColor.DarkGray;
+ ConsoleIO.WriteLine("Using en_GB.lang from your Minecraft directory.");
+ Console.ForegroundColor = ConsoleColor.Gray;
+ }
- //Load an external dictionnary of translation rules
+ //Still not found? try downloading en_GB from Mojang's servers?
+ if (!System.IO.File.Exists(Settings.TranslationsFile))
+ {
+ Console.ForegroundColor = ConsoleColor.DarkGray;
+ ConsoleIO.WriteLine("Downloading en_GB.lang from Mojang's servers...");
+ try
+ {
+ string assets_index = downloadString(Settings.TranslationsFile_Website_Index);
+ string[] tmp = assets_index.Split(new string[] { "lang/en_GB.lang" }, StringSplitOptions.None);
+ tmp = tmp[1].Split(new string[] { "hash\": \"" }, StringSplitOptions.None);
+ string hash = tmp[1].Split('"')[0]; //Translations file identifier on Mojang's servers
+ System.IO.File.WriteAllText(Settings.TranslationsFile, downloadString(Settings.TranslationsFile_Website_Download + '/' + hash.Substring(0, 2) + '/' + hash));
+ ConsoleIO.WriteLine("Done. File saved as \"" + Settings.TranslationsFile + '"');
+ }
+ catch
+ {
+ ConsoleIO.WriteLine("Failed to download the file.");
+ }
+ Console.ForegroundColor = ConsoleColor.Gray;
+ }
+
+ //Load the external dictionnary of translation rules or display an error message
if (System.IO.File.Exists(Settings.TranslationsFile))
{
string[] translations = System.IO.File.ReadAllLines(Settings.TranslationsFile);
@@ -343,5 +366,23 @@ namespace MinecraftClient
/// True if hexadecimal
private static bool isHex(char c) { return ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')); }
+
+ ///
+ /// Do a HTTP request to get a webpage or text data from a server file
+ ///
+ /// URL of resource
+ /// Returns resource data if success, otherwise a WebException is raised
+
+ private static string downloadString(string url)
+ {
+ System.Net.HttpWebRequest myRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
+ myRequest.Method = "GET";
+ System.Net.WebResponse myResponse = myRequest.GetResponse();
+ System.IO.StreamReader sr = new System.IO.StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
+ string result = sr.ReadToEnd();
+ sr.Close();
+ myResponse.Close();
+ return result;
+ }
}
}
diff --git a/MinecraftClient/Settings.cs b/MinecraftClient/Settings.cs
index f6a3284c..87bedeef 100644
--- a/MinecraftClient/Settings.cs
+++ b/MinecraftClient/Settings.cs
@@ -23,8 +23,9 @@ namespace MinecraftClient
public static string SingleCommand = "";
//Other Settings
- public static string TranslationsFile_FromMCDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\.minecraft\assets\virtual\legacy\lang\en_US.lang";
- public static string TranslationsFile_FromMCDir_Alt = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\.minecraft\assets\virtual\legacy\lang\en_GB.lang";
+ public static string TranslationsFile_FromMCDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\.minecraft\assets\virtual\legacy\lang\en_GB.lang";
+ public static string TranslationsFile_Website_Index = "https://s3.amazonaws.com/Minecraft.Download/indexes/1.7.4.json";
+ public static string TranslationsFile_Website_Download = "http://resources.download.minecraft.net";
public static string TranslationsFile = "translations.lang";
public static string Bots_OwnersFile = "bot-owners.txt";