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;
}
}
}
}