diff --git a/MinecraftClient/Commands/Inventory.cs b/MinecraftClient/Commands/Inventory.cs index 0db3aa8d..202fc71b 100644 --- a/MinecraftClient/Commands/Inventory.cs +++ b/MinecraftClient/Commands/Inventory.cs @@ -9,7 +9,7 @@ namespace MinecraftClient.Commands class Inventory : Command { public override string CMDName { get { return "inventory"; } } - public override string CMDDesc { get { return "inventory <|player|container> >: Interact with inventories"; } } + public override string CMDDesc { get { return "inventory <|player|container> >: Interact with inventories"; } } public override string Run(McTcpClient handler, string command, Dictionary localVars) { @@ -60,10 +60,17 @@ namespace MinecraftClient.Commands if (inventoryId == 0) response.Add("Your selected hotbar is " + (handler.GetCurrentSlot() + 1)); return String.Join("\n", response.ToArray()); case "click": + byte buttom = 0; + if (args.Length == 4) + { + string b = args[3]; + if (b.ToLower() == "r") + buttom = 1; + } if (args.Length == 3) { int slot = int.Parse(args[2]); - handler.ClickWindowSlot(inventoryId, slot); + handler.ClickWindowSlot(inventoryId, slot, buttom); return "Clicking slot " + slot + " in window #" + inventoryId; } else return CMDDesc; diff --git a/MinecraftClient/McTcpClient.cs b/MinecraftClient/McTcpClient.cs index 9881148a..bc9a3815 100644 --- a/MinecraftClient/McTcpClient.cs +++ b/MinecraftClient/McTcpClient.cs @@ -1511,13 +1511,13 @@ namespace MinecraftClient /// Click a slot in the specified window /// /// TRUE if the slot was successfully clicked - public bool ClickWindowSlot(int windowId, int slotId) + public bool ClickWindowSlot(int windowId, int slotId, byte buttom) { Item item = null; if (inventories.ContainsKey(windowId) && inventories[windowId].Items.ContainsKey(slotId)) item = inventories[windowId].Items[slotId]; - return handler.SendClickWindow(windowId, slotId, item); + return handler.SendClickWindow(windowId, slotId, buttom, item); } /// diff --git a/MinecraftClient/Protocol/Handlers/Protocol16.cs b/MinecraftClient/Protocol/Handlers/Protocol16.cs index f5f0d07d..6e1bf70c 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol16.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol16.cs @@ -688,7 +688,7 @@ namespace MinecraftClient.Protocol.Handlers return false; //Currently not implemented } - public bool SendClickWindow(int windowId, int slotId, Item item) + public bool SendClickWindow(int windowId, int slotId, byte buttom, Item item) { return false; //Currently not implemented } diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs index d63241a1..c3a69cf2 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol18.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs @@ -1342,7 +1342,7 @@ namespace MinecraftClient.Protocol.Handlers catch (ObjectDisposedException) { return false; } } - public bool SendClickWindow(int windowId, int slotId, Item item) + public bool SendClickWindow(int windowId, int slotId, byte buttom, Item item) { try { @@ -1358,7 +1358,7 @@ namespace MinecraftClient.Protocol.Handlers List packet = new List(); packet.Add((byte)windowId); packet.AddRange(dataTypes.GetShort((short)slotId)); - packet.Add(0); // Left mouse click + packet.Add(buttom); packet.AddRange(dataTypes.GetShort(actionNumber)); // Operation mode = 0 (default) diff --git a/MinecraftClient/Protocol/IMinecraftCom.cs b/MinecraftClient/Protocol/IMinecraftCom.cs index 00e57790..c8134de1 100644 --- a/MinecraftClient/Protocol/IMinecraftCom.cs +++ b/MinecraftClient/Protocol/IMinecraftCom.cs @@ -144,9 +144,10 @@ namespace MinecraftClient.Protocol /// /// Id of the window being clicked /// Id of the clicked slot + /// 0 for left click, 1 for right click /// Item in the clicked slot /// True if packet was successfully sent - bool SendClickWindow(int windowId, int slotId, Item item); + bool SendClickWindow(int windowId, int slotId, byte buttom, Item item); /// /// Send a close window packet to the server