resonant-induction/APIs/ic2/api/item/ItemWrapper.java

51 lines
1.5 KiB
Java
Raw Normal View History

2013-08-26 19:36:24 +02:00
package ic2.api.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
/**
* Wrapper for inserting interfaces into items you don't own.
*
* @author Richard
*/
2013-10-12 12:12:59 +02:00
public class ItemWrapper {
2013-08-26 19:36:24 +02:00
private static final Multimap<Item, IBoxable> boxableItems = ArrayListMultimap.create();
private static final Multimap<Item, IMetalArmor> metalArmorItems = ArrayListMultimap.create();
2013-10-12 12:12:59 +02:00
public static void registerBoxable(Item item, IBoxable boxable) {
2013-08-26 19:36:24 +02:00
boxableItems.put(item, boxable);
}
2013-10-12 12:12:59 +02:00
public static boolean canBeStoredInToolbox(ItemStack stack) {
2013-08-26 19:36:24 +02:00
Item item = stack.getItem();
// use customs first to allow for overriding behavior
2013-10-12 12:12:59 +02:00
for (IBoxable boxable : boxableItems.get(item)) {
if (boxable.canBeStoredInToolbox(stack)) return true;
2013-08-26 19:36:24 +02:00
}
2013-10-12 12:12:59 +02:00
if (item instanceof IBoxable && ((IBoxable) item).canBeStoredInToolbox(stack)) return true;
2013-08-26 19:36:24 +02:00
return false;
}
2013-10-12 12:12:59 +02:00
public static void registerMetalArmor(Item item, IMetalArmor armor) {
2013-08-26 19:36:24 +02:00
metalArmorItems.put(item, armor);
}
2013-10-12 12:12:59 +02:00
public static boolean isMetalArmor(ItemStack stack, EntityPlayer player) {
2013-08-26 19:36:24 +02:00
Item item = stack.getItem();
// use customs first to allow for overriding behavior
2013-10-12 12:12:59 +02:00
for (IMetalArmor metalArmor : metalArmorItems.get(item)) {
if (metalArmor.isMetalArmor(stack, player)) return true;
2013-08-26 19:36:24 +02:00
}
2013-10-12 12:12:59 +02:00
if (item instanceof IMetalArmor && ((IMetalArmor) item).isMetalArmor(stack, player)) return true;
2013-08-26 19:36:24 +02:00
return false;
}
}