public override GameStartData GetConnectInfo( string hash ) { string uri = playUri + hash; var response = GetHtml( uri, minecraftNetUri ); GameStartData data = new GameStartData(); data.Username = Username; foreach( string line in response ) { int index = 0; // Look for <param name="x" value="x"> tags if( ( index = line.IndexOf( "<param", ordinal ) ) > 0 ) { int nameStart = index + 13; int nameEnd = line.IndexOf( '"', nameStart ); string paramName = line.Substring( nameStart, nameEnd - nameStart ); // Don't read param value by default so we avoid allocating unnecessary 'value' strings. if( paramName == "server" ) { data.Ip = GetParamValue( line, nameEnd ); } else if( paramName == "port" ) { data.Port = GetParamValue( line, nameEnd ); } else if( paramName == "mppass" ) { data.Mppass = GetParamValue( line, nameEnd ); } } } return data; }
internal static void UpdateResumeInfo( GameStartData data, bool classiCubeSkins ) { Options.Set( "launcher-username", data.Username ); Options.Set( "launcher-ip", data.Ip ); Options.Set( "launcher-port", data.Port ); Options.Set( "launcher-mppass", EncodeMppass( data.Mppass, data.Username ) ); Options.Set( "launcher-ccskins", classiCubeSkins.ToString() ); try { Options.Save(); } catch( IOException ) { } }
internal static void UpdateResumeInfo( GameStartData data, bool classiCubeSkins ) { // If the client has changed some settings in the meantime, make sure we keep the changes if( !Options.Load() ) return; Options.Set( "launcher-username", data.Username ); Options.Set( "launcher-ip", data.Ip ); Options.Set( "launcher-port", data.Port ); Options.Set( "launcher-mppass", Secure.Encode( data.Mppass, data.Username ) ); Options.Set( "launcher-ccskins", classiCubeSkins ); Options.Save(); }
internal static void StartClient( GameStartData data, bool classicubeSkins ) { string skinServer = classicubeSkins ? "http://www.classicube.net/static/skins/" : "http://s3.amazonaws.com/MinecraftSkins/"; string args = data.Username + " " + data.Mppass + " " + data.Ip + " " + data.Port + " " + skinServer; System.Diagnostics.Debug.WriteLine( "starting..." + args ); Process process = null; UpdateResumeInfo( data, classicubeSkins ); if( !File.Exists( "ClassicalSharp.exe" ) ) { MessageBox.Show( missingExeMessage ); return; } if( Type.GetType( "Mono.Runtime" ) != null ) { process = Process.Start( "mono", "\"ClassicalSharp.exe\" " + args ); } else { process = Process.Start( "ClassicalSharp.exe", args ); } }
internal static void StartClient( GameStartData data, bool classicubeSkins ) { string skinServer = classicubeSkins ? "http://www.classicube.net/static/skins/" : "http://s3.amazonaws.com/MinecraftSkins/"; string args = data.Username + " " + data.Mppass + " " + data.Ip + " " + data.Port + " " + skinServer; System.Diagnostics.Debug.WriteLine( "starting..." + args ); Process process = null; try { if( Type.GetType( "Mono.Runtime" ) != null ) { process = Process.Start( "mono", "\"ClassicalSharp.exe\" " + args ); } else { process = Process.Start( "ClassicalSharp.exe", args ); } } catch( Win32Exception ex ) { if( ex.Message.Contains( "The system cannot find the file specified" ) ) { MessageBox.Show( missingExeMessage ); } else { throw; } } }
void BtnDCconnectClick( object sender, EventArgs e ) { IPAddress address; if( !IPAddress.TryParse( txtDCip.Text, out address ) ) { MessageBox.Show( "Invalid IP address specified." ); return; } ushort port; if( !UInt16.TryParse( txtDCport.Text, out port ) ) { MessageBox.Show( "Invalid port specified." ); return; } if( String.IsNullOrEmpty( txtDCuser.Text ) ) { MessageBox.Show( "Please enter a username." ); return; } string mppass = txtDCmppass.Text; if( String.IsNullOrEmpty( mppass ) ) mppass = "******"; GameStartData data = new GameStartData( txtDCuser.Text, mppass, txtDCip.Text, txtDCport.Text ); StartClient( data, cbDCccskins.Checked ); }
void dcConnectBtnClick(object sender, System.EventArgs e) { IPAddress address; if (!IPAddress.TryParse(dcIP.Text, out address)) { MessageBox.Show("Invalid IP address specified."); return; } ushort port; if (!UInt16.TryParse(dcPort.Text, out port)) { MessageBox.Show("Invalid port specified."); return; } if (String.IsNullOrEmpty(dcUsername.Text)) { MessageBox.Show("Please enter a username."); return; } if (String.IsNullOrEmpty(dcMppass.Text)) { MessageBox.Show("Please enter a Mppass."); return; } GameStartData data = new GameStartData(dcUsername.Text, dcMppass.Text, dcIP.Text, dcPort.Text); StartClient(data, dcUseCCSkins.Checked); }
void BtnLanConnectClick( object sender, System.EventArgs e ) { IPAddress address; if( !IPAddress.TryParse( txtLanIP.Text, out address ) ) { MessageBox.Show( "Invalid IP address specified." ); return; } if( !IsPrivateIP( address ) ) { MessageBox.Show( "Given IP address is not a local LAN address." ); return; } ushort port; if( !UInt16.TryParse( txtLanPort.Text, out port ) ) { MessageBox.Show( "Invalid port specified." ); return; } if( String.IsNullOrEmpty( txtLanUser.Text ) ) { MessageBox.Show( "Please enter a username." ); return; } GameStartData data = new GameStartData( txtLanUser.Text, "lan", txtLanIP.Text, txtLanPort.Text ); StartClient( data, cbLocalSkinServerCC.Checked ); }