package ttftcuts.physis.common.compat.thaumcraft; import java.util.List; import java.util.Map.Entry; import thaumcraft.api.ThaumcraftApi; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import thaumcraft.api.crafting.ShapedArcaneRecipe; import ttftcuts.physis.client.gui.journal.JournalPage; import ttftcuts.physis.common.helper.recipe.IRecipeComponentTranslator; import ttftcuts.physis.common.helper.recipe.RecipeHelper; import ttftcuts.physis.common.item.material.PhysisToolMaterial; import net.minecraft.item.ItemStack; public class ShapedArcaneRecipeCT implements IRecipeComponentTranslator { @Override public ItemStack getRecipeOutput(Object recipe) { if (!(recipe instanceof ShapedArcaneRecipe)) { return null; } return ((ShapedArcaneRecipe)recipe).getRecipeOutput(); } @Override public ItemStack[] getRecipeComponents(Object recipe) { if (!(recipe instanceof ShapedArcaneRecipe)) { return null; } ShapedArcaneRecipe r = (ShapedArcaneRecipe)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]); } return items; } @SuppressWarnings("unchecked") @Override public ItemStack[][] getRecipeComponentVariants(Object recipe) { if (!(recipe instanceof ShapedArcaneRecipe)) { return null; } ShapedArcaneRecipe r = (ShapedArcaneRecipe)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) { if (!(sourceRecipe instanceof ShapedArcaneRecipe)) { return; } ShapedArcaneRecipe r = (ShapedArcaneRecipe)sourceRecipe; AspectList aspectList = r.getAspects().copy(); for(Entry<Aspect, Integer> aspect : aspectList.aspects.entrySet()) { aspect.setValue((int)Math.round(0.4 * aspect.getValue())); } ThaumcraftApi.addArcaneCraftingRecipe(r.research, output, aspectList, inputs); } @Override public JournalPage getJournalRecipePage(Object... recipes) { return null; } }