| 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 |
| */ |
| public class ItemWrapper { |
| private static final Multimap<Item, IBoxable> boxableItems = ArrayListMultimap.create(); |
| private static final Multimap<Item, IMetalArmor> metalArmorItems = ArrayListMultimap.create(); |
| |
| public static void registerBoxable(Item item, IBoxable boxable) { |
| boxableItems.put(item, boxable); |
| } |
| |
| public static boolean canBeStoredInToolbox(ItemStack stack) { |
| Item item = stack.getItem(); |
| // use customs first to allow for overriding behavior |
| for (IBoxable boxable : boxableItems.get(item)) { |
| if (boxable.canBeStoredInToolbox(stack)) return true; |
| } |
| |
| if (item instanceof IBoxable && ((IBoxable) item).canBeStoredInToolbox(stack)) return true; |
| |
| return false; |
| } |
| |
| public static void registerMetalArmor(Item item, IMetalArmor armor) { |
| metalArmorItems.put(item, armor); |
| } |
| |
| public static boolean isMetalArmor(ItemStack stack, EntityPlayer player) { |
| Item item = stack.getItem(); |
| // use customs first to allow for overriding behavior |
| for (IMetalArmor metalArmor : metalArmorItems.get(item)) { |
| if (metalArmor.isMetalArmor(stack, player)) return true; |
| } |
| |
| if (item instanceof IMetalArmor && ((IMetalArmor) item).isMetalArmor(stack, player)) return true; |
| |
| return false; |
| } |
| } |