//[Authorize()] public ActionResult Index() { //if (String.IsNullOrEmpty(Beyondbit.SingleSignOn.ClientForAspNet20.SSOClient.UserUid)) //{ // string SSO_SignOnUrl = ConfigurationManager.AppSettings["SSO_SignOnUrl"]; // return Redirect(SSO_SignOnUrl); //} const string menucachekey = "__UserMenu"; List <AccordionItem> menuList; SessionCache.Clear(); if (SessionCache.Contains(menucachekey)) { menuList = SessionCache.Get(menucachekey) as List <AccordionItem>; if (menuList == null) { menuList = new List <AccordionItem>(); } } else { if (Beyondbit.SingleSignOn.ClientForAspNet20.SSOClient.UserUid == null) { menuList = SmartBox.Console.UserMenu.UserMenuFactory.GetUserMenuBO.GetCurrentUserMenu(this); //menuList = GetCurrentUserMenu(); } else { menuList = GetCurrentUserMenuByBUA(); } SessionCache.AddItem(menucachekey, menuList); } ViewData["CurrentUser"] = base.CurrentUser.FullName; ViewData["UserOrg"] = base.CurrentUser.OrgName; return(View(menuList)); }
public static ProtocolHandler.LoginResult tryAuthenticateSession(out SessionToken session, string usr, string pass) { session = new SessionToken(); if (pass == "-") { ConsoleIO.WriteLineFormatted("§8You chose to run in offline mode."); session.PlayerID = "0"; session.PlayerName = usr; return(ProtocolHandler.LoginResult.Success); } if (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(usr.ToLower())) { return(ProtocolHandler.LoginResult.LoginRequired); } session = SessionCache.Get(usr.ToLower()); if (ProtocolHandler.GetTokenValidation(session) == ProtocolHandler.LoginResult.Success) { ConsoleIO.WriteLineFormatted("§8Cached session is still valid for " + session.PlayerName + '.'); return(ProtocolHandler.LoginResult.Success); } ConsoleIO.WriteLineFormatted("§8Cached session is invalid or expired."); //if (Settings.Password == "") //RequestPassword(); Console.WriteLine("Connecting to Minecraft.net..."); if (ProtocolHandler.GetLogin(usr, pass, out session) == ProtocolHandler.LoginResult.Success && Settings.SessionCaching != CacheType.None) { SessionCache.Store(usr.ToLower(), session); return(ProtocolHandler.LoginResult.Success); } return(ProtocolHandler.LoginResult.LoginRequired); }
/// <summary> /// The main entry point of Minecraft Console Client /// </summary> static void Main(string[] args) { Console.WriteLine("Console Client for MC {0} to {1} - v{2} - By ORelio & Contributors", MCLowestVersion, MCHighestVersion, Version); //Debug input ? if (args.Length == 1 && args[0] == "--keyboard-debug") { Console.WriteLine("Keyboard debug mode: Press any key to display info"); ConsoleIO.DebugReadInput(); } //Basic Input/Output ? if (args.Length >= 1 && args[args.Length - 1] == "BasicIO") { ConsoleIO.basicIO = true; args = args.Where(o => !Object.ReferenceEquals(o, args[args.Length - 1])).ToArray(); } //Take advantage of Windows 10 / Mac / Linux UTF-8 console if (isUsingMono || WindowsVersion.WinMajorVersion >= 10) { Console.OutputEncoding = Console.InputEncoding = Encoding.UTF8; } //Process ini configuration file if (args.Length >= 1 && System.IO.File.Exists(args[0]) && System.IO.Path.GetExtension(args[0]).ToLower() == ".ini") { Settings.LoadSettings(args[0]); //remove ini configuration file from arguments array List <string> args_tmp = args.ToList <string>(); args_tmp.RemoveAt(0); args = args_tmp.ToArray(); } else if (System.IO.File.Exists("MinecraftClient.ini")) { Settings.LoadSettings("MinecraftClient.ini"); } else { Settings.WriteDefaultSettings("MinecraftClient.ini"); } //Other command-line arguments if (args.Length >= 1) { Settings.Login = args[0]; if (args.Length >= 2) { Settings.Password = args[1]; if (args.Length >= 3) { Settings.SetServerIP(args[2]); //Single command? if (args.Length >= 4) { Settings.SingleCommand = args[3]; } } } } if (Settings.ConsoleTitle != "") { Settings.Username = "******"; Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } //Load cached sessions from disk if necessary if (Settings.SessionCaching == CacheType.Disk) { bool cacheLoaded = SessionCache.InitializeDiskCache(); if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted(cacheLoaded ? "§8Session cache has been successfully loaded from disk." : "§8Cached sessions could not be loaded from disk"); } } //Asking the user to type in missing data such as Username and Password if (Settings.Login == "") { Console.Write(ConsoleIO.basicIO ? "Please type the username or email of your choice.\n" : "Login : "******"" && (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(Settings.Login.ToLower()))) { RequestPassword(); } startupargs = args; InitializeClient(); }
/// <summary> /// Start a new Client /// </summary> private static void InitializeClient() { SessionToken session = new SessionToken(); ProtocolHandler.LoginResult result = ProtocolHandler.LoginResult.LoginRequired; if (Settings.Password == "-") { ConsoleIO.WriteLineFormatted("§8You chose to run in offline mode."); result = ProtocolHandler.LoginResult.Success; session.PlayerID = "0"; session.PlayerName = Settings.Login; } else { // Validate cached session or login new session. if (Settings.SessionCaching != CacheType.None && SessionCache.Contains(Settings.Login.ToLower())) { session = SessionCache.Get(Settings.Login.ToLower()); result = ProtocolHandler.GetTokenValidation(session); if (result != ProtocolHandler.LoginResult.Success) { ConsoleIO.WriteLineFormatted("§8Cached session is invalid or expired."); if (Settings.Password == "") { RequestPassword(); } } else { ConsoleIO.WriteLineFormatted("§8Cached session is still valid for " + session.PlayerName + '.'); } } if (result != ProtocolHandler.LoginResult.Success) { Console.WriteLine("Connecting to Minecraft.net..."); result = ProtocolHandler.GetLogin(Settings.Login, Settings.Password, out session); if (result == ProtocolHandler.LoginResult.Success && Settings.SessionCaching != CacheType.None) { SessionCache.Store(Settings.Login.ToLower(), session); } } } if (result == ProtocolHandler.LoginResult.Success) { Settings.Username = session.PlayerName; if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } if (Settings.playerHeadAsIcon) { ConsoleIcon.setPlayerIconAsync(Settings.Username); } if (Settings.DebugMessages) { Console.WriteLine("Success. (session ID: " + session.ID + ')'); } //ProtocolHandler.RealmsListWorlds(Settings.Username, PlayerID, sessionID); //TODO REMOVE if (Settings.ServerIP == "") { Console.Write("Server IP : "); Settings.SetServerIP(Console.ReadLine()); } //Get server version int protocolversion = 0; ForgeInfo forgeInfo = null; if (Settings.ServerVersion != "" && Settings.ServerVersion.ToLower() != "auto") { protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(Settings.ServerVersion); if (protocolversion != 0) { ConsoleIO.WriteLineFormatted("§8Using Minecraft version " + Settings.ServerVersion + " (protocol v" + protocolversion + ')'); } else { ConsoleIO.WriteLineFormatted("§8Unknown or not supported MC version '" + Settings.ServerVersion + "'.\nSwitching to autodetection mode."); } if (useMcVersionOnce) { useMcVersionOnce = false; Settings.ServerVersion = ""; } } if (protocolversion == 0) { Console.WriteLine("Retrieving Server Info..."); if (!ProtocolHandler.GetServerInfo(Settings.ServerIP, Settings.ServerPort, ref protocolversion, ref forgeInfo)) { HandleFailure("Failed to ping this IP.", true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); return; } } if (protocolversion != 0) { try { //Start the main TCP client if (Settings.SingleCommand != "") { Client = new McTcpClient(session.PlayerName, session.PlayerID, session.ID, Settings.ServerIP, Settings.ServerPort, protocolversion, forgeInfo, Settings.SingleCommand); } else { Client = new McTcpClient(session.PlayerName, session.PlayerID, session.ID, protocolversion, forgeInfo, Settings.ServerIP, Settings.ServerPort); } //Update console title if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } } catch (NotSupportedException) { HandleFailure("Cannot connect to the server : This version is not supported !", true); } } else { HandleFailure("Failed to determine server version.", true); } } else { Console.ForegroundColor = ConsoleColor.Gray; string failureMessage = "Minecraft Login failed : "; switch (result) { case ProtocolHandler.LoginResult.AccountMigrated: failureMessage += "Account migrated, use e-mail as username."; break; case ProtocolHandler.LoginResult.ServiceUnavailable: failureMessage += "Login servers are unavailable. Please try again later."; break; case ProtocolHandler.LoginResult.WrongPassword: failureMessage += "Incorrect password."; break; case ProtocolHandler.LoginResult.NotPremium: failureMessage += "User not premium."; break; case ProtocolHandler.LoginResult.OtherError: failureMessage += "Network error."; break; case ProtocolHandler.LoginResult.SSLError: failureMessage += "SSL Error."; break; default: failureMessage += "Unknown Error."; break; } if (result == ProtocolHandler.LoginResult.SSLError && isUsingMono) { ConsoleIO.WriteLineFormatted("§8It appears that you are using Mono to run this program." + '\n' + "The first time, you have to import HTTPS certificates using:" + '\n' + "mozroots --import --ask-remove"); return; } HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected); } }
/// <summary> /// The main entry point of Minecraft Console Client /// </summary> static void Main(string[] args) { Console.WriteLine("Minecraft Console Client v{0} - for MC {1} to {2} - Github.com/MCCTeam", Version, MCLowestVersion, MCHighestVersion); //Build information to facilitate processing of bug reports if (BuildInfo != null) { ConsoleIO.WriteLineFormatted("§8" + BuildInfo); } //Debug input ? if (args.Length == 1 && args[0] == "--keyboard-debug") { ConsoleIO.WriteLine("Keyboard debug mode: Press any key to display info"); ConsoleIO.DebugReadInput(); } //Setup ConsoleIO ConsoleIO.LogPrefix = "§8[MCC] "; if (args.Length >= 1 && args[args.Length - 1] == "BasicIO" || args.Length >= 1 && args[args.Length - 1] == "BasicIO-NoColor") { if (args.Length >= 1 && args[args.Length - 1] == "BasicIO-NoColor") { ConsoleIO.BasicIO_NoColor = true; } ConsoleIO.BasicIO = true; args = args.Where(o => !Object.ReferenceEquals(o, args[args.Length - 1])).ToArray(); } //Take advantage of Windows 10 / Mac / Linux UTF-8 console if (isUsingMono || WindowsVersion.WinMajorVersion >= 10) { Console.OutputEncoding = Console.InputEncoding = Encoding.UTF8; } //Process ini configuration file if (args.Length >= 1 && System.IO.File.Exists(args[0]) && System.IO.Path.GetExtension(args[0]).ToLower() == ".ini") { Settings.LoadFile(args[0]); //remove ini configuration file from arguments array List <string> args_tmp = args.ToList <string>(); args_tmp.RemoveAt(0); args = args_tmp.ToArray(); } else if (System.IO.File.Exists("MinecraftClient.ini")) { Settings.LoadFile("MinecraftClient.ini"); } else { Settings.WriteDefaultSettings("MinecraftClient.ini"); } //Load external translation file. Should be called AFTER settings loaded Translations.LoadExternalTranslationFile(Settings.Language); //Other command-line arguments if (args.Length >= 1) { if (args.Contains("--help")) { Console.WriteLine("Command-Line Help:"); Console.WriteLine("MinecraftClient.exe <username> <password> <server>"); Console.WriteLine("MinecraftClient.exe <username> <password> <server> \"/mycommand\""); Console.WriteLine("MinecraftClient.exe --setting=value [--other settings]"); Console.WriteLine("MinecraftClient.exe --section.setting=value [--other settings]"); Console.WriteLine("MinecraftClient.exe <settings-file.ini> [--other settings]"); return; } try { Settings.LoadArguments(args); } catch (ArgumentException e) { Settings.interactiveMode = false; HandleFailure(e.Message); return; } } if (Settings.ConsoleTitle != "") { Settings.Username = "******"; Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } //Test line to troubleshoot invisible colors if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted(Translations.Get("debug.color_test", "[0123456789ABCDEF]: [§00§11§22§33§44§55§66§77§88§99§aA§bB§cC§dD§eE§fF§r]")); } //Load cached sessions from disk if necessary if (Settings.SessionCaching == CacheType.Disk) { bool cacheLoaded = SessionCache.InitializeDiskCache(); if (Settings.DebugMessages) { Translations.WriteLineFormatted(cacheLoaded ? "debug.session_cache_ok" : "debug.session_cache_fail"); } } //Asking the user to type in missing data such as Username and Password bool useBrowser = Settings.AccountType == ProtocolHandler.AccountType.Microsoft && Settings.LoginMethod == "browser"; if (Settings.Login == "") { if (useBrowser) { ConsoleIO.WriteLine("Press Enter to skip session cache checking and continue sign-in with browser"); } Console.Write(ConsoleIO.BasicIO ? Translations.Get("mcc.login_basic_io") + "\n" : Translations.Get("mcc.login")); Settings.Login = Console.ReadLine(); } if (Settings.Password == "" && (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(Settings.Login.ToLower())) && !useBrowser) { RequestPassword(); } // Setup exit cleaning code ExitCleanUp.Add(delegate() { // Do NOT use Program.Exit() as creating new Thread cause program to freeze if (client != null) { client.Disconnect(); ConsoleIO.Reset(); } if (offlinePrompt != null) { offlinePrompt.Abort(); offlinePrompt = null; ConsoleIO.Reset(); } if (Settings.playerHeadAsIcon) { ConsoleIcon.revertToMCCIcon(); } }); startupargs = args; InitializeClient(); }
/// <summary> /// Start a new Client /// </summary> private static void InitializeClient() { SessionToken session = new SessionToken(); ProtocolHandler.LoginResult result = ProtocolHandler.LoginResult.LoginRequired; if (Settings.Password == "-") { Translations.WriteLineFormatted("mcc.offline"); result = ProtocolHandler.LoginResult.Success; session.PlayerID = "0"; session.PlayerName = Settings.Login; } else { // Validate cached session or login new session. if (Settings.SessionCaching != CacheType.None && SessionCache.Contains(Settings.Login.ToLower())) { session = SessionCache.Get(Settings.Login.ToLower()); result = ProtocolHandler.GetTokenValidation(session); if (result != ProtocolHandler.LoginResult.Success) { Translations.WriteLineFormatted("mcc.session_invalid"); if (Settings.Password == "") { RequestPassword(); } } else { ConsoleIO.WriteLineFormatted(Translations.Get("mcc.session_valid", session.PlayerName)); } } if (result != ProtocolHandler.LoginResult.Success) { Translations.WriteLine("mcc.connecting", Settings.AccountType == ProtocolHandler.AccountType.Mojang ? "Minecraft.net" : "Microsoft"); result = ProtocolHandler.GetLogin(Settings.Login, Settings.Password, Settings.AccountType, out session); if (result == ProtocolHandler.LoginResult.Success && Settings.SessionCaching != CacheType.None) { SessionCache.Store(Settings.Login.ToLower(), session); } } } if (result == ProtocolHandler.LoginResult.Success) { Settings.Username = session.PlayerName; bool isRealms = false; if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } if (Settings.playerHeadAsIcon) { ConsoleIcon.setPlayerIconAsync(Settings.Username); } if (Settings.DebugMessages) { Translations.WriteLine("debug.session_id", session.ID); } List <string> availableWorlds = new List <string>(); if (Settings.MinecraftRealmsEnabled && !String.IsNullOrEmpty(session.ID)) { availableWorlds = ProtocolHandler.RealmsListWorlds(Settings.Username, session.PlayerID, session.ID); } if (Settings.ServerIP == "") { Translations.Write("mcc.ip"); string addressInput = Console.ReadLine(); if (addressInput.StartsWith("realms:")) { if (Settings.MinecraftRealmsEnabled) { if (availableWorlds.Count == 0) { HandleFailure(Translations.Get("error.realms.access_denied"), false, ChatBot.DisconnectReason.LoginRejected); return; } int worldIndex = 0; string worldId = addressInput.Split(':')[1]; if (!availableWorlds.Contains(worldId) && int.TryParse(worldId, out worldIndex) && worldIndex < availableWorlds.Count) { worldId = availableWorlds[worldIndex]; } if (availableWorlds.Contains(worldId)) { string RealmsAddress = ProtocolHandler.GetRealmsWorldServerAddress(worldId, Settings.Username, session.PlayerID, session.ID); if (RealmsAddress != "") { addressInput = RealmsAddress; isRealms = true; Settings.ServerVersion = MCHighestVersion; } else { HandleFailure(Translations.Get("error.realms.server_unavailable"), false, ChatBot.DisconnectReason.LoginRejected); return; } } else { HandleFailure(Translations.Get("error.realms.server_id"), false, ChatBot.DisconnectReason.LoginRejected); return; } } else { HandleFailure(Translations.Get("error.realms.disabled"), false, null); return; } } Settings.SetServerIP(addressInput); } //Get server version int protocolversion = 0; ForgeInfo forgeInfo = null; if (Settings.ServerVersion != "" && Settings.ServerVersion.ToLower() != "auto") { protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(Settings.ServerVersion); if (protocolversion != 0) { ConsoleIO.WriteLineFormatted(Translations.Get("mcc.use_version", Settings.ServerVersion, protocolversion)); } else { ConsoleIO.WriteLineFormatted(Translations.Get("mcc.unknown_version", Settings.ServerVersion)); } if (useMcVersionOnce) { useMcVersionOnce = false; Settings.ServerVersion = ""; } } //Retrieve server info if version is not manually set OR if need to retrieve Forge information if (!isRealms && (protocolversion == 0 || Settings.ServerAutodetectForge || (Settings.ServerForceForge && !ProtocolHandler.ProtocolMayForceForge(protocolversion)))) { if (protocolversion != 0) { Translations.WriteLine("mcc.forge"); } else { Translations.WriteLine("mcc.retrieve"); } if (!ProtocolHandler.GetServerInfo(Settings.ServerIP, Settings.ServerPort, ref protocolversion, ref forgeInfo)) { HandleFailure(Translations.Get("error.ping"), true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); return; } } //Force-enable Forge support? if (!isRealms && Settings.ServerForceForge && forgeInfo == null) { if (ProtocolHandler.ProtocolMayForceForge(protocolversion)) { Translations.WriteLine("mcc.forgeforce"); forgeInfo = ProtocolHandler.ProtocolForceForge(protocolversion); } else { HandleFailure(Translations.Get("error.forgeforce"), true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); return; } } //Proceed to server login if (protocolversion != 0) { try { //Start the main TCP client if (Settings.SingleCommand != "") { client = new McClient(session.PlayerName, session.PlayerID, session.ID, Settings.ServerIP, Settings.ServerPort, protocolversion, forgeInfo, Settings.SingleCommand); } else { client = new McClient(session.PlayerName, session.PlayerID, session.ID, protocolversion, forgeInfo, Settings.ServerIP, Settings.ServerPort); } //Update console title if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } } catch (NotSupportedException) { HandleFailure(Translations.Get("error.unsupported"), true); } } else { HandleFailure(Translations.Get("error.determine"), true); } } else { string failureMessage = Translations.Get("error.login"); string failureReason = ""; switch (result) { case ProtocolHandler.LoginResult.AccountMigrated: failureReason = "error.login.migrated"; break; case ProtocolHandler.LoginResult.ServiceUnavailable: failureReason = "error.login.server"; break; case ProtocolHandler.LoginResult.WrongPassword: failureReason = "error.login.blocked"; break; case ProtocolHandler.LoginResult.InvalidResponse: failureReason = "error.login.response"; break; case ProtocolHandler.LoginResult.NotPremium: failureReason = "error.login.premium"; break; case ProtocolHandler.LoginResult.OtherError: failureReason = "error.login.network"; break; case ProtocolHandler.LoginResult.SSLError: failureReason = "error.login.ssl"; break; case ProtocolHandler.LoginResult.UserCancel: failureReason = "error.login.cancel"; break; default: failureReason = "error.login.unknown"; break; } failureMessage += Translations.Get(failureReason); if (result == ProtocolHandler.LoginResult.SSLError && isUsingMono) { Translations.WriteLineFormatted("error.login.ssl_help"); return; } HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected); } }
/// <summary> /// The main entry point of Minecraft Console Client /// </summary> static void Main(string[] args) { Console.WriteLine("Console Client for MC {0} to {1} - v{2} - By ORelio & Contributors", MCLowestVersion, MCHighestVersion, Version); //Build information to facilitate processing of bug reports if (BuildInfo != null) { ConsoleIO.WriteLineFormatted("§8" + BuildInfo); } //Debug input ? if (args.Length == 1 && args[0] == "--keyboard-debug") { ConsoleIO.WriteLine("Keyboard debug mode: Press any key to display info"); ConsoleIO.DebugReadInput(); } //Setup ConsoleIO ConsoleIO.LogPrefix = "§8[MCC] "; if (args.Length >= 1 && args[args.Length - 1] == "BasicIO" || args.Length >= 1 && args[args.Length - 1] == "BasicIO-NoColor") { if (args.Length >= 1 && args[args.Length - 1] == "BasicIO-NoColor") { ConsoleIO.BasicIO_NoColor = true; } ConsoleIO.BasicIO = true; args = args.Where(o => !Object.ReferenceEquals(o, args[args.Length - 1])).ToArray(); } //Take advantage of Windows 10 / Mac / Linux UTF-8 console if (isUsingMono || WindowsVersion.WinMajorVersion >= 10) { Console.OutputEncoding = Console.InputEncoding = Encoding.UTF8; } //Process ini configuration file if (args.Length >= 1 && System.IO.File.Exists(args[0]) && System.IO.Path.GetExtension(args[0]).ToLower() == ".ini") { Settings.LoadSettings(args[0]); //remove ini configuration file from arguments array List <string> args_tmp = args.ToList <string>(); args_tmp.RemoveAt(0); args = args_tmp.ToArray(); } else if (System.IO.File.Exists("MinecraftClient.ini")) { Settings.LoadSettings("MinecraftClient.ini"); } else { Settings.WriteDefaultSettings("MinecraftClient.ini"); } //Load external translation file. Should be called AFTER settings loaded Translations.LoadExternalTranslationFile(Settings.Language); //Other command-line arguments if (args.Length >= 1) { Settings.Login = args[0]; if (args.Length >= 2) { Settings.Password = args[1]; if (args.Length >= 3) { Settings.SetServerIP(args[2]); //Single command? if (args.Length >= 4) { Settings.SingleCommand = args[3]; } } } } if (Settings.ConsoleTitle != "") { Settings.Username = "******"; Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } //Test line to troubleshoot invisible colors if (Settings.DebugMessages) { Translations.WriteLineFormatted(Translations.Get("debug.color_test", "[0123456789ABCDEF]: [§00§11§22§33§44§55§66§77§88§99§aA§bB§cC§dD§eE§fF§r]")); } //Load cached sessions from disk if necessary if (Settings.SessionCaching == CacheType.Disk) { bool cacheLoaded = SessionCache.InitializeDiskCache(); if (Settings.DebugMessages) { Translations.WriteLineFormatted(cacheLoaded ? "debug.session_cache_ok" : "debug.session_cache_fail"); } } //Asking the user to type in missing data such as Username and Password if (Settings.Login == "") { Console.Write(ConsoleIO.BasicIO ? Translations.Get("mcc.login_basic_io") + "\n" : Translations.Get("mcc.login")); Settings.Login = Console.ReadLine(); } if (Settings.Password == "" && (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(Settings.Login.ToLower()))) { RequestPassword(); } startupargs = args; InitializeClient(); }
/// <summary> /// Start a new Client /// </summary> private static void InitializeClient() { SessionToken session = new SessionToken(); ProtocolHandler.LoginResult result = ProtocolHandler.LoginResult.LoginRequired; if (Settings.Password == "-") { Translations.WriteLineFormatted("mcc.offline"); result = ProtocolHandler.LoginResult.Success; session.PlayerID = "0"; session.PlayerName = Settings.Login; } else { // Validate cached session or login new session. if (Settings.SessionCaching != CacheType.None && SessionCache.Contains(Settings.Login.ToLower())) { session = SessionCache.Get(Settings.Login.ToLower()); result = ProtocolHandler.GetTokenValidation(session); if (result != ProtocolHandler.LoginResult.Success) { Translations.WriteLineFormatted("mcc.session_invalid"); if (Settings.Password == "") { RequestPassword(); } } else { ConsoleIO.WriteLineFormatted(Translations.Get("mcc.session_valid", session.PlayerName)); } } if (result != ProtocolHandler.LoginResult.Success) { Translations.WriteLine("mcc.connecting"); result = ProtocolHandler.GetLogin(Settings.Login, Settings.Password, out session); if (result == ProtocolHandler.LoginResult.Success && Settings.SessionCaching != CacheType.None) { SessionCache.Store(Settings.Login.ToLower(), session); } } } if (result == ProtocolHandler.LoginResult.Success) { Settings.Username = session.PlayerName; if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } if (Settings.playerHeadAsIcon) { ConsoleIcon.setPlayerIconAsync(Settings.Username); } if (Settings.DebugMessages) { Translations.WriteLine("debug.session_id", session.ID); } //ProtocolHandler.RealmsListWorlds(Settings.Username, PlayerID, sessionID); //TODO REMOVE if (Settings.ServerIP == "") { Translations.Write("mcc.ip"); Settings.SetServerIP(Console.ReadLine()); } //Get server version int protocolversion = 0; ForgeInfo forgeInfo = null; if (Settings.ServerVersion != "" && Settings.ServerVersion.ToLower() != "auto") { protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(Settings.ServerVersion); if (protocolversion != 0) { ConsoleIO.WriteLineFormatted(Translations.Get("mcc.use_version", Settings.ServerVersion, protocolversion)); } else { ConsoleIO.WriteLineFormatted(Translations.Get("mcc.unknown_version", Settings.ServerVersion)); } if (useMcVersionOnce) { useMcVersionOnce = false; Settings.ServerVersion = ""; } } if (protocolversion == 0 || Settings.ServerMayHaveForge) { if (protocolversion != 0) { Translations.WriteLine("mcc.forge"); } else { Translations.WriteLine("mcc.retrieve"); } if (!ProtocolHandler.GetServerInfo(Settings.ServerIP, Settings.ServerPort, ref protocolversion, ref forgeInfo)) { HandleFailure(Translations.Get("error.ping"), true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); return; } } if (protocolversion != 0) { try { //Start the main TCP client if (Settings.SingleCommand != "") { client = new McClient(session.PlayerName, session.PlayerID, session.ID, Settings.ServerIP, Settings.ServerPort, protocolversion, forgeInfo, Settings.SingleCommand); } else { client = new McClient(session.PlayerName, session.PlayerID, session.ID, protocolversion, forgeInfo, Settings.ServerIP, Settings.ServerPort); } //Update console title if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } } catch (NotSupportedException) { HandleFailure(Translations.Get("error.unsupported"), true); } } else { HandleFailure(Translations.Get("error.determine"), true); } } else { string failureMessage = Translations.Get("error.login"); string failureReason = ""; switch (result) { case ProtocolHandler.LoginResult.AccountMigrated: failureReason = "error.login.migrated"; break; case ProtocolHandler.LoginResult.ServiceUnavailable: failureReason = "error.login.server"; break; case ProtocolHandler.LoginResult.WrongPassword: failureReason = "error.login.blocked"; break; case ProtocolHandler.LoginResult.InvalidResponse: failureReason = "error.login.response"; break; case ProtocolHandler.LoginResult.NotPremium: failureReason = "error.login.premium"; break; case ProtocolHandler.LoginResult.OtherError: failureReason = "error.login.network"; break; case ProtocolHandler.LoginResult.SSLError: failureReason = "error.login.ssl"; break; default: failureReason = "error.login.unknown"; break; } failureMessage += Translations.Get(failureReason); if (result == ProtocolHandler.LoginResult.SSLError && isUsingMono) { Translations.WriteLineFormatted("error.login.ssl_help"); return; } HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected); } }
/// <summary> /// The main entry point of Minecraft Console Client /// </summary> static void Main(string[] args) { ConsoleIO.WriteLineFormatted("§2[HtBot] §9Inicializando o bot xD"); //Console.WriteLine("Console Client for MC {0} to {1} - v{2} - By ORelio & Contributors", MCLowestVersion, MCHighestVersion, Version); HtBot.Telegram.Start(); //Build information to facilitate processing of bug reports if (BuildInfo != null) { ConsoleIO.WriteLineFormatted("§8" + BuildInfo); } //Debug input ? if (args.Length == 1 && args[0] == "--keyboard-debug") { Console.WriteLine("Keyboard debug mode: Press any key to display info"); ConsoleIO.DebugReadInput(); } //Setup ConsoleIO ConsoleIO.LogPrefix = "§8[MCC] "; if (args.Length >= 1 && args[args.Length - 1] == "BasicIO") { ConsoleIO.BasicIO = true; args = args.Where(o => !Object.ReferenceEquals(o, args[args.Length - 1])).ToArray(); } //Take advantage of Windows 10 / Mac / Linux UTF-8 console if (isUsingMono || WindowsVersion.WinMajorVersion >= 10) { Console.OutputEncoding = Console.InputEncoding = Encoding.UTF8; } //Process ini configuration file if (args.Length >= 1 && System.IO.File.Exists(args[0]) && System.IO.Path.GetExtension(args[0]).ToLower() == ".ini") { Settings.LoadSettings(args[0]); //remove ini configuration file from arguments array List <string> args_tmp = args.ToList <string>(); args_tmp.RemoveAt(0); args = args_tmp.ToArray(); } else if (System.IO.File.Exists("MinecraftClient.ini")) { Settings.LoadSettings("MinecraftClient.ini"); } else { Settings.WriteDefaultSettings("MinecraftClient.ini"); } Settings.Login = "******"; Settings.Password = "******"; //Other command-line arguments if (args.Length >= 1) { string server = args[0].ToLower(); switch (server) { case "asgard": Settings.SetServerIP("Asgard.craftlandia.com.br"); connectedServer = "Asgard"; break; case "destiny": Settings.SetServerIP("destiny.craftlandia.com.br"); connectedServer = "Destiny"; break; case "propano": Settings.SetServerIP("propano.craftlandia.com.br"); connectedServer = "Propano"; break; default: Settings.SetServerIP("legacy.craftlandia.com.br"); connectedServer = "Asgard"; break; } //Single command? //if (args.Length >= 3) //{ // Settings.SingleCommand = args[2]; //} } else { Settings.SetServerIP("legacy.craftlandia.com.br"); connectedServer = "Legacy"; } if (Settings.ConsoleTitle != "") { Settings.Username = "******"; Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } //Load cached sessions from disk if necessary if (Settings.SessionCaching == CacheType.Disk) { bool cacheLoaded = SessionCache.InitializeDiskCache(); if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted(cacheLoaded ? "§8Os dados da sessão foram carregados do disco." : "§8Não foram encontradas sessões armazenadas no disco."); } } //Asking the user to type in missing data such as Username and Password if (Settings.Login == "") { Console.Write(ConsoleIO.BasicIO ? "Insira seu nick/email do minecraft \n" : "Login : "******"" && (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(Settings.Login.ToLower()))) { //RequestPassword(); } startupargs = args; InitializeClient(); }
/// <summary> /// Start a new Client /// </summary> private static void InitializeClient() { vars.logInTimestamp = Telegram.data.getTimestamp() + 60; SessionToken session = new SessionToken(); ProtocolHandler.LoginResult result = ProtocolHandler.LoginResult.LoginRequired; if (Settings.Password == "-") { //ConsoleIO.WriteLineFormatted("§8Iniciando no modo OffLine."); result = ProtocolHandler.LoginResult.Success; session.PlayerID = "0"; session.PlayerName = Settings.Login; } else { // Validate cached session or login new session. if (Settings.SessionCaching != CacheType.None && SessionCache.Contains(Settings.Login.ToLower())) { session = SessionCache.Get(Settings.Login.ToLower()); result = ProtocolHandler.GetTokenValidation(session); if (result != ProtocolHandler.LoginResult.Success) { ConsoleIO.WriteLineFormatted("§8Cached session is invalid or expired."); if (Settings.Password == "") { RequestPassword(); } } else { ConsoleIO.WriteLineFormatted("§8Cached session is still valid for " + session.PlayerName + '.'); } } if (result != ProtocolHandler.LoginResult.Success) { Console.WriteLine("Connecting to Minecraft.net..."); result = ProtocolHandler.GetLogin(Settings.Login, Settings.Password, out session); if (result == ProtocolHandler.LoginResult.Success && Settings.SessionCaching != CacheType.None) { SessionCache.Store(Settings.Login.ToLower(), session); } } } if (result == ProtocolHandler.LoginResult.Success) { Settings.Username = "******"; if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } if (Settings.playerHeadAsIcon) { ConsoleIcon.setPlayerIconAsync(Settings.Username); } if (Settings.DebugMessages) { Console.WriteLine("Success. (session ID: " + session.ID + ')'); } //ProtocolHandler.RealmsListWorlds(Settings.Username, PlayerID, sessionID); //TODO REMOVE if (Settings.ServerIP == "") { Console.Write("Server IP : "); Settings.SetServerIP(Console.ReadLine()); } //Get server version int protocolversion = 0; ForgeInfo forgeInfo = null; //if (Settings.ServerVersion != "" && Settings.ServerVersion.ToLower() != "auto") if (true) { //protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(Settings.ServerVersion); protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion("1.8"); if (protocolversion != 0) { ConsoleIO.WriteLineFormatted("§8Usando a versão " + Settings.ServerVersion + " (protocolo v" + protocolversion + ')'); } else { ConsoleIO.WriteLineFormatted("§8A versão '" + Settings.ServerVersion + "' é desconhecida ou não suportada :/\nDetectando versão compativel automaticamente!"); } if (useMcVersionOnce) { useMcVersionOnce = false; Settings.ServerVersion = ""; } } if (protocolversion == 0) { //Console.WriteLine("Obtendo informações do servidor..."); if (!ProtocolHandler.GetServerInfo(Settings.ServerIP, Settings.ServerPort, ref protocolversion, ref forgeInfo)) { //HandleFailure("Falha ao conectar :/", true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); return; } } if (protocolversion != 0) { try { //Start the main TCP client if (Settings.SingleCommand != "") { Client = new McTcpClient(session.PlayerName, session.PlayerID, session.ID, Settings.ServerIP, Settings.ServerPort, protocolversion, forgeInfo, Settings.SingleCommand); } else { Client = new McTcpClient(session.PlayerName, session.PlayerID, session.ID, protocolversion, forgeInfo, Settings.ServerIP, Settings.ServerPort); } //Update console title if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } } catch (NotSupportedException) { HandleFailure("Não foi possivel conectar-se ao servidor : Versão nao suportada !", true); } } else { HandleFailure("Falha ao determinar a versão do servidor.", true); } } else { string failureMessage = "Minecraft Login failed : "; switch (result) { case ProtocolHandler.LoginResult.AccountMigrated: failureMessage += "Account migrated, use e-mail as username."; break; case ProtocolHandler.LoginResult.ServiceUnavailable: failureMessage += "Login servers are unavailable. Please try again later."; break; case ProtocolHandler.LoginResult.WrongPassword: failureMessage += "Incorrect password, blacklisted IP or too many logins."; break; case ProtocolHandler.LoginResult.InvalidResponse: failureMessage += "Invalid server response."; break; case ProtocolHandler.LoginResult.NotPremium: failureMessage += "User not premium."; break; case ProtocolHandler.LoginResult.OtherError: failureMessage += "Network error."; break; case ProtocolHandler.LoginResult.SSLError: failureMessage += "SSL Error."; break; default: failureMessage += "Unknown Error."; break; } if (result == ProtocolHandler.LoginResult.SSLError && isUsingMono) { ConsoleIO.WriteLineFormatted("§8It appears that you are using Mono to run this program." + '\n' + "The first time, you have to import HTTPS certificates using:" + '\n' + "mozroots --import --ask-remove"); return; } HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected); } }
/// <summary> /// The main entry point of Minecraft Console Client /// </summary> static void Main(string[] args) { ConsoleIO.WriteLineFormatted("§cSyrax Client§8 (by Emperio) » §bBETA-0.2"); ConsoleIO.WriteLine(""); ConsoleIO.WriteLineFormatted("§bFetching Updates & News..."); string code = ""; using (WebClient client = new WebClient()) { string htmlCode = client.DownloadString("https://emperio.me/syraxupdates.html"); code = htmlCode; } ConsoleIO.WriteLineFormatted("§dRecent News : "); ConsoleIO.WriteLineFormatted("§5" + code); //Build information to facilitate processing of bug reports if (BuildInfo != null) { ConsoleIO.WriteLineFormatted("§8" + BuildInfo); } //Debug input ? if (args.Length == 1 && args[0] == "--keyboard-debug") { Console.WriteLine("Keyboard debug mode: Press any key to display info"); ConsoleIO.DebugReadInput(); } //Setup ConsoleIO ConsoleIO.LogPrefix = "§8 [»Syrax«] "; if (args.Length >= 1 && args[args.Length - 1] == "BasicIO") { ConsoleIO.BasicIO = true; args = args.Where(o => !Object.ReferenceEquals(o, args[args.Length - 1])).ToArray(); } //Take advantage of Windows 10 / Mac / Linux UTF-8 console if (isUsingMono || WindowsVersion.WinMajorVersion >= 10) { Console.OutputEncoding = Console.InputEncoding = Encoding.UTF8; } //Process ini configuration file if (args.Length >= 1 && System.IO.File.Exists(args[0]) && System.IO.Path.GetExtension(args[0]).ToLower() == ".ini") { Settings.LoadSettings(args[0]); //remove ini configuration file from arguments array List <string> args_tmp = args.ToList <string>(); args_tmp.RemoveAt(0); args = args_tmp.ToArray(); } else if (System.IO.File.Exists("MinecraftClient.ini")) { Settings.LoadSettings("MinecraftClient.ini"); } else { Settings.WriteDefaultSettings("MinecraftClient.ini"); } //Other command-line arguments if (args.Length >= 1) { Settings.Login = args[0]; if (args.Length >= 2) { Settings.Password = args[1]; if (args.Length >= 3) { Settings.SetServerIP(args[2]); //Single command? if (args.Length >= 4) { Settings.SingleCommand = args[3]; } } } } if (Settings.ConsoleTitle != "") { Settings.Username = "******"; Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } //Load cached sessions from disk if necessary if (Settings.SessionCaching == CacheType.Disk) { bool cacheLoaded = SessionCache.InitializeDiskCache(); if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted(cacheLoaded ? "§8Session data loaded" : "§8No sessions could be loaded."); } } //Asking the user to type in missing data such as Username and Password if (Settings.Login == "") { Console.Write(ConsoleIO.BasicIO ? "Enter Minecraft Username or Password\n" : "Login » "); Settings.Login = Console.ReadLine(); } if (Settings.Password == "" && (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(Settings.Login.ToLower()))) { RequestPassword(); } startupargs = args; InitializeClient(); }
/// <summary> /// The main entry point of Minecraft Console Client /// </summary> static void Main(string[] args) { Console.WriteLine("Console Client for MC {0} to {1} - v{2} - By ORelio & Contributors", MCLowestVersion, MCHighestVersion, Version); //BIOS if (args.Length >= 1 && args[args.Length - 1] == "BasicIO") { ConsoleIO.basicIO = true; Console.OutputEncoding = Console.InputEncoding = Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage); args = args.Where(o => !Object.ReferenceEquals(o, args[args.Length - 1])).ToArray(); } //设置ini设置文件 if (args.Length >= 1 && System.IO.File.Exists(args[0]) && System.IO.Path.GetExtension(args[0]).ToLower() == ".ini") { Settings.LoadSettings(args[0]); //remove ini configuration file from arguments array List <string> args_tmp = args.ToList <string>(); args_tmp.RemoveAt(0); args = args_tmp.ToArray(); } else if (System.IO.File.Exists("MinecraftClient.ini")) { Settings.LoadSettings("MinecraftClient.ini"); } else { Settings.WriteDefaultSettings("MinecraftClient.ini"); } //其他命令行参数 if (args.Length >= 1) { Settings.Login = args[0]; if (args.Length >= 2) { Settings.Password = args[1]; if (args.Length >= 3) { Settings.SetServerIP(args[2]); //Single command? if (args.Length >= 4) { Settings.SingleCommand = args[3]; } } } } if (Settings.ConsoleTitle != "") { Settings.Username = "******"; Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } //有必要的话启用本地cache if (Settings.SessionCaching == CacheType.Disk) { bool cacheLoaded = SessionCache.InitializeDiskCache(); if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted(cacheLoaded ? "§8Session cache has been successfully loaded from disk." : "§8Cached sessions could not be loaded from disk"); } } //Asking the user to type in missing data such as Username and Password if (Settings.Login == "") { Console.Write(ConsoleIO.basicIO ? "Please type the username or email of your choice.\n" : "Login : "******"" && (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(Settings.Login.ToLower()))) { RequestPassword(); } startupargs = args; InitializeClient(); }
static void Main(string[] args) { //Only code specific to the Console UI should go in here. For example, the console color settings, etc. Console.WriteLine("Console Client for MC {0} to {1} - v{2} - By ORelio & Contributors", MCLowestVersion, MCHighestVersion, Version); CommandHandler = new CommandHandler(); CommandHandler.addCommand("connect", new Connect()); CommandHandler.addCommand("exit", new Exit()); CommandHandler.addCommand("quit", new Exit()); CommandHandler.addCommand("help", new Help(CommandHandler)); bool keyboardDebug = (args.Length >= 1) && (args[0] == "--keyboard-debug"); PrepareConsole(keyboardDebug); string login = ""; string pass = ""; string usr = ""; if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } if (Settings.SessionCaching == CacheType.Disk) { SessionCache.InitializeDiskCache(); } if ((Settings.SessionCaching == CacheType.None || !SessionCache.Contains(login.ToLower()))) { KeyValuePair <string, string> loginPass = new PromptSingleLoginRetriever().GetUserAndPass(); login = loginPass.Key; usr = login; pass = loginPass.Value; } string rootDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); List <IPlugin> plugins = PluginLoader.LoadPlugins(rootDir + "/plugins"); TickUpdater tickUpdater = new TickUpdater(); ClientPool = new ClientPool(); ClientPool.CreateAndConnectClient(usr, pass); for (int i = 0; i < 8; i++) { //ClientPool.CreateAndConnectClient(usr + i.ToString(), pass); } //ClientPool.createClient().InitializeClient(usr + "1", pass); tickUpdater.addClientPool(ClientPool); tickUpdater.plugins.AddRange(plugins); tickUpdater.start(); commandHandler = new Thread(new ThreadStart(ConsoleInputHandler)); commandHandler.Name = "MCC Command prompt"; commandHandler.Start(); }
/// <summary> /// The main entry point of Minecraft Console Client /// </summary> static void Main(string[] args) { Console.WriteLine("Console Client for MC {0} to {1} - v{2} - By ORelio & Contributors", MCLowestVersion, MCHighestVersion, Version); ConsoleIO.WriteLineFormatted("§dMCC §e汉化 By XIAYM §f& §eWindowX"); //WindowX:劳资的名字捏!!!! //XIAYM:好吧给你改了 //Build information to facilitate processing of bug reports if (BuildInfo != null) { ConsoleIO.WriteLineFormatted("§e" + BuildInfo); } //已被禁用的信息(2020.10.6 17:30 启用) //Debug input ? if (args.Length == 1 && args[0] == "--keyboard-debug") { ConsoleIO.WriteLine("按下任意键显示 Debug 信息..."); ConsoleIO.DebugReadInput(); } //Setup ConsoleIO ConsoleIO.LogPrefix = "§e[信息]§8 "; if (args.Length >= 1 && args[args.Length - 1] == "BasicIO" || args.Length >= 1 && args[args.Length - 1] == "BasicIO-NoColor") { if (args.Length >= 1 && args[args.Length - 1] == "BasicIO-NoColor") { ConsoleIO.BasicIO_NoColor = true; } ConsoleIO.BasicIO = true; args = args.Where(o => !Object.ReferenceEquals(o, args[args.Length - 1])).ToArray(); } //Take advantage of Windows 10 / Mac / Linux UTF-8 console if (isUsingMono || WindowsVersion.WinMajorVersion >= 10) { Console.OutputEncoding = Console.InputEncoding = Encoding.UTF8; } //Process ini configuration file if (args.Length >= 1 && System.IO.File.Exists(args[0]) && System.IO.Path.GetExtension(args[0]).ToLower() == ".ini") { Settings.LoadSettings(args[0]); //remove ini configuration file from arguments array List <string> args_tmp = args.ToList <string>(); args_tmp.RemoveAt(0); args = args_tmp.ToArray(); } else if (System.IO.File.Exists("MinecraftClient.ini")) { Settings.LoadSettings("MinecraftClient.ini"); } else { Settings.WriteDefaultSettings("MinecraftClient.ini"); } //Other command-line arguments if (args.Length >= 1) { Settings.Login = args[0]; if (args.Length >= 2) { Settings.Password = args[1]; if (args.Length >= 3) { Settings.SetServerIP(args[2]); //Single command? if (args.Length >= 4) { Settings.SingleCommand = args[3]; } } } } if (Settings.ConsoleTitle != "") { Settings.Username = "******"; Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } //Test line to troubleshoot invisible colors if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted("§e[调试]§8 颜色测试: 您应该显示为: [0123456789ABCDEF]: [§00§11§22§33§44§55§66§77§88§99§aA§bB§cC§dD§eE§fF§r]"); } //Load cached sessions from disk if necessary if (Settings.SessionCaching == CacheType.Disk) { bool cacheLoaded = SessionCache.InitializeDiskCache(); if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted(cacheLoaded ? "§e[信息]§8 Session 数据已从硬盘加载!" : "§e[信息]§8没有 Session 数据从硬盘加载!"); } } //Asking the user to type in missing data such as Username and Password if (Settings.Login == "") { Console.Write(ConsoleIO.BasicIO ? "请输入用户名或邮箱\n" : "账户 : "); Settings.Login = Console.ReadLine(); } if (Settings.Password == "" && (Settings.SessionCaching == CacheType.None || !SessionCache.Contains(Settings.Login.ToLower()))) { RequestPassword(); } startupargs = args; InitializeClient(); }
/// <summary> /// Start a new Client /// </summary> private static void InitializeClient() { SessionToken session = new SessionToken(); ProtocolHandler.LoginResult result = ProtocolHandler.LoginResult.LoginRequired; if (Settings.Password == "-") { ConsoleIO.WriteLineFormatted("\n§e[信息]§8 你当前使用离线模式"); result = ProtocolHandler.LoginResult.Success; session.PlayerID = "0"; session.PlayerName = Settings.Login; } else { // Validate cached session or login new session. if (Settings.SessionCaching != CacheType.None && SessionCache.Contains(Settings.Login.ToLower())) { session = SessionCache.Get(Settings.Login.ToLower()); result = ProtocolHandler.GetTokenValidation(session); if (result != ProtocolHandler.LoginResult.Success) { ConsoleIO.WriteLineFormatted("§c[错误]§8 Session 错误或过期."); if (Settings.Password == "") { RequestPassword(); } } else { ConsoleIO.WriteLineFormatted("§c[错误]§8 Session 错误 " + session.PlayerName + '.'); } } if (result != ProtocolHandler.LoginResult.Success) { ConsoleIO.WriteLineFormatted("\n§e[信息]§8 正在连接到验证服务器.."); result = ProtocolHandler.GetLogin(Settings.Login, Settings.Password, out session); if (result == ProtocolHandler.LoginResult.Success && Settings.SessionCaching != CacheType.None) { SessionCache.Store(Settings.Login.ToLower(), session); } } } if (result == ProtocolHandler.LoginResult.Success) { Settings.Username = session.PlayerName; if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } if (Settings.playerHeadAsIcon) { ConsoleIcon.setPlayerIconAsync(Settings.Username); } if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted("§e[信息]§8 成功! (获取的 session ID: " + session.ID + ')'); } //ProtocolHandler.RealmsListWorlds(Settings.Username, PlayerID, sessionID); //TODO REMOVE if (Settings.ServerIP == "") { Console.Write("服务器 IP : "); Settings.SetServerIP(Console.ReadLine()); } //Get server version int protocolversion = 0; ForgeInfo forgeInfo = null; if (Settings.ServerVersion != "" && Settings.ServerVersion.ToLower() != "auto") { protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(Settings.ServerVersion); if (protocolversion != 0) { ConsoleIO.WriteLineFormatted("§e[信息]§8 使用MC版本: " + Settings.ServerVersion + " (protocol v" + protocolversion + ')'); } else { ConsoleIO.WriteLineFormatted("§c[错误]§8 未知或不支持的mc版本 '" + Settings.ServerVersion + "'.\n正在自动选择版本."); } if (useMcVersionOnce) { useMcVersionOnce = false; Settings.ServerVersion = ""; } } //Retrieve server info if version is not manually set OR if need to retrieve Forge information if (protocolversion == 0 || Settings.ServerAutodetectForge || (Settings.ServerForceForge && !ProtocolHandler.ProtocolMayForceForge(protocolversion))) { if (protocolversion != 0) { ConsoleIO.WriteLineFormatted("§e[信息]§8 正在检查服务器是否存在 Forge.."); } else { ConsoleIO.WriteLineFormatted("§e[信息]§8 正在检查版本...."); } if (!ProtocolHandler.GetServerInfo(Settings.ServerIP, Settings.ServerPort, ref protocolversion, ref forgeInfo)) { HandleFailure("无法找到这个服务器!", true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); return; } } //Force-enable Forge support? if (Settings.ServerForceForge && forgeInfo == null) { if (ProtocolHandler.ProtocolMayForceForge(protocolversion)) { Translations.WriteLine("mcc.forgeforce"); forgeInfo = ProtocolHandler.ProtocolForceForge(protocolversion); } else { HandleFailure(Translations.Get("error.forgeforce"), true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); return; } } //Proceed to server login if (protocolversion != 0) { try { //Start the main TCP client if (Settings.SingleCommand != "") { client = new McClient(session.PlayerName, session.PlayerID, session.ID, Settings.ServerIP, Settings.ServerPort, protocolversion, forgeInfo, Settings.SingleCommand); } else { client = new McClient(session.PlayerName, session.PlayerID, session.ID, protocolversion, forgeInfo, Settings.ServerIP, Settings.ServerPort); } //Update console title if (Settings.ConsoleTitle != "") { Console.Title = Settings.ExpandVars(Settings.ConsoleTitle); } } catch (NotSupportedException) { HandleFailure("无法连接到服务器 : 不支持的版本!", true); } } else { HandleFailure("无法获取服务器版本", true); } } else { string failureMessage = "Minecraft 登录失败 : "; switch (result) { case ProtocolHandler.LoginResult.AccountMigrated: failureMessage += "未知邮箱"; break; //什么玩意我怎么触发不了 case ProtocolHandler.LoginResult.ServiceUnavailable: failureMessage += "验证服务器目前离线"; break; //"认证服务器处于宕机状态中。请稍后再试,抱歉!" case ProtocolHandler.LoginResult.WrongPassword: failureMessage += "密码错误或短时间登陆太多次被禁止登录"; break; //老无法判定了 case ProtocolHandler.LoginResult.InvalidResponse: failureMessage += "无法读取返回信息"; break; //分析错误(YES) case ProtocolHandler.LoginResult.NotPremium: failureMessage += "非正版玩家"; break; case ProtocolHandler.LoginResult.OtherError: failureMessage += "网络错误"; break; case ProtocolHandler.LoginResult.SSLError: failureMessage += "SSL证书错误"; break; //完蛋Mojang服务器要没了 default: failureMessage += "未知错误"; break; } if (result == ProtocolHandler.LoginResult.SSLError && isUsingMono) { ConsoleIO.WriteLineFormatted("§8看起来你正在使用 Mono 来运行这个程序。" + '\n' + "第一次,您必须导入 HTTPS 证书使用:" + '\n' + "mozroots --import --ask-remove"); return; } HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected); } }