/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.data.recipes; import cofh.api.energy.IEnergyContainerItem; import matteroverdrive.init.MatterOverdriveItems; import matteroverdrive.items.Battery; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.ShapelessRecipes; import java.util.Arrays; import java.util.List; /** * Created by Simeon on 8/2/2015. */ public class EnergyPackRecipe extends ShapelessRecipes { public EnergyPackRecipe(ItemStack... recipeitems) { super(new ItemStack(MatterOverdriveItems.energyPack), Arrays.asList(recipeitems)); for (ItemStack stack : (List<ItemStack>)recipeItems) { if (stack != null && stack.getItem() instanceof Battery) { ((Battery) stack.getItem()).setEnergyStored(stack, ((Battery) stack.getItem()).getMaxEnergyStored(stack)); getRecipeOutput().stackSize = ((Battery) stack.getItem()).getEnergyStored(stack) / MatterOverdriveItems.energyPack.getEnergyAmount(getRecipeOutput()); } } } @Override public ItemStack getCraftingResult(InventoryCrafting inventoryCrafting) { ItemStack stack = getRecipeOutput().copy(); for (int i = 0;i < inventoryCrafting.getSizeInventory();i++) { if (inventoryCrafting.getStackInSlot(i) != null && inventoryCrafting.getStackInSlot(i).getItem() instanceof IEnergyContainerItem) { int energyStored = ((IEnergyContainerItem) inventoryCrafting.getStackInSlot(i).getItem()).getEnergyStored(inventoryCrafting.getStackInSlot(i)); int packEnergy = MatterOverdriveItems.energyPack.getEnergyAmount(inventoryCrafting.getStackInSlot(i)); if (energyStored > 0) { stack.stackSize = energyStored / packEnergy; return stack; } } } return null; } }