package mods.recipear.modules; import java.util.Iterator; import java.util.List; import mods.recipear.BannedRecipes; import mods.recipear.Recipear; import mods.recipear.RecipearLogger; import mods.recipear.RecipearOutput; import mods.recipear.RecipearUtil; import mods.recipear.api.IRecipear; import mods.recipear.api.RecipearEvent; import net.minecraft.item.ItemStack; import thaumcraft.api.ThaumcraftApi; import thaumcraft.api.crafting.CrucibleRecipe; import thaumcraft.api.crafting.InfusionRecipe; import thaumcraft.api.crafting.ShapedArcaneRecipe; import thaumcraft.api.crafting.ShapelessArcaneRecipe; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @Mod(modid = "Recipear2|TC4", name = "TC4", version = "2.3.1", dependencies="required-after:Recipear2@[2.3,)") public class RecipearTC4 implements IRecipear { String prefix = "[" + getName() + "] "; @EventHandler public void postInit(FMLPostInitializationEvent event) { Recipear.events.add(this); } @Override public void trigger(RecipearEvent event) { if(Loader.isModLoaded(getModID())) { if(event.isOutput()) { RemoveRecipes(event, "THAUMCRAFT"); } else if (BannedRecipes.GetBannedRecipeAmount() > 0) { RecipearLogger.info(prefix + RemoveRecipes(event, "THAUMCRAFT")); } } else { RecipearLogger.info(prefix + "Could not find " + getModID()); } } private String RemoveRecipes(RecipearEvent event, String type) { int deleted = 0, index = 0; ItemStack RECIPE_OUTPUT = null; String RECIPE_TYPE; for (Iterator<Object> itr = ThaumcraftApi.getCraftingRecipes().iterator(); itr.hasNext();) { Object recipe = itr.next(); boolean match = false; RECIPE_OUTPUT = null; RECIPE_TYPE = "None"; if(recipe == null) { index++; continue; } if(recipe instanceof CrucibleRecipe) { CrucibleRecipe recipe_real = (CrucibleRecipe)recipe; RECIPE_OUTPUT = recipe_real.recipeOutput; RECIPE_TYPE = "CrucibleRecipe"; } else if (recipe instanceof InfusionRecipe) { InfusionRecipe recipe_real = (InfusionRecipe)recipe; if(recipe_real.getRecipeOutput() instanceof ItemStack) { RECIPE_OUTPUT = (ItemStack)recipe_real.getRecipeOutput(); } RECIPE_TYPE = "InfusionRecipe"; } else if (recipe instanceof ShapedArcaneRecipe) { ShapedArcaneRecipe recipe_real = (ShapedArcaneRecipe)recipe; RECIPE_OUTPUT = recipe_real.getRecipeOutput(); RECIPE_TYPE = "ShapedArcaneRecipe"; } else if (recipe instanceof ShapelessArcaneRecipe) { ShapelessArcaneRecipe recipe_real = (ShapelessArcaneRecipe)recipe; RECIPE_OUTPUT = recipe_real.getRecipeOutput(); RECIPE_TYPE = "ShapelessArcaneRecipe"; } if(RECIPE_OUTPUT == null) { index++; continue; } if(BannedRecipes.Check(RECIPE_OUTPUT.itemID, RECIPE_OUTPUT.getItemDamage(), type) || BannedRecipes.Check(RecipearUtil.getLanguageRegistryEntry(RECIPE_OUTPUT), type)) { match = true; } if(event.isOutput() || match) { if(event.isOutput()) { RecipearOutput.add("i(" + index + ") " + RECIPE_TYPE + " Recipe"); RecipearOutput.add("OUTPUT[" + RecipearUtil.getFancyItemStackInfo(RECIPE_OUTPUT) + "]"); } else { RecipearLogger.info("i(" + index + ") " + RECIPE_TYPE + " Recipe"); RecipearLogger.info("OUTPUT[" + RecipearUtil.getFancyItemStackInfo(RECIPE_OUTPUT) + "]"); deleted++; itr.remove(); } } index++; } return "Removed " + deleted + " " + type + " recipe(s)"; } @Override public String[] getTypes() { return new String[] {"THAUMCRAFT"}; } @Override public String getModID() { return "Thaumcraft"; } @Override public String getFullName() { return "Thaumcraft4"; } @Override public String getName() { return "TC4"; } }