using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MinecraftClient.Inventory { /// /// Represents an item inside a Container /// public class Item { /// /// Item Type /// public ItemType Type; /// /// Item Count /// public int Count; /// /// Item Metadata /// public Dictionary NBT; /// /// Create an item with Type ID, Count and Metadata /// /// Item Type ID /// Item Count /// Item Metadata public Item(int id, int count, Dictionary nbt) { this.Type = (ItemType)id; this.Count = count; this.NBT = nbt; } /// /// Check if the item slot is empty /// /// TRUE if the item is empty public bool IsEmpty { get { return Type == ItemType.Air || Count == 0; } } /// /// Retrieve item display name from NBT properties. NULL if no display name is defined. /// public string DisplayName { get { if (NBT != null && NBT.ContainsKey("display")) { var displayProperties = NBT["display"] as Dictionary; if (displayProperties != null && displayProperties.ContainsKey("Name")) { string displayName = displayProperties["Name"] as string; if (!String.IsNullOrEmpty(displayName)) return MinecraftClient.Protocol.ChatParser.ParseText(displayProperties["Name"].ToString()); } } return null; } } /// /// Check item is a food /// /// True if is a food public bool IsFood() { // non-poison and stackable food // remarks: auto eat may works with non-stackable food <- not tested int[] foods = { 524, 765, 821, 823, 562, 763, 680, 629, 801, 585, 788, 630, 670, 674, 588, 587, 768, 673, 764, 777, 677, 679, 625, 800, 584, 787, 626, 678, 876, 627 }; if (foods.Contains((int)Type)) { return true; } else { return false; } } } }