package chbachman.armour.util; import java.util.ArrayList; import java.util.List; import chbachman.api.item.IModularItem; import chbachman.api.nbt.helper.NBTHelper; import chbachman.api.nbt.helper.NBTList; import chbachman.api.upgrade.IUpgrade; import chbachman.api.util.Array; import cpw.mods.fml.common.Loader; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; public class UpgradeUtil { public static boolean doesPlayerHaveUpgrade(EntityPlayer player, IUpgrade upgrade) { if (Loader.isModLoaded("Baubles")) { return BaublesUtil.doesPlayerHaveUpgrade(player, upgrade); } ItemStack[] armourArray = player.inventory.armorInventory; for (ItemStack armour : armourArray) { if (doesItemStackContainUpgrade(armour, upgrade)) { return true; } } return false; } public static List<ItemStack> getPlayerUpgrades(EntityPlayer player, IUpgrade upgrade) { if (Loader.isModLoaded("Baubles")) { return BaublesUtil.getPlayerUpgrades(player, upgrade); } List<ItemStack> list = new ArrayList<ItemStack>(6); ItemStack[] armourArray = player.inventory.armorInventory; for (ItemStack armour : armourArray) { if (doesItemStackContainUpgrade(armour, upgrade)) { list.add(armour); } } return list; } public static void removeUpgrade(ItemStack stack, IUpgrade upgrade) { if (stack.stackTagCompound == null) { NBTHelper.createDefaultStackTag(stack); return; } if (stack.getItem() instanceof IModularItem) { NBTList<IUpgrade> list = NBTHelper.getNBTUpgradeList(stack.stackTagCompound); list.remove(upgrade); } } public static List<IUpgrade> getDependencyList(IUpgrade upgrade) { List<IUpgrade> list = new ArrayList<IUpgrade>(); list.add(upgrade); return list; } public static boolean doesItemStackContainUpgrade(ItemStack stack, IUpgrade upgrade) { if (stack == null || upgrade == null) { return false; } NBTHelper.createDefaultStackTag(stack); NBTList<IUpgrade> list = NBTHelper.getNBTUpgradeList(stack.stackTagCompound); return list.contains(upgrade); } }