package ttftcuts.physis.common.helper.recipe;
import java.util.ArrayList;
import java.util.List;
import cpw.mods.fml.common.registry.GameRegistry;
import ttftcuts.physis.client.gui.journal.JournalPage;
import ttftcuts.physis.client.gui.journal.JournalPageCraftingRecipe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.ShapedRecipes;
import net.minecraftforge.oredict.ShapedOreRecipe;
public class ShapedRecipeCT implements IRecipeComponentTranslator {
@Override
public ItemStack getRecipeOutput(Object recipe) {
if (!(recipe instanceof ShapedRecipes)) { return null; }
return ((ShapedRecipes)recipe).getRecipeOutput();
}
@Override
public ItemStack[] getRecipeComponents(Object recipe) {
if (!(recipe instanceof ShapedRecipes)) { return null; }
ShapedRecipes r = (ShapedRecipes)recipe;
return r.recipeItems.clone();
}
@Override
public ItemStack[][] getRecipeComponentVariants(Object recipe) {
if (!(recipe instanceof ShapedRecipes)) { return null; }
ShapedRecipes r = (ShapedRecipes)recipe;
ItemStack[][] out = new ItemStack[r.recipeItems.length][];
for (int i=0; i<r.recipeItems.length; i++) {
ItemStack[] s = {r.recipeItems[i]};
out[i] = s;
}
return out;
}
@Override
public boolean hasOreDictStick() {
return false;
}
@Override
public void registerRecipe(Object sourceRecipe, ItemStack output, Object... inputs) {
GameRegistry.addRecipe(new ShapedOreRecipe(output, inputs));
}
@Override
public JournalPage getJournalRecipePage(Object... recipes) {
List<ItemStack> stacks = new ArrayList<ItemStack>();
for (Object recipe : recipes) {
if (!(recipe instanceof ShapedRecipes)) { return null; }
ShapedRecipes r = (ShapedRecipes)recipe;
stacks.add(this.getRecipeOutput(r));
}
return new JournalPageCraftingRecipe(stacks.toArray(new ItemStack[stacks.size()]));
}
}