diff --git a/TrueCraft.API/Networking/IRemoteClient.cs b/TrueCraft.API/Networking/IRemoteClient.cs index c57743c..c228fef 100644 --- a/TrueCraft.API/Networking/IRemoteClient.cs +++ b/TrueCraft.API/Networking/IRemoteClient.cs @@ -1,6 +1,7 @@ using System; using TrueCraft.API.World; using TrueCraft.API.Entities; +using TrueCraft.API.Windows; namespace TrueCraft.API.Networking { @@ -10,6 +11,7 @@ namespace TrueCraft.API.Networking bool DataAvailable { get; } IWorld World { get; } IEntity Entity { get; } + IWindow Inventory { get; } void QueuePacket(IPacket packet); } diff --git a/TrueCraft.Core/Networking/Packets/WindowItemsPacket.cs b/TrueCraft.Core/Networking/Packets/WindowItemsPacket.cs index 8449b1f..b7175b8 100644 --- a/TrueCraft.Core/Networking/Packets/WindowItemsPacket.cs +++ b/TrueCraft.Core/Networking/Packets/WindowItemsPacket.cs @@ -11,6 +11,12 @@ namespace TrueCraft.Core.Networking.Packets { public byte ID { get { return 0x68; } } + public WindowItemsPacket(sbyte windowID, ItemStack[] items) + { + WindowID = windowID; + Items = items; + } + public sbyte WindowID; public ItemStack[] Items; diff --git a/TrueCraft/Handlers/LoginHandlers.cs b/TrueCraft/Handlers/LoginHandlers.cs index 4747130..e663e19 100644 --- a/TrueCraft/Handlers/LoginHandlers.cs +++ b/TrueCraft/Handlers/LoginHandlers.cs @@ -38,6 +38,7 @@ namespace TrueCraft.Handlers client.QueuePacket(new LoginResponsePacket(0, 0, Dimension.Overworld)); client.ChunkRadius = 2; client.UpdateChunks(); + client.QueuePacket(new WindowItemsPacket(0, client.Inventory.GetSlots())); client.QueuePacket(new SpawnPositionPacket(0, 16, 0)); client.QueuePacket(new SetPlayerPositionPacket(0, 16, 17, 0, 0, 0, true)); server.Scheduler.ScheduleEvent(DateTime.Now.AddSeconds(10), client.SendKeepAlive); diff --git a/TrueCraft/RemoteClient.cs b/TrueCraft/RemoteClient.cs index a531d6b..917feed 100644 --- a/TrueCraft/RemoteClient.cs +++ b/TrueCraft/RemoteClient.cs @@ -12,6 +12,8 @@ using System.Linq; using TrueCraft.Core.Networking.Packets; using TrueCraft.Core.World; using Ionic.Zlib; +using TrueCraft.API.Windows; +using TrueCraft.Core.Windows; namespace TrueCraft { @@ -24,6 +26,8 @@ namespace TrueCraft PacketQueue = new ConcurrentQueue(); LoadedChunks = new List(); Server = server; + Inventory = new InventoryWindow(); + InventoryWindow.Hotbar[0] = new ItemStack(1, 64); } public NetworkStream NetworkStream { get; set; } @@ -34,6 +38,15 @@ namespace TrueCraft public IMultiplayerServer Server { get; set; } public IWorld World { get; internal set; } public IEntity Entity { get; internal set; } + public IWindow Inventory { get; private set; } + + public InventoryWindow InventoryWindow + { + get + { + return Inventory as InventoryWindow; + } + } internal int ChunkRadius { get; set; } internal IList LoadedChunks { get; set; }