private void ListeMods(object sender, RoutedEventArgs e) { if (!File.Exists("config.xml")) { XmlTextWriter writer = new XmlTextWriter("config.xml", System.Text.Encoding.UTF8); writer.WriteStartDocument(); writer.Formatting = Formatting.Indented; writer.Indentation = 2; writer.WriteStartElement("config"); writer.WriteStartElement("Java"); writer.WriteStartElement("Min"); writer.WriteString("1024"); writer.WriteEndElement(); writer.WriteStartElement("Max"); writer.WriteString("4096"); writer.WriteEndElement(); writer.WriteStartElement("Perm"); writer.WriteString("256"); writer.WriteEndElement(); writer.WriteStartElement("Path"); writer.WriteString(""); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteStartElement("Server"); writer.WriteStartElement("Url"); writer.WriteString("http://mcpatch.more-salt-plz.fr/Client/"); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Close(); string appPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase); Config.Source = new Uri(appPath + @"\config.xml"); } if (ServeurModPack.Text != null) { string xml1 = Directory.GetCurrentDirectory() + @"\" + @"ModpackList.xml"; XmlDocument config = new XmlDocument(); config.Load("config.xml"); XmlNodeList url = config.GetElementsByTagName("Url"); UpdateMinecraft.TelechargementFichiers(xml1, string.Concat(url[0].InnerText, @"modpack/", "ModpackList.xml")); string appPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase); ModpackList.Source = new Uri(appPath + @"\ModpackList.xml"); } else { MessageBox.Show( "Il semblerait que vous n'avez pas renseigné le serveur ! Supprimer le fichier config.xml et relancez l'application pour le régénérer", "Une erreur s'est produite", MessageBoxButton.OK, (Style)Resources["MessageBoxStyle1"]); } }
private void LancerMinecraft(object sender, RoutedEventArgs e) { try { if (string.IsNullOrWhiteSpace(LoginTextBox.Text)) { MessageBox.Show("Le champ pour l'adresse mail ne peut pas être vide !", "Erreur"); } else if (string.IsNullOrWhiteSpace(PasswordBox.Password)) { MessageBox.Show("Le champ pour le mot de passe ne peut pas être vide !", "Erreur"); } else { UpdateGb.Visibility = Visibility.Visible; DoEvents(); UpdateMinecraft pb = new UpdateMinecraft(ModPack.Text, ServeurModPack.Text); if (!pb.GetVersion()) { UpdateGb.Visibility = Visibility.Hidden; return; } UpdateGb.Visibility = Visibility.Hidden; _session.PlayerName = LoginTextBox.Text; ConnexionMinecraft.LoginResult result = ConnexionMinecraft.GetLogin(_session.PlayerName, PasswordBox.Password, out _session); switch (result) { case ConnexionMinecraft.LoginResult.Success: string librairies = string.Empty; string versionMinecraft = string.Empty; string versionAssets = string.Empty; string forgeClass = string.Empty; string[] cheminsLibrairies = Directory.GetFiles(Directory.GetCurrentDirectory() + @"\" + ModPack.Text + @"\libraries\", "*", SearchOption.AllDirectories); if (File.Exists("config.xml")) { XDocument mods = XDocument.Load("config.xml"); IEnumerable <XElement> elementsPatch = mods.Descendants().Where(x => x.Name == "Java"); string minimum = string.Empty; string maximum = string.Empty; string perm = string.Empty; string chemin = string.Empty; foreach (XElement content in elementsPatch) { minimum = content.XPathSelectElement("Min").Value; maximum = content.XPathSelectElement("Max").Value; perm = content.XPathSelectElement("Perm").Value; chemin = content.XPathSelectElement("Path").Value; } if (string.IsNullOrWhiteSpace(minimum)) { minimum = "512"; } if (string.IsNullOrWhiteSpace(maximum)) { maximum = "1024"; } if (string.IsNullOrWhiteSpace(perm)) { perm = "128"; } if (string.IsNullOrWhiteSpace(chemin)) { chemin = ConnexionMinecraft.GetJavaInstallationPath(); chemin = Path.Combine(chemin, "bin\\Java.exe"); } if (File.Exists(chemin)) { XDocument versionFile = XDocument.Load(Directory.GetCurrentDirectory() + @"\" + ModPack.Text + @"\modpack\" + ModPack.Text + @".xml"); IEnumerable <XElement> versions = versionFile.Descendants().Where(x => x.Name == "Modpack"); foreach (XElement content in versions) { versionMinecraft = content.XPathSelectElement("Minecraft").Value; versionAssets = content.XPathSelectElement("Assets").Value; forgeClass = content.XPathSelectElement("Forge").Value; } librairies = cheminsLibrairies.Aggregate(librairies, (current, f) => current + Quote + f + Quote + ";"); string[] jars = Directory.GetFiles(Directory.GetCurrentDirectory() + @"\" + ModPack.Text + @"\versions\", "*.jar", SearchOption.AllDirectories); librairies = jars.Aggregate(librairies, (current, f) => current + Quote + f + Quote + ";"); librairies = librairies.Remove(librairies.Length - 1); string commande = @"-Xms" + minimum + @"m -Xmx" + maximum + @"m -XX:MaxPermSize=" + perm + " -Djava.library.path=" + Quote + Directory.GetCurrentDirectory() + @"\" + ModPack.Text + @"\natives" + Quote + " -cp " + librairies + " net.minecraft.launchwrapper.Launch --username " + _session.PlayerName + " --version " + versionMinecraft + " --gameDir " + Quote + Directory.GetCurrentDirectory() + @"\" + ModPack.Text + Quote + " --assetsDir " + Quote + Directory.GetCurrentDirectory() + @"\" + ModPack.Text + @"\assets" + Quote + " --assetIndex " + versionAssets + " --uuid " + _session.PlayerId + " --accessToken " + _session.Id + " --userProperties {} --userType mojang --tweakClass " + forgeClass; Process.Start(chemin, commande); /*ProcessStartInfo psi = new ProcessStartInfo(); * psi.FileName = chemin; * psi.UseShellExecute = false; * psi.Arguments = commande; * psi.RedirectStandardOutput = true; * using (Process pro = Process.Start(psi)) * { * using (StreamReader reader = pro.StandardOutput) * { * string res = reader.ReadToEnd(); * Debug.WriteLine(res); * } * }*/ } } break; case ConnexionMinecraft.LoginResult.InvalidToken: MessageBox.Show("Le jeton de connexion est invalide !", "Une erreur s'est produite", MessageBoxButton.OK, (Style)Resources["MessageBoxStyle1"]); break; case ConnexionMinecraft.LoginResult.LoginRequired: MessageBox.Show("Le mail est requis pour la connexion au serveur Minecraft !", "Une erreur s'est produite", MessageBoxButton.OK, (Style)Resources["MessageBoxStyle1"]); break; case ConnexionMinecraft.LoginResult.NotPremium: MessageBox.Show("Il faut acheter Minecraft pour pouvoir jouer !", "Une erreur s'est produite", MessageBoxButton.OK, (Style)Resources["MessageBoxStyle1"]); break; case ConnexionMinecraft.LoginResult.ServiceUnavailable: MessageBox.Show("Le serveur de connexion Mojant semble indisponible !", "Une erreur s'est produite", MessageBoxButton.OK, (Style)Resources["MessageBoxStyle1"]); break; case ConnexionMinecraft.LoginResult.WrongPassword: MessageBox.Show("Vous avez rentré un mauvais mot de passe !", "Une erreur s'est produite", MessageBoxButton.OK, (Style)Resources["MessageBoxStyle1"]); break; case ConnexionMinecraft.LoginResult.OtherError: break; case ConnexionMinecraft.LoginResult.SslError: break; case ConnexionMinecraft.LoginResult.AccountMigrated: break; case ConnexionMinecraft.LoginResult.NullError: break; default: MessageBox.Show("Il semblerait qu'une erreur soit survenue lors de la connexion ! Veuillez réessayer", "Une erreur s'est produite", MessageBoxButton.OK, (Style)Resources["MessageBoxStyle1"]); break; } } } catch { // ignored } }