Catch IndexOutOfRangeException for IsChatMessage

This commit is contained in:
ORelio 2015-10-26 23:19:06 +01:00
parent 29a9fe810a
commit e5364566c3

View file

@ -307,7 +307,7 @@ namespace MinecraftClient
if (sender[0] == '~') { sender = sender.Substring(1); } if (sender[0] == '~') { sender = sender.Substring(1); }
return IsValidName(sender); return IsValidName(sender);
} }
catch (IndexOutOfRangeException) { return false; } catch (IndexOutOfRangeException) { /* Not a vanilla/faction message */ }
} }
//Detect HeroChat Messages //Detect HeroChat Messages
@ -315,11 +315,15 @@ namespace MinecraftClient
//[Channel] [Rank] User: Message //[Channel] [Rank] User: Message
else if (text[0] == '[' && text.Contains(':') && tmp.Length > 2) else if (text[0] == '[' && text.Contains(':') && tmp.Length > 2)
{ {
int name_end = text.IndexOf(':'); try
int name_start = text.Substring(0, name_end).LastIndexOf(']') + 2; {
sender = text.Substring(name_start, name_end - name_start); int name_end = text.IndexOf(':');
message = text.Substring(name_end + 2); int name_start = text.Substring(0, name_end).LastIndexOf(']') + 2;
return IsValidName(sender); sender = text.Substring(name_start, name_end - name_start);
message = text.Substring(name_end + 2);
return IsValidName(sender);
}
catch (IndexOutOfRangeException) { /* Not a herochat message */ }
} }
//Detect (Unknown Plugin) Messages //Detect (Unknown Plugin) Messages
@ -334,15 +338,19 @@ namespace MinecraftClient
&& text.IndexOf('>') < text.IndexOf(' ') && text.IndexOf('>') < text.IndexOf(' ')
&& text.IndexOf(' ') < text.IndexOf(':')) && text.IndexOf(' ') < text.IndexOf(':'))
{ {
string prefix = tmp[0]; try
string user = tmp[1];
string semicolon = tmp[2];
if (prefix.All(c => char.IsLetterOrDigit(c) || new char[] { '*', '<', '>', '_' }.Contains(c))
&& semicolon == ":")
{ {
message = text.Substring(prefix.Length + user.Length + 4); string prefix = tmp[0];
return IsValidName(user); string user = tmp[1];
string semicolon = tmp[2];
if (prefix.All(c => char.IsLetterOrDigit(c) || new char[] { '*', '<', '>', '_' }.Contains(c))
&& semicolon == ":")
{
message = text.Substring(prefix.Length + user.Length + 4);
return IsValidName(user);
}
} }
catch (IndexOutOfRangeException) { /* Not a <unknown plugin> message */ }
} }
} }