/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.util.collections;
import java.util.HashMap;
import mods.railcraft.api.core.items.IStackFilter;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
/**
* @param <V>
* @author CovertJaguar <http://www.railcraft.info/>
*/
public class ItemMap<V> extends HashMap<ItemKey, V> {
public V put(Item item, int meta, V value) {
return put(new ItemKey(item, meta), value);
}
public V put(Item item, V value) {
return put(new ItemKey(item), value);
}
public V get(Item item) {
return get(new ItemKey(item));
}
public V get(Item item, int meta) {
V value = get(new ItemKey(item, meta));
if (value != null)
return value;
return get(new ItemKey(item));
}
public V get(ItemStack stack) {
return get(stack.getItem(), stack.getItemDamage());
}
public boolean containsKey(Item item, int meta) {
if (containsKey(new ItemKey(item, meta)))
return true;
return containsKey(new ItemKey(item));
}
public boolean containsKey(ItemStack stack) {
if (stack == null)
return false;
return containsKey(stack.getItem(), stack.getItemDamage());
}
public IStackFilter getStackFilter() {
return new IStackFilter() {
@Override
public boolean matches(ItemStack stack) {
return containsKey(stack);
}
};
}
}