/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.common.util.crafting; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.world.World; import mods.railcraft.common.items.RailcraftPartItems; import mods.railcraft.common.util.inventory.InvTools; /** * * @author CovertJaguar <http://www.railcraft.info> */ public class RotorRepairRecipe implements IRecipe { private static final int REPAIR_PER_BLADE = 2500; private final ItemStack ROTOR = RailcraftPartItems.getTurbineRotor(); private final ItemStack BLADE = RailcraftPartItems.getTurbineBlade(); @Override public boolean matches(InventoryCrafting grid, World world) { boolean hasRotor = false; boolean hasBlade = false; for (int slot = 0; slot < grid.getSizeInventory(); slot++) { ItemStack stack = grid.getStackInSlot(slot); if (InvTools.isItemEqual(stack, ROTOR)) { hasRotor = true; } else if (InvTools.isItemEqual(stack, BLADE)) { hasBlade = true; } } return hasBlade && hasRotor; } @Override public ItemStack getCraftingResult(InventoryCrafting grid) { ItemStack rotor = null; int numBlades = 0; for (int slot = 0; slot < grid.getSizeInventory(); slot++) { ItemStack stack = grid.getStackInSlot(slot); if (InvTools.isItemEqual(stack, ROTOR)) { rotor = stack.copy(); } else if (InvTools.isItemEqual(stack, BLADE)) { numBlades++; } } if (rotor == null) { return null; } int damage = rotor.getItemDamage(); damage -= REPAIR_PER_BLADE * numBlades; if (damage < 0) { damage = 0; } rotor.setItemDamage(damage); return rotor; } @Override public int getRecipeSize() { return 9; } @Override public ItemStack getRecipeOutput() { return null; } }