diff --git a/TrueCraft/Handlers/LoginHandlers.cs b/TrueCraft/Handlers/LoginHandlers.cs index b681efc..185afa3 100644 --- a/TrueCraft/Handlers/LoginHandlers.cs +++ b/TrueCraft/Handlers/LoginHandlers.cs @@ -41,6 +41,7 @@ namespace TrueCraft.Handlers client.QueuePacket(new SpawnPositionPacket(0, 16, 0)); client.QueuePacket(new SetPlayerPositionPacket(0, 16, 17, 0, 0, 0, true)); client.QueuePacket(new ChatMessagePacket(string.Format("Welcome to the server, {0}!", client.Username))); + server.Scheduler.ScheduleEvent(DateTime.Now.AddSeconds(10), client.SendKeepAlive); } } } diff --git a/TrueCraft/Handlers/PacketHandlers.cs b/TrueCraft/Handlers/PacketHandlers.cs index 63c89d3..5fa2a01 100644 --- a/TrueCraft/Handlers/PacketHandlers.cs +++ b/TrueCraft/Handlers/PacketHandlers.cs @@ -1,6 +1,7 @@ using System; using TrueCraft.API.Server; using TrueCraft.Core.Networking.Packets; +using TrueCraft.API.Networking; namespace TrueCraft.Handlers { @@ -11,5 +12,10 @@ namespace TrueCraft.Handlers server.RegisterPacketHandler(new HandshakePacket().ID, LoginHandlers.HandleHandshakePacket); server.RegisterPacketHandler(new LoginRequestPacket().ID, LoginHandlers.HandleLoginRequestPacket); } + + internal static void HandleKeepAlive(IPacket _packet, IRemoteClient _client, IMultiplayerServer server) + { + // TODO + } } } \ No newline at end of file diff --git a/TrueCraft/RemoteClient.cs b/TrueCraft/RemoteClient.cs index d9585a2..c2fc9b7 100644 --- a/TrueCraft/RemoteClient.cs +++ b/TrueCraft/RemoteClient.cs @@ -51,6 +51,12 @@ namespace TrueCraft PacketQueue.Enqueue(packet); } + internal void SendKeepAlive(IMultiplayerServer server) + { + QueuePacket(new KeepAlivePacket()); + server.Scheduler.ScheduleEvent(DateTime.Now.AddSeconds(10), SendKeepAlive); + } + internal void UpdateChunks() { var newChunks = new List(); @@ -106,7 +112,7 @@ namespace TrueCraft LoadedChunks.Remove(position); } - public static ChunkDataPacket CreatePacket(IChunk chunk) + private static ChunkDataPacket CreatePacket(IChunk chunk) { // TODO: Be smarter about this var X = chunk.Coordinates.X;