public void EmulateClient() { try { int threads; int iothreads; ThreadPool.GetAvailableThreads(out threads, out iothreads); Console.WriteLine($"Client {Name} connecting..."); var client = new MiNetClient(EndPoint, Name, _threadPool); client.ChunkRadius = ChunkRadius; client.IsEmulator = true; client.ClientId = ClientId; client.StartClient(); Console.WriteLine("Client started."); client.HaveServer = true; client.SendOpenConnectionRequest1(); //client.FirstPacketWaitHandle.WaitOne(); //client.FirstEncryptedPacketWaitHandle.WaitOne(); client.PlayerStatusChangedWaitHandle.WaitOne(); Emulator.ConcurrentSpawnWaitHandle.Set(); Console.CursorLeft = Console.CursorLeft = Console.BufferWidth - $"Client {Name} connected, emulating...".Length; if (client.UdpClient != null) { Console.WriteLine($"Client {Name} connected, emulating..."); } Stopwatch watch = new Stopwatch(); watch.Start(); //Thread.Sleep(3000); //client.SendChat(".tp test"); //client.SendChat("/join bb"); //client.SendChat("/join skywars"); //Thread.Sleep(TimeToRun); //if (client.CurrentLocation != null) //{ // client.CurrentLocation = new PlayerLocation(client.CurrentLocation.X, -10, client.CurrentLocation.Z); // client.SendMcpeMovePlayer(); // Thread.Sleep(3000); //} //client.SendChat("/hub"); //Thread.Sleep(3000); for (int i = 0; /*i < 10 && */ Emulator.Running && watch.Elapsed < TimeToRun; i++) { if (client.UdpClient == null) { break; } float y = client.Level.SpawnX + Random.Next(7, 10) + /*24*/ 75; float length = Random.Next(5, 20); double angle = 0.0; const double angleStepsize = 0.05; float heightStepsize = (float)(Random.NextDouble() / 5); while (angle < 2 * Math.PI && Emulator.Running) { if (client.UdpClient == null) { break; } float x = (float)(length * Math.Cos(angle)); float z = (float)(length * Math.Sin(angle)); y += heightStepsize; x += client.Level.SpawnX; z += client.Level.SpawnZ; client.CurrentLocation = new PlayerLocation(x, y, z); client.SendMcpeMovePlayer(); int timeout; if (RanMax == RanMax) { timeout = RanMin; } else { timeout = Random.Next(RanMin, RanMax); } if (timeout > 0) { Thread.Sleep(timeout); } angle += angleStepsize; } } if (client.UdpClient != null) { client.SendChat("Shadow gov agent BREXITING!"); client.SendDisconnectionNotification(); } client.StopClient(); Console.WriteLine($"{watch.ElapsedMilliseconds} Client stopped. {client.UdpClient == null}, {Emulator.Running}"); } catch (Exception e) { Console.WriteLine(e); } }
public void EmulateClient() { try { Console.WriteLine($"Client {Name} connecting..."); var client = new MiNetClient(EndPoint, Name, _threadPool); client.ChunkRadius = ChunkRadius; client.IsEmulator = true; client.ClientId = ClientId; client.StartClient(); client.Connection.ConnectionInfo.DisableAck = true; Console.WriteLine("Client started."); client.SendOpenConnectionRequest1(); //client.FirstPacketWaitHandle.WaitOne(); //client.FirstEncryptedPacketWaitHandle.WaitOne(); client.PlayerStatusChangedWaitHandle.WaitOne(); client.Connection.ConnectionInfo.IsEmulator = true; Emulator.ConcurrentSpawnWaitHandle.Set(); Console.CursorLeft = Console.CursorLeft = Console.BufferWidth - $"Client {Name} connected, emulating...".Length; Console.WriteLine($"Client {Name} connected, emulating..."); var runningTime = Stopwatch.StartNew(); //Thread.Sleep(3000); //client.SendChat(".tp test"); //client.SendChat("/join bb"); //client.SendChat("/join skywars"); //Thread.Sleep(TimeToRun); //if (client.CurrentLocation != null) //{ // client.CurrentLocation = new PlayerLocation(client.CurrentLocation.X, -10, client.CurrentLocation.Z); // client.SendMcpeMovePlayer(); // Thread.Sleep(3000); //} //client.SendChat("/hub"); //Thread.Sleep(3000); for (int i = 0; /*i < 10 && */ Emulator.Running && runningTime.Elapsed < TimeToRun; i++) { if (!client.IsConnected) { break; } float y = client.LevelInfo.SpawnX + Random.Next(7, 10); float length = Random.Next(5, 20); double angle = 0.0; const double angleStepsize = 0.05; float heightStepSize = (float)(Random.NextDouble() / 5); while (angle < 2 * Math.PI && Emulator.Running) { if (!client.IsConnected) { break; } float x = (float)(length * Math.Cos(angle)); float z = (float)(length * Math.Sin(angle)); y += heightStepSize; x += client.LevelInfo.SpawnX; z += client.LevelInfo.SpawnZ; client.CurrentLocation = new PlayerLocation(x, y, z, (float)angle.ToDegrees(), (float)angle.ToDegrees()); //client.SendMcpeMovePlayer(); client.SendCurrentPlayerPositionAsync().Wait(); int timeout = RanMin == RanMax ? RanMin : Random.Next(RanMin, RanMax); if (timeout > 0) { Thread.Sleep(timeout); } angle += angleStepsize; } } if (client.IsConnected) { client.SendChat("Shadow gov agent BREXITING!"); client.SendDisconnectionNotification(); } client.StopClient(); Console.WriteLine($"{runningTime.ElapsedMilliseconds} Client stopped. {client.IsConnected}, {Emulator.Running}"); } catch (Exception e) { Console.WriteLine(e); } }