using System; using System.Collections.Generic; using System.Linq; using MinecraftClient.Inventory; namespace MinecraftClient.Commands { class DropItem : Command { public override string CmdName { get { return "dropitem"; } } public override string CmdUsage { get { return "/dropitem "; } } public override string CmdDesc { get { return Translations.cmd_dropItem_desc; } } public override string Run(McClient handler, string command, Dictionary? localVars) { if (!handler.GetInventoryEnabled()) { return Translations.extra_inventory_required; } if (HasArg(command)) { string arg = GetArg(command); if (Enum.TryParse(arg, true, out ItemType 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 string.Format(Translations.cmd_dropItem_dropped, itemType.ToString(), inventoryId); } else { return string.Format(Translations.cmd_dropItem_unknown_item, arg); } } else { return CmdUsage; } } } }