diff --git a/MinecraftClient/ConsoleIO.cs b/MinecraftClient/ConsoleIO.cs index 34bb7a35..07c67719 100644 --- a/MinecraftClient/ConsoleIO.cs +++ b/MinecraftClient/ConsoleIO.cs @@ -45,22 +45,18 @@ namespace MinecraftClient public static string ReadPassword() { - string password = ""; - ConsoleKeyInfo k = new ConsoleKeyInfo(); - while (k.Key != ConsoleKey.Enter) + StringBuilder password = new StringBuilder(); + + ConsoleKeyInfo k; + while ((k = Console.ReadKey(true)).Key != ConsoleKey.Enter) { - k = Console.ReadKey(true); switch (k.Key) { - case ConsoleKey.Enter: - Console.Write('\n'); - return password; - case ConsoleKey.Backspace: if (password.Length > 0) { Console.Write("\b \b"); - password = password.Substring(0, password.Length - 1); + password.Remove(password.Length - 1, 1); } break; @@ -79,12 +75,14 @@ namespace MinecraftClient if (k.KeyChar != 0) { Console.Write('*'); - password += k.KeyChar; + password.Append(k.KeyChar); } break; } } - return password; + + Console.WriteLine(); + return password.ToString(); } /// diff --git a/MinecraftClient/Protocol/ProtocolHandler.cs b/MinecraftClient/Protocol/ProtocolHandler.cs index 11a0873f..624d6a7f 100644 --- a/MinecraftClient/Protocol/ProtocolHandler.cs +++ b/MinecraftClient/Protocol/ProtocolHandler.cs @@ -285,16 +285,18 @@ namespace MinecraftClient.Protocol StringBuilder result = new StringBuilder(); foreach (char c in text) { - if (char.IsLetterOrDigit(c)) + if ((c >= '0' && c <= '9') || + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z')) { result.Append(c); } else { - result.Append("\\u"); - result.Append(((int)c).ToString("x4")); + result.AppendFormat(@"\u{0:x4}", (int)c); } } + return result.ToString(); } }