Удалить рецепт из любого мода

1,239
2
24
Я тут обещал решение выложить:
Код:
/**
 * Удаляет форменный рецепт из любого мода.(не способен удалить предметы с метадатой)
 */

@SuppressWarnings("unchecked")
public static void removeRecipe(String toDelete)
{
    ItemStack resultItem = new ItemStack((Item)Item.itemRegistry.getObject(toDelete));

    List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();

    for (int i = 0; i < recipes.size(); i++)
    {
        IRecipe tmpRecipe = recipes.get(i);
        ItemStack recipeResult = tmpRecipe.getRecipeOutput();
        if (resultItem != null && recipeResult != null) resultItem.stackSize = recipeResult.stackSize;

        if (ItemStack.areItemStacksEqual(resultItem, recipeResult))
        {
            recipes.remove(i--);
        }
    }
}

/**
 * Удаляет форменный рецепт из модов.Способен удалять предметы с метадатой
 */


public static void preRegister() {

    Iterator<IRecipe> it = CraftingManager.getInstance().getRecipeList().iterator();
    while(it.hasNext()) {

        IRecipe recipe = it.next();

        if(recipe.getRecipeOutput() == null) continue;

        if (recipe.getRecipeOutput().isItemEqual(IC2Items.getItem("geothermalGenerator"))) {
            it.remove();
        } else if (recipe.getRecipeOutput().isItemEqual(IC2Items.getItem("semifluidGenerator"))) {
            it.remove();
        } else if (recipe.getRecipeOutput().isItemEqual(IC2Items.getItem("copperBlock"))) {
            it.remove();
        }
        else if (recipe.getRecipeOutput().isItemEqual(IC2Items.getItem("tinBlock"))) {
            it.remove();
        }
        else if (recipe.getRecipeOutput().isItemEqual(IC2Items.getItem("bronzeBlock"))) {
            it.remove();
        }
        else if (recipe.getRecipeOutput().isItemEqual(IC2Items.getItem("uraniumBlock"))) {
            it.remove();
        }
        else if (recipe.getRecipeOutput().isItemEqual(IC2Items.getItem("macerator"))) {
            it.remove();
        }
    }
}
 
Сверху