/**
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.core.utils;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraft.world.World;
public final class CraftingHelper {
/**
* Deactivate constructor
*/
private CraftingHelper() {
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static IRecipe findMatchingRecipe(
InventoryCrafting par1InventoryCrafting, World par2World) {
// Begin repair recipe handler
int itemNum = 0;
ItemStack item1 = null;
ItemStack item2 = null;
int slot;
for (slot = 0; slot < par1InventoryCrafting.getSizeInventory(); ++slot) {
ItemStack itemInSlot = par1InventoryCrafting.getStackInSlot(slot);
if (itemInSlot != null) {
if (itemNum == 0) {
item1 = itemInSlot;
}
if (itemNum == 1) {
item2 = itemInSlot;
}
++itemNum;
}
}
if (itemNum == 2 && item1.getItem() == item2.getItem()
&& item1.stackSize == 1 && item2.stackSize == 1
&& item1.getItem().isRepairable()) {
Item itemBase = item1.getItem();
int item1Durability = itemBase.getMaxDamage() - item1.getItemDamageForDisplay();
int item2Durability = itemBase.getMaxDamage() - item2.getItemDamageForDisplay();
int repairAmt = item1Durability + item2Durability + itemBase.getMaxDamage() * 5 / 100;
int newDamage = itemBase.getMaxDamage() - repairAmt;
if (newDamage < 0) {
newDamage = 0;
}
ArrayList ingredients = new ArrayList<ItemStack>(2);
ingredients.add(item1);
ingredients.add(item2);
return new ShapelessRecipes(new ItemStack(item1.getItem(), 1, newDamage), ingredients);
} else {
// End repair recipe handler
List recipes = CraftingManager.getInstance().getRecipeList();
for (int index = 0; index < recipes.size(); ++index) {
IRecipe currentRecipe = (IRecipe) recipes.get(index);
if (currentRecipe.matches(par1InventoryCrafting, par2World)) {
return currentRecipe;
}
}
return null;
}
}
}