Как добавить крафт предмета в механизмах IC2

Версия Minecraft
1.7.10
API
Forge
Я написал аддон, добавляющий предметы, добавил библиотеки ic2 но как сделать регистрацию создания одного предмета из другого в механизме MetalFormer.addRollingRecipe "металлоформовочный механизм - прокатка" из IC2? Пожалуйста подскажите как решить эту проблему и тогда будет понятно как работать и с другими механизмами.
В minetweaker делается вот так, но мне нужно добавить регистрацию создания именно в свой мод. Как это сделать? Если я тупо скопирую код созданный для minetweaker в класс своего мода, то он не будет работать, тем более в нем нет регистрации. Вот представлен код для minetweaker
1696609672494.png
Вот мой код, который не работает:
package common.handler;

import cpw.mods.fml.common.registry.GameRegistry;
import ic2.api.recipe.IMachineRecipeManager;
import ic2.api.recipe.Recipes;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;

public class ModRecipes
{
    public static void registerRecipes()
    {  
    GameRegistry.addRecipe.metalformerRolling(Items.arrow, Items.beef);
    }
}
//Items.arrow и Items.beef взял для этого примера
 

Вложения

  • 1696609562075.png
    1696609562075.png
    35.4 KB · Просмотры: 1
на разных форумах говорят чтобы понять как это делать, нужно открыть код индастриала и просмотреть там как делается регистрация создания, но там настолько всё сложно, запутанно и непонятно написано и с обфускацией что я это никогда не пойму. Прошу, пожалуйста напишите пример кода регистрирующего рецепт создания одного предмета из другого для механизма MetalFormer.addRollingRecipe
 
1,038
57
229
А вообще в первую очередь ищут исходники в гугл вот так: ic2 source
неужели я один вижу эту надпись?
1696617157732.png
 
Последнее редактирование:
1,038
57
229
Почему кринжанул, там есть даже версия под 1.19
Я конечно давно его не скачивал, но видел в том числе исходники IC2 Refined GitHub - thekdub/IC2-Refined: IndustrialCraft 2 Refined for Minecraft 1.2.5. Optimized for Tekkit Classic 3.1.2.. Короче кому надо тот найдет сразу исходники.
Как можно имея доступ поиске на форуме, к ютуб, к другим модам с Course Forge, к ЧАТам - и при этом не иметь возможности найти готовый ответ. В те времена когда этого всего не было кроме гугл и пару форумов по модингу изучил это за пару месяцев. Я любил связку IC2 + BC2 + Forestry + RedPower + RailCraft, и мне не хватало для своего мода такого устройства как аккумулятор, который мог бы как принимать, так и раздавать. И чтобы мог спокойно работать хоть с IC, хоть с BC, хоть RC.
Не получается.. ну дык пишите ошибки, будем править по ошибкам.
Уйдет год на освоение аддонов, пусть так. Вам куда спешить то? Если вы не готовы к такому повороту событий - заказывайте у фрилансеров. А потом сидите и изучайте исходники для понимания.

Я вообще не понимаю как представленный здесь код хоть как то стал работать хоть в каком то окружении. Это вообще не так делается.
Либо твик, либо ты ловишь IC2 и там же добавляешь рецепты (у него есть специальные для этого методы).
Я писал свой твик на версию 1.2.5, 1.4.7, и 1.6.4
 
Последнее редактирование:
А вообще в первую очередь ищут исходники в гугл вот так: ic2 source
неужели я один вижу эту надпись?
В том то и дело, что за месяц я на каких только форумах не побывал, и в ютубе искал и chatgpt использовал, ну нету информации и гайдов про добавление в аддоне крафтов на механизмах из индастриала, я понятия не имею откуда, с каких подробных источников вы черпаете информацию что вам всё понятно. Теперь у меня ошибку показывает 54 строка слово addRecipe название ошибки: "
The method addRecipe(IRecipeInput, NBTTagCompound, ItemStack...) in the type IMachineRecipeManager is not applicable for the arguments (ItemStack, null, ItemStack[]) ModRecipes.java /Minecraft/src/main/java/common/handler line 54 Java Problem"

Вот мой код:
package common.handler;

import cpw.mods.fml.common.registry.GameRegistry;
import ic2.api.recipe.IRecipeInput;
import ic2.api.recipe.Recipes;
import ic2.core.Ic2Items;
import net.minecraft.block.Block;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;

public class ModRecipes
{
    public static void registerRecipes()
    {      
      //GameRegistry.addShapedRecipe(new ItemStack(ModItems.INFINITY_SWORD), "XYX", "XYX", "XZX", 'X', Items.apple,'Z',ModItems.apple,'Y',ModItems.apple);
       
        GameRegistry.addShapedRecipe(new ItemStack(ModItems.INFINITY_FUEL), " Y ", " Y ", " Z ", 'Z',ModItems.INFINITY_IHOR,'Y',ModItems.SENSOR); // форменный рецепт
       
        GameRegistry.addShapelessRecipe(new ItemStack(ModItems.INFINITY_IHOR), Items.iron_ingot, plcar, rotorblade); // бесформенный рецепт
       
        GameRegistry.addSmelting(ModItems.INFINITY_IHOR, new ItemStack(ModItems.SENSOR), 435.5F); //рецепт для печи
       
    /*        GameRegistry.addShapedRecipe(Ic2Items.diamondDrill.copy(),
                "DDD",
                "DBD",
                " A ",
                'D', Items.diamond,
                'B', Ic2Items.reactorAccessHatch,
                'A', Ic2Items.insulatedGoldCableItem);
           
            */      
    }  
   
   
    public static final ItemStack plcar   =      Ic2Items.advbatPack.copy();
    public static final ItemStack coins   =       Ic2Items.advminer.copy();
    public static final ItemStack u235       =      Ic2Items.advironblock.copy();
    public static final ItemStack irpart  =        Ic2Items.batBox.copy();
    public static final ItemStack rawcarbon =     Ic2Items.blockBarrel.copy();
    public static final ItemStack rotorblade =  Ic2Items.canner.copy();
    public static final Block ladder = Block.getBlockById(65);
    public static final Block bars   = Block.getBlockById(101);
    public static final Block slime  = Block.getBlockById(165);
   

   
    static void addMachineRecipe()
     {  
        //Recipes.metalformerRolling.addRecipe(new ItemStack(Items.bed), null, new ItemStack(Items.baked_potato));
       
         ItemStack inputStack = new ItemStack(Items.bed);
            ItemStack[] outputStacks = {new ItemStack(Items.baked_potato)};
            Recipes.metalformerRolling.addRecipe(inputStack, null, outputStacks);
     }
   
   
     private static void addCompressorRecipe(IRecipeInput input, ItemStack output)
     {
         Recipes.compressor.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addMaceratorRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.macerator.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addExtractorRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.extractor.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
   
     private static void addRollingRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.metalformerRolling.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addCuttingRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.metalformerCutting.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addExtrudingRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.metalformerExtruding.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
}
 
А вообще в первую очередь ищут исходники в гугл вот так: ic2 source
неужели я один вижу эту надпись?
ты можешь дать ссылку на источник или сам написать пример кода, который работает на 1.7.10 и добавляет крафт одного предмета из другого для механизма "металлоформовщик - прокатка" ну пожалуйста. Я знаю что вы ассы и во всём разбираетесь, и что можно достичь высот за месяц, но пожалуйста, можно конкретики именно по данному вопросу?
 
1,038
57
229
можно вес лог ошибки? под спойлер

в 54ой строке у вас
1696661994306.png
никакого Machine здесь нет

The method addRecipe(IRecipeInput, NBTTagCompound, ItemStack...) in the type IMachineRecipeManager is not applicable for the arguments (ItemStack, null, ItemStack[])
он говорит что он ждёт IRecipeInput, NBTTagCompound, ItemStack[]
а вы передаёте ему ItemStack, null, ItemStack[]
найдите отличия
 
Последнее редактирование:
1,038
57
229
вы не понимаете разницу между тем что он ждёт IRecipeInput, а не ItemStack? это не одно и тоже
 
1,038
57
229
1696662698904.png
1696662766704.png
Где YOUR_INPUT_MATERIAL и YOUR_OUTPUT_MATERIAL — это объекты Item, которые вы используете для ваших материалов входа и выхода. Также имейте в виду, что вы можете контролировать количество выходных материалов, изменяя значение в ItemStack(YOUR_OUTPUT_MATERIAL, QUANTITY).

Также следует учесть, что Recipes.metalformerExtruding относится к режиму экструзии MetalFormer. Если вы хотите добавить рецепты для режимов валковки и резки, вы будете использовать Recipes.metalformerRolling и Recipes.metalformerCutting соответственно.

Добавление вашего рецепта в игру должно произойти в преинициализационной или инициализационной стадии жизненного цикла мода. То есть, этот код, вероятно, будет выполнен в одном из методов FMLPreInitializationEvent, FMLInitializationEvent или FMLPostInitializationEvent в классе вашего мода.

Пожалуйста, имейте в виду, что это всего лишь пример, и вы, возможно, нуждаетесь в более детальной информации и большем контексте для полного понимания. Вам также может быть необходимо некоторое понимание основ Java и Minecraft modding.
 
1,038
57
229
не факт что будет работать, мне было просто любопытно что он ответит.
И в вашем сообщении я не видел надписи что вы к ЧАТу обращались и что он Вам посоветовал сделать так.
А что такое IRecipeInput достаточно вбить в гугл и получить куча примеров которые можно попробовать самому
в том числе написав: Recipes.metalformerRolling.addRecipe
и посмотреть что выдаст гугл
 
1,038
57
229
и гугл выдал ответ
1696663281417.png
аж целых два
 
1,038
57
229
класс с рецептом регистрируется в postInit 1696663946015.png
Сделал по шаблону, получилось вот так: 1696663992159.png
мой код:
package common.handler;

import java.util.Collection;

import cpw.mods.fml.common.registry.GameRegistry;
import ic2.api.recipe.IRecipeInput;
import ic2.api.recipe.RecipeInputItemStack;
import ic2.api.recipe.Recipes;
import ic2.core.Ic2Items;
import net.minecraft.block.Block;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;

public class ModRecipes
{
    public static void registerRecipes()
    {      
      //GameRegistry.addShapedRecipe(new ItemStack(ModItems.INFINITY_SWORD), "XYX", "XYX", "XZX", 'X', Items.apple,'Z',ModItems.apple,'Y',ModItems.apple);
       
        GameRegistry.addShapedRecipe(new ItemStack(ModItems.INFINITY_FUEL), " Y ", " Y ", " Z ", 'Z',ModItems.INFINITY_IHOR,'Y',ModItems.SENSOR); // форменный рецепт
       
        GameRegistry.addShapelessRecipe(new ItemStack(ModItems.INFINITY_IHOR), Items.iron_ingot, plcar, rotorblade); // бесформенный рецепт
       
        GameRegistry.addSmelting(ModItems.INFINITY_IHOR, new ItemStack(ModItems.SENSOR), 435.5F); //рецепт для печи
       
    /*        GameRegistry.addShapedRecipe(Ic2Items.diamondDrill.copy(),
                "DDD",
                "DBD",
                " A ",
                'D', Items.diamond,
                'B', Ic2Items.reactorAccessHatch,
                'A', Ic2Items.insulatedGoldCableItem);
           
            */      
    }  
           
    static void addMachineRecipe()
     {  
        IRecipeManager manager = Recipes.metalformerExtruding;
        IIterableRecipe<IRecipeInput, Collection<ItemStack>> recipe = new BasicMachineRecipe(
                new RecipeInputItemStack(new ItemStack(Items.beef)), true, new ItemStack(Items.bone));
        manager.addRecipe(recipe);
       
     }
       
   
     private static void addCompressorRecipe(IRecipeInput input, ItemStack output)
     {
         Recipes.compressor.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addMaceratorRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.macerator.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addExtractorRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.extractor.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
   
     private static void addRollingRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.metalformerRolling.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addCuttingRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.metalformerCutting.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
     private static void addExtrudingRecipe(IRecipeInput input, ItemStack output)
     {
         ic2.api.recipe.Recipes.metalformerExtruding.addRecipe(input, (NBTTagCompound)null, new ItemStack[] {output});
     }
   
        public static final ItemStack plcar   =      Ic2Items.advbatPack.copy();
        public static final ItemStack coins   =       Ic2Items.advminer.copy();
        public static final ItemStack u235       =      Ic2Items.advironblock.copy();
        public static final ItemStack irpart  =        Ic2Items.batBox.copy();
        public static final ItemStack rawcarbon =     Ic2Items.blockBarrel.copy();
        public static final ItemStack rotorblade =  Ic2Items.canner.copy();
        public static final Block ladder = Block.getBlockById(65);
        public static final Block bars   = Block.getBlockById(101);
        public static final Block slime  = Block.getBlockById(165);
   
}
 
1,038
57
229
Наводите на IRecipeManager мышкой и импортируйте класс
мне нужен скриншот подключенных библиотек, в котором есть ic2.api.recipe
ИЛИ вышлите целиком всю свою папку архивом (вместе с gradlew) на dropmefiles.com или мне в telegram (ник тот же)
 
Сверху