diff --git a/MinecraftClient/Commands/DropItem.cs b/MinecraftClient/Commands/DropItem.cs new file mode 100644 index 00000000..db1da5e5 --- /dev/null +++ b/MinecraftClient/Commands/DropItem.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MinecraftClient.Inventory; + +namespace MinecraftClient.Commands +{ + class DropItem : Command + { + public override string CmdName { get { return "dropitem"; } } + + public override string CmdDesc { get { return "cmd.dropItem.desc"; } } + + public override string CmdUsage { get { return "/dropitem "; } } + + public override string Run(McClient handler, string command, Dictionary localVars) + { + if (!handler.GetInventoryEnabled()) + { + return Translations.Get("extra.inventory_required"); + } + if (hasArg(command)) + { + string arg = getArg(command); + ItemType itemType; + if (Enum.TryParse(arg, true, out itemType)) + { + int inventoryId; + var inventories = handler.GetInventories(); + List availableIds = inventories.Keys.ToList(); + availableIds.Remove(0); // remove player inventory ID from list + if (availableIds.Count == 1) + inventoryId = availableIds[0]; // one container, use it + else + inventoryId = 0; + var p = inventories[inventoryId]; + int[] targetItems = p.SearchItem(itemType); + foreach (int slot in targetItems) + { + handler.DoWindowAction(inventoryId, slot, WindowActionType.DropItemStack); + } + return Translations.Get("cmd.dropItem.dropped", itemType.ToString(), inventoryId); + } + else + { + return Translations.Get("cmd.dropItem.unknown_item", arg); + } + } + else + { + return CmdUsage; + } + } + } +} diff --git a/MinecraftClient/MinecraftClient.csproj b/MinecraftClient/MinecraftClient.csproj index 910fbdff..117b619f 100644 --- a/MinecraftClient/MinecraftClient.csproj +++ b/MinecraftClient/MinecraftClient.csproj @@ -76,6 +76,7 @@ + diff --git a/MinecraftClient/Resources/lang/en.ini b/MinecraftClient/Resources/lang/en.ini index 436a6fd3..663e995b 100644 --- a/MinecraftClient/Resources/lang/en.ini +++ b/MinecraftClient/Resources/lang/en.ini @@ -326,6 +326,11 @@ cmd.sneak.desc=Toggles sneaking cmd.sneak.on=You are sneaking now cmd.sneak.off=You aren't sneaking anymore +# DropItem +cmd.dropItem.desc=Drop specified type of items from player inventory or opened container +cmd.dropItem.dropped=Dropped all {0} from inventory #{1} +cmd.dropItem.unknown_item=Unknown item {0} + # Tps cmd.tps.desc=Display server current tps (tick per second). May not be accurate cmd.tps.current=Current tps