public static void EncryptionKeyRequest(MinecraftClient client, IPacket _packet) { var packet = (EncryptionKeyRequestPacket)_packet; var random = RandomNumberGenerator.Create(); client.SharedSecret = new byte[16]; random.GetBytes(client.SharedSecret); // Generate a secure AES key if (packet.ServerId != "-") // Online mode { // Authenticate with minecraft.net var data = Encoding.ASCII.GetBytes(packet.ServerId) .Concat(client.SharedSecret) .Concat(packet.PublicKey).ToArray(); var hash = Cryptography.JavaHexDigest(data); var webClient = new WebClient(); string result = webClient.DownloadString("http://session.minecraft.net/game/joinserver.jsp?user="******"&sessionId=" + Uri.EscapeUriString(client.Session.SessionId) + "&serverId=" + Uri.EscapeUriString(hash)); if (result != "OK") LogProvider.Log("Unable to verify session: " + result); } var parser = new AsnKeyParser(packet.PublicKey); var key = parser.ParseRSAPublicKey(); // Encrypt shared secret and verification token var crypto = new RSACryptoServiceProvider(); crypto.ImportParameters(key); var encryptedSharedSecret = crypto.Encrypt(client.SharedSecret, false); var encryptedVerification = crypto.Encrypt(packet.VerificationToken, false); var response = new EncryptionKeyResponsePacket(encryptedSharedSecret, encryptedVerification); client.SendPacket(response); }
public static void Handshake(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (HandshakePacket)_packet; if (packet.ProtocolVersion < PacketReader.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated client!")); return; } if (packet.ProtocolVersion > PacketReader.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated server!")); return; } if (server.Clients.Any(c => c.Username == packet.Username)) { client.SendPacket(new DisconnectPacket("")); return; } client.Username = packet.Username; client.Hostname = packet.ServerHostname + ":" + packet.ServerPort; if (server.Settings.OnlineMode) client.AuthenticationHash = CreateHash(); else client.AuthenticationHash = "-"; if (server.Settings.EnableEncryption) client.SendPacket(CreateEncryptionRequest(client, server)); else server.LogInPlayer(client); }
public override void HandlePacket(MinecraftServer server, MinecraftClient client) { switch (ClientStatus) { case ClientStatus.InitialSpawn: // Create a hash for session verification SHA1 sha1 = SHA1.Create(); AsnKeyBuilder.AsnMessage encodedKey = AsnKeyBuilder.PublicKeyToX509(server.ServerKey); byte[] shaData = Encoding.UTF8.GetBytes(client.AuthenticationHash) .Concat(client.SharedKey) .Concat(encodedKey.GetBytes()).ToArray(); string hash = Cryptography.JavaHexDigest(shaData); // Talk to session.minecraft.net if (server.Settings.OnlineMode) { var webClient = new WebClient(); var webReader = new StreamReader(webClient.OpenRead( new Uri(string.Format(sessionCheckUri, client.Username, hash)))); string response = webReader.ReadToEnd(); webReader.Close(); if (response != "YES") { client.SendPacket(new DisconnectPacket("Failed to verify username!")); return; } } server.LogInPlayer(client); break; case ClientStatus.Respawn: var world = client.World; client.Entity.Position = new Vector3( client.Entity.SpawnPoint.X, client.Entity.SpawnPoint.Y + PlayerEntity.Height, client.Entity.SpawnPoint.Z); client.Entity.Health = client.Entity.MaxHealth; client.Entity.Food = 20; client.Entity.FoodSaturation = 20; server.EntityManager.SpawnEntity(world, client.Entity); client.SendPacket(new UpdateHealthPacket(client.Entity.Health, client.Entity.Food, client.Entity.FoodSaturation)); client.SendPacket(new RespawnPacket(Dimension.Overworld, server.Settings.Difficulty, client.Entity.GameMode, world.LevelType)); client.SendPacket(new PlayerPositionAndLookPacket( client.Entity.Position, client.Entity.Yaw, client.Entity.Pitch, true)); server.ProcessSendQueue(); break; default: throw new InvalidOperationException(); } }
public static void ClientStatus(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (ClientStatusPacket)_packet; if (packet.Status == ClientStatusPacket.ClientStatus.InitialSpawn) { // Create a hash for session verification SHA1 sha1 = SHA1.Create(); AsnKeyBuilder.AsnMessage encodedKey = AsnKeyBuilder.PublicKeyToX509(server.ServerKey); byte[] shaData = Encoding.UTF8.GetBytes(client.AuthenticationHash) .Concat(client.SharedKey) .Concat(encodedKey.GetBytes()).ToArray(); string hash = Cryptography.JavaHexDigest(shaData); // Talk to session.minecraft.net if (server.Settings.OnlineMode) { var webClient = new WebClient(); var webReader = new StreamReader(webClient.OpenRead( new Uri(string.Format(sessionCheckUri, client.Username, hash)))); string response = webReader.ReadToEnd(); webReader.Close(); if (response != "YES") { client.SendPacket(new DisconnectPacket("Failed to verify username!")); return; } } server.LogInPlayer(client); } else if (packet.Status == ClientStatusPacket.ClientStatus.Respawn) { var world = client.World; client.Entity.Position = new Vector3( client.Entity.SpawnPoint.X, // FIXME: This seems to drop the player camera from half the height of a login spawn client.Entity.SpawnPoint.Y, client.Entity.SpawnPoint.Z); client.Entity.Health = client.Entity.MaxHealth; client.Entity.Food = 20; client.Entity.FoodSaturation = 20; server.EntityManager.SpawnEntity(world, client.Entity); client.SendPacket(new UpdateHealthPacket(client.Entity.Health, client.Entity.Food, client.Entity.FoodSaturation)); client.SendPacket(new RespawnPacket(Dimension.Overworld, server.Settings.Difficulty, client.Entity.GameMode, World.Height, world.LevelType)); client.SendPacket(new PlayerPositionAndLookPacket(client.Entity.Position.X, client.Entity.Position.Y, client.Entity.Position.Z, client.Entity.Position.Y + PlayerEntity.Height, client.Entity.Yaw, client.Entity.Pitch, true)); } }
public static void EncryptionKeyResponse(MinecraftClient client, IPacket _packet) { // Enable encryption client.Stream = new MinecraftStream(new AesStream(new BufferedStream(client.NetworkStream), client.SharedSecret)); client.SendPacket(new ClientStatusPacket(ClientStatusPacket.ClientStatus.InitialSpawn)); LogProvider.Log("Logged in."); }
public static void EncryptionKeyResponse(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (EncryptionKeyResponsePacket)_packet; client.SharedKey = server.CryptoServiceProvider.Decrypt(packet.SharedSecret, false); client.SendPacket(new EncryptionKeyResponsePacket(new byte[0], new byte[0])); }
public static void ClientStatus(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (ClientStatusPacket)_packet; if (packet.Status == ClientStatusPacket.ClientStatus.InitialSpawn) { // Create a hash for session verification SHA1 sha1 = SHA1.Create(); AsnKeyBuilder.AsnMessage encodedKey = AsnKeyBuilder.PublicKeyToX509(server.ServerKey); byte[] shaData = Encoding.UTF8.GetBytes(client.AuthenticationHash) .Concat(client.SharedKey) .Concat(encodedKey.GetBytes()).ToArray(); string hash = Cryptography.JavaHexDigest(shaData); // Talk to session.minecraft.net if (server.Settings.OnlineMode) { var webClient = new WebClient(); var webReader = new StreamReader(webClient.OpenRead( new Uri(string.Format(sessionCheckUri, client.Username, hash)))); string response = webReader.ReadToEnd(); webReader.Close(); if (response != "YES") { client.SendPacket(new DisconnectPacket("Failed to verify username!")); return; } } server.LogInPlayer(client); } else if (packet.Status == ClientStatusPacket.ClientStatus.Respawn) { // TODO } }
public override void HandlePacket(MinecraftServer Server, ref MinecraftClient Client) { Client.SharedKey = Server.CryptoServiceProvider.Decrypt(SharedSecret, false); Client.Encrypter = Cryptography.GenerateAES(Client.SharedKey).CreateEncryptor(); Client.Decrypter = Cryptography.GenerateAES(Client.SharedKey).CreateDecryptor(); Client.SendPacket(new EncryptionKeyResponsePacket()); Server.ProcessSendQueue(); }
public static void PlayerPositionAndLook(MinecraftClient client, IPacket _packet) { var packet = (PlayerPositionAndLookPacket)_packet; client._position = new Vector3(packet.X, packet.Stance, packet.Z); if (!client.IsSpawned) { client.IsSpawned = true; client.OnInitialSpawn(new EntitySpawnEventArgs(client.Position, client.EntityId)); } client.SendPacket(new PlayerPositionPacket(packet.X, packet.Stance, packet.Z, packet.Y, true)); }
public static void TabComplete(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (TabCompletePacket)_packet; var eventArgs = new TabCompleteEventArgs(packet.Text, client); server.OnTabComplete(eventArgs); if (eventArgs.Handled) { packet.Text = eventArgs.Text; client.SendPacket(packet); } }
public override void HandlePacket(MinecraftServer server, MinecraftClient client) { if (ProtocolVersion < MinecraftServer.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated client!")); server.ProcessSendQueue(); return; } if (ProtocolVersion > MinecraftServer.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated server!")); server.ProcessSendQueue(); return; } if (server.Clients.Count(c => c.Username == Username) != 0) { client.SendPacket(new DisconnectPacket("You are already logged in!")); server.ProcessSendQueue(); return; } client.Username = Username; client.Hostname = Hostname + ":" + Port.ToString(); // Respond with encryption request if (server.OnlineMode) client.AuthenticationHash = CreateHash(); else client.AuthenticationHash = "-"; if (server.EncryptionEnabled) { var keyRequest = new EncryptionKeyRequestPacket(client.AuthenticationHash, server.ServerKey); client.SendPacket(keyRequest); server.ProcessSendQueue(); } else server.LogInPlayer(client); client.StartWorkers(); }
public static void PlayerPositionAndLook(MinecraftClient client, IPacket _packet) { var packet = (PlayerPositionAndLookPacket)_packet; client._position = new Vector3(packet.X, packet.Stance, packet.Z); if (!client.IsSpawned) { client.IsSpawned = true; client.OnInitialSpawn(new EntitySpawnEventArgs(client.Position, client.EntityId)); } client.SendPacket(new PlayerPositionPacket(packet.X, packet.Stance, packet.Z, packet.Y, true)); }
public static void PlayerPositionAndLook(MinecraftClient client, IPacket _packet) { var packet = (PlayerPositionAndLookPacket)_packet; if (Math.Abs(packet.X) < 0.01 && Math.Abs(packet.X) > 0) return; // Sometimes the vanilla server sends weird position updates like this client._position = new Vector3(packet.X, packet.Y, packet.Z); if (!client.IsSpawned) { client.IsSpawned = true; client.OnInitialSpawn(new EntitySpawnEventArgs(client.Position, client.EntityId)); } client.SendPacket(new PlayerPositionPacket(client.Position.X, client.Position.Y, client.Position.Z, client.Position.Y - 1.62, true)); }
public static void Handshake(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (HandshakePacket)_packet; if (packet.ProtocolVersion < PacketReader.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated client!")); return; } if (packet.ProtocolVersion > PacketReader.ProtocolVersion) { client.SendPacket(new DisconnectPacket("Outdated server!")); return; } if (server.Clients.Any(c => c.Username == packet.Username)) { client.SendPacket(new DisconnectPacket("")); return; } client.Username = packet.Username; client.Hostname = packet.ServerHostname + ":" + packet.ServerPort; if (server.Settings.OnlineMode) { client.AuthenticationHash = CreateHash(); } else { client.AuthenticationHash = "-"; } if (server.Settings.EnableEncryption) { client.SendPacket(CreateEncryptionRequest(client, server)); } else { server.LogInPlayer(client); } }
public override void HandlePacket(MinecraftServer server, MinecraftClient client) { client.SharedKey = server.CryptoServiceProvider.Decrypt(SharedSecret, false); client.Encrypter = new BufferedBlockCipher(new CfbBlockCipher(new AesFastEngine(), 8)); client.Encrypter.Init(true, new ParametersWithIV(new KeyParameter(client.SharedKey), client.SharedKey, 0, 16)); client.Decrypter = new BufferedBlockCipher(new CfbBlockCipher(new AesFastEngine(), 8)); client.Decrypter.Init(false, new ParametersWithIV(new KeyParameter(client.SharedKey), client.SharedKey, 0, 16)); client.SendPacket(new EncryptionKeyResponsePacket()); server.ProcessSendQueue(); }
public static void ClientStatus(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (ClientStatusPacket)_packet; if (packet.Status == ClientStatusPacket.ClientStatus.InitialSpawn) { // Create a hash for session verification SHA1 sha1 = SHA1.Create(); AsnKeyBuilder.AsnMessage encodedKey = AsnKeyBuilder.PublicKeyToX509(server.ServerKey); byte[] shaData = Encoding.UTF8.GetBytes(client.AuthenticationHash) .Concat(client.SharedKey) .Concat(encodedKey.GetBytes()).ToArray(); string hash = Cryptography.JavaHexDigest(shaData); // Talk to session.minecraft.net if (server.Settings.OnlineMode) { var webClient = new WebClient(); var webReader = new StreamReader(webClient.OpenRead( new Uri(string.Format(sessionCheckUri, client.Username, hash)))); string response = webReader.ReadToEnd(); webReader.Close(); if (response != "YES") { client.SendPacket(new DisconnectPacket("Failed to verify username!")); return; } } server.LogInPlayer(client); } else if (packet.Status == ClientStatusPacket.ClientStatus.Respawn) { var world = client.World; client.Entity.Position = new Vector3( client.Entity.SpawnPoint.X, // FIXME: This seems to drop the player camera from half the height of a login spawn client.Entity.SpawnPoint.Y, client.Entity.SpawnPoint.Z); client.Entity.Health = client.Entity.MaxHealth; client.Entity.Food = 20; client.Entity.FoodSaturation = 20; server.EntityManager.SpawnEntity(world, client.Entity); client.SendPacket(new UpdateHealthPacket(client.Entity.Health, client.Entity.Food, client.Entity.FoodSaturation)); client.SendPacket(new RespawnPacket(Dimension.Overworld, server.Settings.Difficulty, client.Entity.GameMode, World.Height, world.LevelType)); client.SendPacket(new PlayerPositionAndLookPacket(client.Entity.Position.X, client.Entity.Position.Y, client.Entity.Position.Z, client.Entity.Position.Y + PlayerEntity.Height, client.Entity.Yaw, client.Entity.Pitch, true)); } }
public override void HandlePacket(MinecraftServer Server, ref MinecraftClient Client) { if (!Client.ReadyToSpawn) return; Client.Entity.Position = new Vector3(X, Y, Z); if (Client.Entity.Position.DistanceTo(Client.Entity.OldPosition) > Client.MaxMoveDistance) { Client.SendPacket(new DisconnectPacket("Hacking: You moved too fast!")); Server.ProcessSendQueue(); return; } Client.UpdateChunksAsync(); Server.GetClientWorld(Client).EntityManager.UpdateEntity(Client.Entity); Server.ProcessSendQueue(); }
public override void HandlePacket(MinecraftServer server, MinecraftClient client) { if (!client.ReadyToSpawn) return; client.Entity.Position = new Vector3(X, Y, Z); if (client.Entity.Position.DistanceTo(client.Entity.OldPosition) > client.MaxMoveDistance) { client.SendPacket(new DisconnectPacket("Hacking: You moved too fast!")); server.ProcessSendQueue(); return; } client.UpdateChunksAsync(); server.ProcessSendQueue(); server.EntityManager.UpdateEntity(client.Entity); }
public static void PlayerPositionAndLook(MinecraftClient client, IPacket _packet) { var packet = (PlayerPositionAndLookPacket)_packet; if (Math.Abs(packet.X) < 0.01 && Math.Abs(packet.X) > 0) { return; // Sometimes the vanilla server sends weird position updates like this } client.Position = new Vector3(packet.X, packet.Y, packet.Z); if (!client.IsSpawned) { client.IsSpawned = true; client.OnInitialSpawn(new EntitySpawnEventArgs(client.Position, client.EntityId)); } client.SendPacket(new PlayerPositionPacket(client.Position.X, client.Position.Y, client.Position.Z, client.Position.Y - 1.62, true)); }
public static void EncryptionKeyRequest(MinecraftClient client, IPacket _packet) { var packet = (EncryptionKeyRequestPacket)_packet; var random = RandomNumberGenerator.Create(); client.SharedSecret = new byte[16]; random.GetBytes(client.SharedSecret); // Generate a secure AES key if (packet.ServerId != "-") // Online mode { // Authenticate with minecraft.net if (!client.Session.OnlineMode) { throw new AuthenticationException("Server is in online mode, but client is in offline mode."); } var data = Encoding.ASCII.GetBytes(packet.ServerId) .Concat(client.SharedSecret) .Concat(packet.PublicKey).ToArray(); var hash = Cryptography.JavaHexDigest(data); var webClient = new WebClient(); string result = webClient.DownloadString("http://session.minecraft.net/game/joinserver.jsp?user="******"&sessionId=" + Uri.EscapeUriString(client.Session.SessionId) + "&serverId=" + Uri.EscapeUriString(hash)); if (result != "OK") { // TODO } } var parser = new AsnKeyParser(packet.PublicKey); var key = parser.ParseRSAPublicKey(); // Encrypt shared secret and verification token var crypto = new RSACryptoServiceProvider(); crypto.ImportParameters(key); var encryptedSharedSecret = crypto.Encrypt(client.SharedSecret, false); var encryptedVerification = crypto.Encrypt(packet.VerificationToken, false); var response = new EncryptionKeyResponsePacket(encryptedSharedSecret, encryptedVerification); client.SendPacket(response); client.FlushPackets(); client.NetworkManager.BaseStream = new AesStream(client.NetworkStream, client.SharedSecret); }
public override void HandlePacket(MinecraftServer server, MinecraftClient client) { if (client.Entity.Position.DistanceTo(Position) > 6) // TODO: Use client.Reach return; var item = client.Entity.Inventory[client.Entity.SelectedSlot]; if (item != null && item.Id == 0xFFFF) item.Id = 0; if (item != null) { item.Item.OnItemUsed(server.GetClientWorld(client), Position, AdjustByDirection(Direction), CursorPosition, client.Entity); if (client.Entity.GameMode != GameMode.Creative) client.Entity.Inventory[client.Entity.SelectedSlot].Count--; } else { client.SendPacket(new DisconnectPacket("Unrecognized item!")); server.ProcessSendQueue(); } }
public static void RightClick(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (RightClickPacket)_packet; var slot = client.Entity.Inventory[client.Entity.SelectedSlot]; var position = new Vector3(packet.X, packet.Y, packet.Z); var cursorPosition = new Vector3(packet.CursorX, packet.CursorY, packet.CursorZ); Block block = null; if (position != -Vector3.One) { if (position.DistanceTo(client.Entity.Position) > client.Reach) { return; } block = client.World.GetBlock(position); } bool use = true; if (block != null) { use = block.OnBlockRightClicked(position, AdjustByDirection(packet.Direction), cursorPosition, client.World, client.Entity); } var item = slot.AsItem(); if (use && item != null) { if (block != null) { item.OnItemUsedOnBlock(client.World, position, AdjustByDirection(packet.Direction), cursorPosition, client.Entity); if (item is Block) { client.SendPacket(new NamedSoundEffectPacket((item as Block).PlacementSoundEffect, (int)position.X, (int)position.Y, (int)position.Z, 1, 50)); } } else { item.OnItemUsed(client.World, client.Entity); } } }
public static void EncryptionKeyRequest(MinecraftClient client, IPacket _packet) { var packet = (EncryptionKeyRequestPacket)_packet; var random = RandomNumberGenerator.Create(); client.SharedSecret = new byte[16]; random.GetBytes(client.SharedSecret); // Generate a secure AES key if (packet.ServerId != "-") // Online mode { // Authenticate with minecraft.net if (!client.Session.OnlineMode) throw new AuthenticationException("Server is in online mode, but client is in offline mode."); var data = Encoding.ASCII.GetBytes(packet.ServerId) .Concat(client.SharedSecret) .Concat(packet.PublicKey).ToArray(); var hash = Cryptography.JavaHexDigest(data); var webClient = new WebClient(); string result = webClient.DownloadString("http://session.minecraft.net/game/joinserver.jsp?user="******"&sessionId=" + Uri.EscapeUriString(client.Session.SessionId) + "&serverId=" + Uri.EscapeUriString(hash)); if (result != "OK") { // TODO } } var parser = new AsnKeyParser(packet.PublicKey); var key = parser.ParseRSAPublicKey(); // Encrypt shared secret and verification token var crypto = new RSACryptoServiceProvider(); crypto.ImportParameters(key); var encryptedSharedSecret = crypto.Encrypt(client.SharedSecret, false); var encryptedVerification = crypto.Encrypt(packet.VerificationToken, false); var response = new EncryptionKeyResponsePacket(encryptedSharedSecret, encryptedVerification); client.SendPacket(response); client.FlushPackets(); client.NetworkManager.BaseStream = new AesStream(client.NetworkStream, client.SharedSecret); }
public static void EncryptionKeyRequest(MinecraftClient client, IPacket _packet) { var packet = (EncryptionKeyRequestPacket)_packet; var random = RandomNumberGenerator.Create(); client.SharedSecret = new byte[16]; random.GetBytes(client.SharedSecret); // Generate a secure AES key if (packet.ServerId != "-" && client.Session.SessionId != null) // Online mode { // Authenticate with minecraft.net var data = Encoding.ASCII.GetBytes(packet.ServerId) .Concat(client.SharedSecret) .Concat(packet.PublicKey).ToArray(); var hash = Cryptography.JavaHexDigest(data); var webClient = new WebClient(); string result = webClient.DownloadString("http://session.minecraft.net/game/joinserver.jsp?user="******"&sessionId=" + Uri.EscapeUriString(client.Session.SessionId) + "&serverId=" + Uri.EscapeUriString(hash)); if (result != "OK") { LogProvider.Log("Unable to verify session: " + result); } } var parser = new AsnKeyParser(packet.PublicKey); var key = parser.ParseRSAPublicKey(); // Encrypt shared secret and verification token var crypto = new RSACryptoServiceProvider(); crypto.ImportParameters(key); var encryptedSharedSecret = crypto.Encrypt(client.SharedSecret, false); var encryptedVerification = crypto.Encrypt(packet.VerificationToken, false); var response = new EncryptionKeyResponsePacket(encryptedSharedSecret, encryptedVerification); client.SendPacket(response); }
public override void HandlePacket(MinecraftServer Server, ref MinecraftClient Client) { switch (ClientStatus) { case ClientStatus.InitialSpawn: // Create a hash for session verification SHA1 sha1 = SHA1.Create(); AsnKeyBuilder.AsnMessage encodedKey = AsnKeyBuilder.PublicKeyToX509(Server.ServerKey); byte[] shaData = Encoding.UTF8.GetBytes(Client.AuthenticationHash) .Concat(Client.SharedKey) .Concat(encodedKey.GetBytes()).ToArray(); string hash = Cryptography.JavaHexDigest(shaData); // Talk to session.minecraft.net if (Server.OnlineMode) { WebClient webClient = new WebClient(); StreamReader webReader = new StreamReader(webClient.OpenRead( new Uri(string.Format(SessionCheckUri, Client.Username, hash)))); string response = webReader.ReadToEnd(); webReader.Close(); if (response != "YES") { Client.SendPacket(new DisconnectPacket("Failed to verify username!")); return; } } Server.LogInPlayer(Client); break; case ClientStatus.Respawn: // TODO break; default: throw new InvalidOperationException(); } }
public static void EncryptionKeyResponse(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (EncryptionKeyResponsePacket)_packet; client.SharedKey = server.CryptoServiceProvider.Decrypt(packet.SharedSecret, false); client.SendPacket(new EncryptionKeyResponsePacket(new byte[0], new byte[0])); }
public static void ServerListPing(MinecraftClient client, MinecraftServer server, IPacket _packet) { client.SendPacket(new DisconnectPacket(GetPingValue(server))); }
public static void KeepAlive(MinecraftClient client, IPacket _packet) { client.SendPacket(_packet); }
public override void HandlePacket(MinecraftServer server, MinecraftClient client) { client.SendPacket(new DisconnectPacket(GetPingValue(server))); server.ProcessSendQueue(); }
public override void HandlePacket(MinecraftServer Server, ref MinecraftClient Client) { Client.SendPacket(new DisconnectPacket(GetPingValue(Server))); Server.ProcessSendQueue(); }
public static void RightClick(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (RightClickPacket)_packet; var slot = client.Entity.Inventory[client.Entity.SelectedSlot]; var position = new Vector3(packet.X, packet.Y, packet.Z); var cursorPosition = new Vector3(packet.CursorX, packet.CursorY, packet.CursorZ); Block block = null; if (position != -Vector3.One) { if (position.DistanceTo(client.Entity.Position) > client.Reach) return; block = client.World.GetBlock(position); } bool use = true; if (block != null) use = block.OnBlockRightClicked(position, AdjustByDirection(packet.Direction), cursorPosition, client.World, client.Entity); var item = slot.AsItem(); if (use && item != null) { if (block != null) { item.OnItemUsedOnBlock(client.World, position, AdjustByDirection(packet.Direction), cursorPosition, client.Entity); if (item is Block) { client.SendPacket(new NamedSoundEffectPacket((item as Block).PlacementSoundEffect, (int)position.X, (int)position.Y, (int)position.Z, 1, 50)); } } else item.OnItemUsed(client.World, client.Entity); } }
public static void ServerListPing(MinecraftClient client, MinecraftServer server, IPacket _packet) { client.SendPacket(new DisconnectPacket(GetPingValue(server))); }
public static void EncryptionKeyResponse(MinecraftClient client, IPacket _packet) { // Enable encryption client.Stream = new MinecraftStream(new AesStream(new BufferedStream(client.NetworkStream), client.SharedSecret)); client.SendPacket(new ClientStatusPacket(ClientStatusPacket.ClientStatus.InitialSpawn)); }
public static void TabComplete(MinecraftClient client, MinecraftServer server, IPacket _packet) { var packet = (TabCompletePacket)_packet; var eventArgs = new TabCompleteEventArgs(packet.Text, client); server.OnTabComplete(eventArgs); if (eventArgs.Handled) { packet.Text = eventArgs.Text; client.SendPacket(packet); } }