Как удалить ванильный рецепт и заменить на свой?

Версия Minecraft
1.6.4
Добрый вечер. Может кто-нибудь объяснить, как произвести замену ванильного рецепта верстака, на свой рецепт, или как удалить ванильный рецепт.
(Прописывать крафт я умею). Заранее спасибо за ответы и советы.
 
Решение
Вот так можно)Вот только, как туда блок присобачить? в itemStack нет метода для блоков (getBlock()). Только предметы
блок может быть itemStack, достаточно сравнивать id, пример тому регистрация крафтов блока через id блока.

Item.getItemFromBlock(Blocks.obsidian)
код 1.7.10, в 1.6.4 такого нет

В общем если тебе нужен блок то
Java:
Iterator<IRecipe> removerRecipes = CraftingManager.getInstance().getRecipeList().iterator();
while (removerRecipes.hasNext()) {
    ItemStack itemStack = removerRecipes.next().getRecipeOutput();
    if (itemStack != null && itemStack.itemID == Block.planks.blockID) {
        removerRecipes.remove();
    }
}
77
2
2
При запуске мода (FMLPostInitializationEvent) собираешь лист со всеми рецептами, и уже через for или iterator.
Примерно должно выглядеть так, могу ошибкаться

Java:
    List<IRecipe> recipeData = CraftingManager.getInstance().getRecipeList();
    for(IRecipe item : recipeData) {
        ItemStack item2 = item.getRecipeOutput();
        if(item2 != null && item2.itemID == Block.bedrock.blockID) {

        }
    }
 
При запуске мода (FMLPostInitializationEvent) собираешь лист со всеми рецептами, и уже через for или iterator.
Примерно должно выглядеть так, могу ошибкаться
Java:
        Iterator<IRecipe> removerRecipes = CraftingManager.getInstance().getRecipeList().iterator();

        while (removerRecipes.hasNext())
        {
        ItemStack itemStack = removerRecipes.next().getRecipeOutput();
        if(itemStack != null && itemStack.getItem() == Item.bed)
        {
        removerRecipes.remove();
        }
        }
Вот так можно)Вот только, как туда блок присобачить? в itemStack нет метода для блоков (getBlock()). Только предметы
 
Последнее редактирование:
А зачем тебе нужен блок? Ты получаешь итем блока, от которого уже получаешь рецепт крафта. Его и удаляешь
в версии 1.6.4 итем не равен блоку. а ItemStack только для предметов. Ну или я туплю
 

jopi

Попрошайка
1,421
30
260
Вот так можно)Вот только, как туда блок присобачить? в itemStack нет метода для блоков (getBlock()). Только предметы
блок может быть itemStack, достаточно сравнивать id, пример тому регистрация крафтов блока через id блока.

Item.getItemFromBlock(Blocks.obsidian)
код 1.7.10, в 1.6.4 такого нет

В общем если тебе нужен блок то
Java:
Iterator<IRecipe> removerRecipes = CraftingManager.getInstance().getRecipeList().iterator();
while (removerRecipes.hasNext()) {
    ItemStack itemStack = removerRecipes.next().getRecipeOutput();
    if (itemStack != null && itemStack.itemID == Block.planks.blockID) {
        removerRecipes.remove();
    }
}
 
Сверху