package ttftcuts.physis.common.helper.recipe;
import java.util.ArrayList;
import java.util.List;
import ttftcuts.physis.client.gui.journal.JournalPage;
import ttftcuts.physis.client.gui.journal.JournalPageCraftingRecipe;
import ttftcuts.physis.common.item.material.PhysisToolMaterial;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.ShapedOreRecipe;
public class ShapedOreRecipeCT implements IRecipeComponentTranslator {
@Override
public ItemStack getRecipeOutput(Object recipe) {
if (!(recipe instanceof ShapedOreRecipe)) { return null; }
return ((ShapedOreRecipe)recipe).getRecipeOutput();
}
@Override
public ItemStack[] getRecipeComponents(Object recipe) {
if (!(recipe instanceof ShapedOreRecipe)) { return null; }
ShapedOreRecipe r = (ShapedOreRecipe)recipe;
Object[] objects = r.getInput();
ItemStack[] items = new ItemStack[objects.length];
for (int i=0; i<objects.length; i++) {
if (objects[i] == null) { continue; }
items[i] = PhysisToolMaterial.getRecipeCompStack(objects[i]);
/*int[] ids = OreDictionary.getOreIDs(items[i]);
for (int j=0; j<ids.length; j++) {
Physis.logger.info("Ore for "+items[i]+": "+OreDictionary.getOreName(ids[j]));
}*/
}
return items;
}
@SuppressWarnings("unchecked")
@Override
public ItemStack[][] getRecipeComponentVariants(Object recipe) {
if (!(recipe instanceof ShapedOreRecipe)) { return null; }
ShapedOreRecipe r = (ShapedOreRecipe)recipe;
Object[] objects = r.getInput();
ItemStack[][] items = new ItemStack[objects.length][];
for (int i=0; i<objects.length; i++) {
if (objects[i] == null) {
items[i] = new ItemStack[1];
continue;
}
if (objects[i] instanceof ItemStack) {
ItemStack[] l = {(ItemStack)objects[i]};
items[i] = l;
}
else if (objects[i] instanceof List) {
List<ItemStack> l = (List<ItemStack>)objects[i];
items[i] = RecipeHelper.getStackVariants(l);
}
}
return items;
}
@Override
public boolean hasOreDictStick() {
return true;
}
@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 ShapedOreRecipe)) { return null; }
ShapedOreRecipe r = (ShapedOreRecipe)recipe;
stacks.add(this.getRecipeOutput(r));
}
return new JournalPageCraftingRecipe(stacks.toArray(new ItemStack[stacks.size()]));
}
}