diff --git a/TrueCraft.API/ChatColor.cs b/TrueCraft.API/ChatColor.cs
new file mode 100644
index 0000000..5532631
--- /dev/null
+++ b/TrueCraft.API/ChatColor.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace TrueCraft.API
+{
+ public static class ChatColor
+ {
+ public const string Black = "§0";
+ public const string DarkBlue = "§1";
+ public const string DarkGreen = "§2";
+ public const string DarkCyan = "§3";
+ public const string DarkRed = "§4";
+ public const string Purple = "§5";
+ public const string Orange = "§6";
+ public const string Gray = "§7";
+ public const string DarkGray = "§8";
+ public const string Blue = "§9";
+ public const string BrightGreen = "§a";
+ public const string Cyan = "§b";
+ public const string Red = "§c";
+ public const string Pink = "§d";
+ public const string Yellow = "§e";
+ public const string White = "§f";
+ }
+}
diff --git a/TrueCraft.API/Networking/IRemoteClient.cs b/TrueCraft.API/Networking/IRemoteClient.cs
index c228fef..8ffee69 100644
--- a/TrueCraft.API/Networking/IRemoteClient.cs
+++ b/TrueCraft.API/Networking/IRemoteClient.cs
@@ -12,7 +12,9 @@ namespace TrueCraft.API.Networking
IWorld World { get; }
IEntity Entity { get; }
IWindow Inventory { get; }
+ string Username { get; }
void QueuePacket(IPacket packet);
+ void SendMessage(string message);
}
}
\ No newline at end of file
diff --git a/TrueCraft.API/TrueCraft.API.csproj b/TrueCraft.API/TrueCraft.API.csproj
index 0612094..94f0f35 100644
--- a/TrueCraft.API/TrueCraft.API.csproj
+++ b/TrueCraft.API/TrueCraft.API.csproj
@@ -71,6 +71,7 @@
+
diff --git a/TrueCraft/Handlers/PacketHandlers.cs b/TrueCraft/Handlers/PacketHandlers.cs
index ff85947..497ed7e 100644
--- a/TrueCraft/Handlers/PacketHandlers.cs
+++ b/TrueCraft/Handlers/PacketHandlers.cs
@@ -1,4 +1,5 @@
using System;
+using TrueCraft.API;
using TrueCraft.API.Server;
using TrueCraft.Core.Networking.Packets;
using TrueCraft.API.Networking;
@@ -9,9 +10,14 @@ namespace TrueCraft.Handlers
{
public static void RegisterHandlers(IMultiplayerServer server)
{
+ server.RegisterPacketHandler(new KeepAlivePacket().ID, HandleKeepAlive);
+ server.RegisterPacketHandler(new ChatMessagePacket().ID, HandleChatMessage);
+
server.RegisterPacketHandler(new HandshakePacket().ID, LoginHandlers.HandleHandshakePacket);
server.RegisterPacketHandler(new LoginRequestPacket().ID, LoginHandlers.HandleLoginRequestPacket);
+
server.RegisterPacketHandler(new PlayerPositionPacket().ID, EntityHandlers.HandlePlayerPositionPacket);
+
server.RegisterPacketHandler(new PlayerDiggingPacket().ID, InteractionHandlers.HandlePlayerDiggingPacket);
server.RegisterPacketHandler(new PlayerBlockPlacementPacket().ID, InteractionHandlers.HandlePlayerBlockPlacementPacket);
}
@@ -20,5 +26,16 @@ namespace TrueCraft.Handlers
{
// TODO
}
+
+ internal static void HandleChatMessage(IPacket _packet, IRemoteClient _client, IMultiplayerServer server)
+ {
+ // TODO: Abstract this to support things like commands
+ // TODO: Sanitize messages
+ var packet = (ChatMessagePacket)_packet;
+ foreach (var client in server.Clients)
+ {
+ client.SendMessage(ChatColor.Yellow + string.Format("<{0}> {1}", _client.Username, packet.Message));
+ }
+ }
}
}
\ No newline at end of file
diff --git a/TrueCraft/RemoteClient.cs b/TrueCraft/RemoteClient.cs
index 917feed..9729f29 100644
--- a/TrueCraft/RemoteClient.cs
+++ b/TrueCraft/RemoteClient.cs
@@ -64,6 +64,11 @@ namespace TrueCraft
PacketQueue.Enqueue(packet);
}
+ public void SendMessage(string message)
+ {
+ QueuePacket(new ChatMessagePacket(message));
+ }
+
internal void ExpandChunkRadius(IMultiplayerServer server)
{
if (ChunkRadius < 5)