package buildcraftAdditions.items; import java.util.List; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import cofh.api.energy.IEnergyContainerItem; import buildcraftAdditions.inventories.InventoryItem; /** * Copyright (c) 2014-2015, AEnterprise * http://buildcraftadditions.wordpress.com/ * Buildcraft Additions is distributed under the terms of GNU GPL v3.0 * Please check the contents of the license located in * http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/ */ public abstract class ItemInventoryPoweredBase extends ItemPoweredBase { public ItemInventoryPoweredBase(String name) { this(name, name); } public ItemInventoryPoweredBase(String name, String gameregistryName) { super(name, gameregistryName); } @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tabs, List list) { list.add(new ItemStack(item)); } public abstract InventoryItem getInventory(ItemStack stack); @Override public int receiveEnergy(ItemStack container, int maxReceive, boolean simulate) { InventoryItem inv = getInventory(container); int received = 0; if (inv != null) { for (int i = 0; i < inv.getSizeInventory() && maxReceive - received > 0; i++) { ItemStack stack = inv.getStackInSlot(i); if (stack != null && stack.getItem() != null && stack.getItem() instanceof IEnergyContainerItem) { IEnergyContainerItem item = (IEnergyContainerItem) stack.getItem(); received += item.receiveEnergy(stack, maxReceive - received, simulate); } } inv.closeInventory(); } return received; } @Override public int extractEnergy(ItemStack container, int maxExtract, boolean simulate) { InventoryItem inv = getInventory(container); int extracted = 0; if (inv != null) { for (int i = 0; i < inv.getSizeInventory() && maxExtract - extracted > 0; i++) { ItemStack stack = inv.getStackInSlot(i); if (stack != null && stack.getItem() != null && stack.getItem() instanceof IEnergyContainerItem) { IEnergyContainerItem item = (IEnergyContainerItem) stack.getItem(); extracted += item.extractEnergy(stack, maxExtract - extracted, simulate); } } inv.closeInventory(); } return extracted; } @Override public int getEnergyStored(ItemStack container) { InventoryItem inv = getInventory(container); int stored = 0; if (inv != null) { for (int i = 0; i < inv.getSizeInventory(); i++) { ItemStack stack = inv.getStackInSlot(i); if (stack != null && stack.getItem() != null && stack.getItem() instanceof IEnergyContainerItem) { IEnergyContainerItem item = (IEnergyContainerItem) stack.getItem(); stored += item.getEnergyStored(stack); } } } return stored; } @Override public int getMaxEnergyStored(ItemStack container) { InventoryItem inv = getInventory(container); int maxStored = 0; if (inv != null) { for (int i = 0; i < inv.getSizeInventory(); i++) { ItemStack stack = inv.getStackInSlot(i); if (stack != null && stack.getItem() != null && stack.getItem() instanceof IEnergyContainerItem) { IEnergyContainerItem item = (IEnergyContainerItem) stack.getItem(); maxStored += item.getMaxEnergyStored(stack); } } } return maxStored; } }