Résolu Problème de recette [1.7.10]
-
Bonjour à vous,
Après des jours de tentatives pour essayer de comprendre pourquoi mes recettes sur mon mod ne veulent pas fonctionner. J’ai essayé de chercher des solutions de partout, mais aucun ne permet de résoudre mon problème.
Je vais vous résumer la situation, j’ai fait une “machine” dans mon mod, tout fonctionne bien, gui, container, tile entity et le block, mais lorsque je souhaite effectuer un craft rien de ne se passe. J’ai bien fait la classe pour les recettes et enregistrer mes recettes dans la classe “RecipesMod” mais rien de change. Je vais vous partager les classes pour mieux comprendre.
La classe StickMachineRecipes :
import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import cpw.mods.fml.common.registry.GameRegistry; import fr.irisium.irisiummod.init.BlocksMod; import fr.irisium.irisiummod.init.ItemsMod; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.FurnaceRecipes; public class StickMachineRecipes { private static final StickMachineRecipes instance = new StickMachineRecipes(); private Map smeltingList = new HashMap(); public StickMachineRecipes() { } public void add(ItemStack stack1, ItemStack stack2, ItemStack stack3, ItemStack stack4, ItemStack stack5, ItemStack stack) { ItemStack[] stackList = new ItemStack[]{stack1, stack2, stack3, stack4, stack5}; this.smeltingList.put(stackList, stack); } public void add(Item item1, Block item2, Item item3, Block item4, Item item5, ItemStack stack) { this.add(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), new ItemStack(item4), new ItemStack(item5), stack); } public void add(Item item1, Item item2, Item item3, Item item4, Item item5, ItemStack stack) { this.add(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), new ItemStack(item4), new ItemStack(item5), stack); } public void add(Block item1, Block item2, Item item3, Block item4, Block item5, ItemStack stack) { this.add(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), new ItemStack(item4), new ItemStack(item5), stack); } public void add(Item item1, Block item2, Block item3, Block item4, Block item5, ItemStack stack) { this.add(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), new ItemStack(item4), new ItemStack(item5), stack); } public ItemStack getSmeltingResult(ItemStack[] stack) { Iterator iterator = this.smeltingList.entrySet().iterator(); while(iterator.hasNext()) { Entry entry = (Entry)iterator.next(); if (this.isSameKey(stack, (ItemStack[])((ItemStack[])entry.getKey()))) { return (ItemStack)entry.getValue(); } } return null; } private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2) { boolean isSame = false; for (int i = 0; i <= 4; ++i) { if (stackList[i].getItem() != stackList2[i].getItem() || stackList[i].getItem() != stackList2[i].getItem()) { return false; } isSame = true; } return isSame; } public Map getSmeltingList() { return this.smeltingList; } public static StickMachineRecipes smelting() { return instance; } public static StickMachineRecipes getManager() { return instance; } }
La classe RecipesMod :
import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import fr.irisium.irisiummod.init.ItemsMod; import fr.irisium.irisiummod.init.BlocksMod; public class RecipesMod { public RecipesMod() { } public static void init() { ItemsMod(); BlocksMod(); StickMachineRecipes(); } private static void StickMachineRecipes() { StickMachineRecipes.getManager().add(new ItemStack(ItemsMod.speedStick), new ItemStack(ItemsMod.speedOrb), new ItemStack(ItemsMod.irisiumIngot), new ItemStack(ItemsMod.irisiumStick), new ItemStack(ItemsMod.irisiumCore), new ItemStack(ItemsMod.eboniteIngot, 1)); } }
J’espère que vous pourrez m’aider à résoudre ce problème.
Merci d’avance.
-
pour mettre un craft il faut mettre dans ta classe principale dans le @Mod.EventHandler public void init(FMLInitializationEvent event):
new (nom de la classe ou il y a toute tes reccettes)().registerBrewingRecipes();
puis dans ta classe des recettes tu met
GameRegistry.addRecipe(new ItemStack(taclasse.tonitem), new Object[]{“NNN” ,“NNN”, “NNN”, ‘N’ , taclasse.tonobjet});
//l item que tu veut craft //l item que tu a besoin pour craft ton item -
@Heaven a dit dans Problème de recette [1.7.10] :
GameRegistry.addRecipe(new ItemStack(taclasse.tonitem), new Object[]{“NNN” ,“NNN”, “NNN”, ‘N’ , taclasse.tonobjet});
J’ai fait ce que vous m’avez dit mais rien ne change, les crafts ne fonctionnent pas.
-
ça ne marche pas car le craft ne se fait pas depuis la table de craft mais depuis une machine
-
C’est ça que je veux, faire les crafts depuis la machine est non via la table de craft
-
tu a essayer d’attendre un peu ? peut-être que ta pas defini ta texture de ta fleche qui indique lquand est-ce que le craft fonctionne donc faut attendre et puis peut-être que ca peut marcher puis verifi d’avoir mis le speedstick dans le slot #1 le speedore dans le slot #2 et puis le irisiumingot dans le slot #3… et sa pourrai peut-être marcher
-
ou sinon supprime dans RecipesMod public static void StickMachineRecipes() et dans ta classe StickMachineRecipes tu met
public StickMachineRecipes() { this.add(new ItemStack(ItemsMod.speedStick), new ItemStack(ItemsMod.speedOrb), new ItemStack(ItemsMod.irisiumIngot), new ItemStack(ItemsMod.irisiumStick), new ItemStack(ItemsMod.irisiumCore), new ItemStack(ItemsMod.eboniteIngot, 1)); }
ca peut peut être marcher essaye les deux trucs que je t’ai dit et sa peut peut être marcher ^^
-
Bonjour, désolé pour l’attente, mais je suis partie en vacances donc je n’ai pas pu regarder les réponses. En soit j’ai bien mis la ligne de code dans ma classe StickMachineRecipes, en soit cela marche sauf que lorsque le craft à finit je reçois un message dans la console en me disant qu’il y a un problème. Voici le message :
Le problème vient de la classe TileEntityStickMachine, vous retrouverez le code plus haut.
Merci d’avance.
-
C’est bon, le problème de la recette fonctionne.
Merci à vous !