• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Les recettes - simples

Les bases
1.10.x
5
13
6.7k
Charger plus de messages
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • Phenix246
    Phenix246 Rédacteurs dernière édition par robin4002 29 nov. 2021, 00:21 12 sept. 2016, 21:34

    youtubeCe tutoriel est également disponible en vidéo.

    Sommaire

    • Introduction
    • Pré-requis
    • code
      • Les recettes de craft avec pattern
      • Les recettes de craft sans pattern
      • Les recettes de cuissons
      • L’alchimie
      • L’OreDictionary
    • Bonus
    • En vidéo
    • Crédits

    Introduction

    Bonjour à tous, dans ce nouveau tutoriel je vais vous apprendre à faire des recettes.
    En effet, dans Minecraft il y a quatre manières d’obtenir un bloc (block) ou un objet (item) :
    La première est de le trouver en jeu, par exemple : le trouver dans un coffre, la seconde est de le dropper en tuant une entité (mob), c’est le cas de la nether star, la troisième est de se le donner par une commande ou par l’intermédiaire de l’inventaire créatif. Enfin la dernière façon de l’obtenir est de le « créer ».

    Ce tutoriel va traiter quasiment toutes les recettes possibles, à l’exception de l’interface IRecipe, qui aura le droit à son propre tutoriel.

    Sachez que ces mécaniques ne changent que très peu, voire pas du tout, entre deux versions. À quelques exceptions près, le tutoriel est également valide en 1.7.10, 1.8, 1.9 ou 1.10.

    Pré-requis

    • Créer la base de votre mod
    • Créer un bloc basique
    • Créer un item basique

    Code

    Vous avez plusieurs manières de créer un objet, à l’aide d’une table de craft, d’un four ou d’une enclume.
    Pour les crafts, à l’aide d’une table de craft, il faut différencier deux cas :
    Le cas où les composants de la recette sont à la même position les uns par rapport aux autres (statiques), et le cas où juste leur présence dans la matrix de craft compte (dynamique).

    Initialiser des recettes se fait généralement dans la méthode «init(FMLInitializationEvent event)» après l’initialisation des blocs et des objets, sauf si vous avez besoin d’un autre mod pour votre recette alors il faut initialiser les recettes dans la méthode «postInit(FMLPostInitializationEvent event)».

    Les recettes de craft avec pattern :

    GameRegistry.addRecipe(new ItemStack(blockTutoriel), new Object[]{
    "XXX",
    "ZYZ",
    "XXX",
    'X', Blocks.blockLapis,
    'Y', new ItemStack(Items.dyePowder, 1, 15),
    'Z', new ItemStack(Items.dyePowder, 1, 6)});

    On a comme paramètre un ItemStack blockTutoriel, c’est la sortie, et ensuite un tableau d’objets qui sont l’entrée. Il y a 3 String qui se suivent : la ligne du haut, celle du milieu, puis celle du bas. Ensuite on définit chaque caractère.
    Le caractère ‘X’ correspond au bloc Block.blockLapis, ‘Y’ correspond à un ItemStack(Item.dyePowder, 1, 15).
    Vous pouvez faire correspondre un caractère à un bloc, item ou à un itemstack.
    Pour utiliser les metadatas vous devez créer un itemstack, comme je l’ai fait pour les colorants : «new ItemStack(item ou bloc, quantité, metadata)».

    Note :
    «GameRegistry.addRecipe» revient au même que «GameRegistry.addShapedRecipe».

    Ce qui nous donne :
    Recette avec pattern

    Le système de recette de Minecraft va essayer de reconnaître un pattern, vous n’êtes donc pas obligé de mettre trois lignes pour la recette :

        GameRegistry.addRecipe(new ItemStack(blockTutoriel), new Object[]{"XXX", "XXX", 'X', Block.dirt});
    

    Recette avec pattern avec deux lignes
    Autre recette avec pattern avec deux lignes

    Même principe pour les lignes de gauche à droite, vous pouvez faire : “XX”, “XX”, “YY”, …; le craft fonctionnera soit à droite, soit à gauche de la table de craft.
    Notez que si le pattern fait au plus 2x2, il sera également réalisable dans les slots de craft du joueur.

    Les recettes de craft sans pattern :

        GameRegistry.addShapelessRecipe(new ItemStack(ItemTutorial, 2), new Object[]{ new ItemStack(Item.dyePowder, 1, 15), new ItemStack(Item.dyePowder, 1, 6)});
    

    Vous avez juste à préciser les items, blocs ou les ItemStacks que vous souhaitez avoir dans votre recette, vous n’avez plus besoin de mettre leur position.
    Ainsi dès que les deux colorants sont dans la matrix de craft, le résultat de la recette est disponible dans la sortie, dans le slot du résultat.

    Recette sans pattern
    Autre recette sans pattern

    Les recettes de cuissons :

    Vous pouvez également créer des recettes via le four, il vous suffit d’utiliser ce code :

        GameRegistry.addSmelting(input, output, experience);
    

    L’input peut être un bloc, un objet ou un ItemStack.
    L’output est obligatoirement un ItemStack de la forme ItemStack(objet, nombre, damage).
    Enfin, l’expérience est une variable flottante du type 1.0F ou 5.3F.

    Par exemple :

        GameRegistry.addSmelting(new ItemStack(Blocks.DIRT), new ItemStack(Blocks.DIRT, 1, 1), 1);
    

    Recette de four

    L’alchimie :

    Vous pouvez rajouter une recette à l’alambic comme ceci :

        BrewingRecipeRegistry.addRecipe(input, ingredient, output);
    

    Les trois paramètres sont des ItemStack, néanmoins, le paramètre input doit avoir un stacksize de 1, sinon le système refusera la recette.

    Par exemple :

        BrewingRecipeRegistry.addRecipe(new ItemStack(Items.WATER_BUCKET), new ItemStack(Items.NETHER_WART), PotionHelper.getPotion(EnumVanilliaPotion.INSTANT_HEALTH_POTION));
    

    Ne faîtes pas attention à la méthode PotionHelper.getPotion, elle n’existe pas dans minecraft, c’est une méthode custom qui renvoie l’ItemStack correspondant à la potion.

    L’OreDictionary :

    • Enregistrer un item dans L’OreDictionary
      Pour rajouter vos propres items à L’OreDictionary il faut juste faire cela :

        OreDictionary.registerOre("ingotIron", ItemTutorial);
      
    • Réaliser un craft en ignorant la durabilité
      Dans certaines situations nous avons besoin de réaliser un craft en ignorant la durabilité de l’objet utilisé. Pour cela l’OreDictionary dispose d’une constante très utile : WILDCARD_VALUE
      Préciser cette valeur à la place du damage de l’itemStack et tous les damages de celui-ci pourront être utilisés.

        GameRegistry.addRecipe(new ItemStack(blockTutoriel), new Object[]{"XXX", "XXX", 'X', new ItemStack(Blocks.wool,1,OreDictionary.WILDCARD_VALUE});
      
    • Craft avec un nom
      L’OreDictionary enregistre certains objets avec un nom dans le but que certaines recettes soient possibles avec d’autres objets enregistrés avec le même nom; ce qui est très pratique lorsque l’on joue avec beaucoup de mods. En effet si un mod rajoute un bloc de stone qui comme la version vanilla drop l’équivalent de la cobblestone et que cette cobblestone est enregistrée avec le même nom que celui de la cobblestone, nous pouvons par exemple fabriquer les outils en pierre à partir de cette pierre.
      Pour utiliser cette fonctionnalité il va nous falloir ajouter un IRecipe un peu particulier :

        GameRegistry.addRecipe(new ShapedOreRecipe(Items.bucket, new Object[]{"F F", 'F', "ingotIron"}));
      


      L’objet ShapedOreRecipe se comporte comme une recette normale à positionnement statique, si vous voulez utiliser la version avec le positionnement dynamique prenez l’objet ShapelessOreRecipe.

    Bonus

    Retirer une recette
    Il peut s’avérer utile de retirer la recette d’un objet ou d’un bloc; voici comment il faut s’y prendre :
    nous allons utiliser cette méthode :

    public static void removeRecipe(ItemStack stack)
    {
        List <irecipe>recipes = CraftingManager.getInstance().getRecipeList();
        Iterator <irecipe>iterator = recipes.iterator();
        while(iterator.hasNext())
        {
            ItemStack is = iterator.next().getRecipeOutput();
            if(is != null && is == stack)
                iterator.remove();
        }
    }

    Cette méthode va rechercher dans la liste des recettes si l’une d’entre elles donne pour résultat l’ItemStack que l’on a précisé en paramètre, une fois trouvée on supprime simplement la recette de la liste.

    Vous pouvez modifier la méthode afin d’avoir en argument un bloc ou un objet, vous obtenez ainsi ces méthodes :

    public static void removeRecipe(Item item)
    {
        List <irecipe>recipes = CraftingManager.getInstance().getRecipeList();
        Iterator <irecipe>iterator = recipes.iterator();
        while(iterator.hasNext())
        {
        ItemStack is = iterator.next().getRecipeOutput();
        if(is != null && is.getItem() == item)
            iterator.remove();
        }
    }
    public static void removeRecipe(Block block)
    {
        List <irecipe>recipes = CraftingManager.getInstance().getRecipeList();
        Iterator <irecipe>iterator = recipes.iterator();
        while(iterator.hasNext())
        {
            ItemStack is = iterator.next().getRecipeOutput();
            if(is != null && is.getItem() == Item.getItemFromBlock(block))
                iterator.remove();
        }
    }

    Récupérer un objet lors du craft

    Vous avez la possibilité de récupérer un objet différent du résultat de la recette lorsque celle-ci est réalisée :
    Il faut pour cela préciser dans la classe de l’objet qu’il doit retourner comme ceci :

    this.setContainerItem(<l'item que vous voulez retourner>)

    Par exemple le seau de lait utilisé dans la recette du gâteau retourne un sceau vide :

        this.setContainerItem(bucket)
    

    Vous pouvez également retourner un ItemStack en fonction de celui qui vient d’être utilisé, ici on endommage l’objet :

    public ItemStack getContainerItem(ItemStack itemStack) {
    return new ItemStack(this, 1, itemStack.getItemDamage() + 1);
    }

    En vidéo

    https://www.youtube.com/watch?v=oa2ZK3x6E60

    Crédits

    Rédaction :

    • Phenix246

    Correction :

    • Folgansky
    • DiabolicaTrix

    Creative Commons
    Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

    retourRetour vers le sommaire des tutoriels

    1 réponse Dernière réponse Répondre Citer 0
    • Video_Game25
      Video_Game25 dernière édition par 2 mars 2017, 09:37

      J’ai un problème avec une recette de craft car je voudrais mettre de l’argile coloré rouge en ingrédient mais cela ne marche pas . J’aurais besoin d’aide svp .

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 2 mars 2017, 09:44

        Salut,
        Il faut utiliser un metadata :
        new ItemStack(Blocks.STAINED_HARDENED_CLAY,1,EnumDyeColor.RED.getMetadata())

        1 réponse Dernière réponse Répondre Citer 0
        • Video_Game25
          Video_Game25 dernière édition par 2 mars 2017, 13:20

          Et pour un craft avec de l’andesite, granite, diorite je fait comment c’il vous plait .

          1 réponse Dernière réponse Répondre Citer 0
          • Phenix246
            Phenix246 Rédacteurs dernière édition par 2 mars 2017, 14:53

            Même méthode : mais avec BlockStone.EnumType

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 2 mars 2017, 15:59

              Le granite (metadata 1) et l’andesite (metadata 5) sont des variantes de la pierre.
              Donc :
              new ItemStack(Blocks.STONE,1,1)  ou encore  new ItemStack(Blocks.STONE,1,BlockStone.EnumType.GRANITE.getMetadata()) pour le granite.
              et :
              new ItemStack(Blocks.STONE,1,5)  ou encore  new ItemStack(Blocks.STONE,1,BlockStone.EnumType.ANDESITE.getMetadata()) pour l’andesite.

              Concernant le diorite je ne sais pas quelle variante de bloc c’est, faudrait regarder en jeu avec quel bloc son id est en commun.

              1 réponse Dernière réponse Répondre Citer 0
              • AymericRed
                AymericRed dernière édition par 2 mars 2017, 16:09

                La diorite est elle aussi une variante de la pierre normalement.

                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                1 réponse Dernière réponse Répondre Citer 0
                • Video_Game25
                  Video_Game25 dernière édition par 23 mars 2017, 12:29

                  Et aussi il y a un petit problème je ne trouve pas le moyen de faire une recette comme celle des plaque de pression . Vous pouvez m’aider sur ce coup ?

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 23 mars 2017, 13:13

                    Pas compliqué à faire :
                    GameRegistry.addRecipe(new ItemStack(blockTutoriel), new Object[]{“XX”, ‘X’, Block.dirt});

                    1 réponse Dernière réponse Répondre Citer 0
                    • Video_Game25
                      Video_Game25 dernière édition par 23 avr. 2017, 14:46

                      Bon j’ai essayer différente chose mais je n’arrive pas a créer des recettes utilisant comme ingrédient de la pierre taillée moussue et craquelée .

                      Pourriez vous m’aider s’il vous plait .

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 23 avr. 2017, 14:59

                        new ItemStack(Blocks.STONEBRICK, 1, 1) -> mousse
                        new ItemStack(Blocks.STONEBRICK, 1, 2) -> craquelé
                        new ItemStack(Blocks.STONEBRICK, 1, 3) -> taillé

                        1 réponse Dernière réponse Répondre Citer 0
                        • Video_Game25
                          Video_Game25 dernière édition par 23 avr. 2017, 15:04

                          Ok merci c’est cool .

                          1 réponse Dernière réponse Répondre Citer 0
                          • Le Bourguignon
                            Le Bourguignon dernière édition par Le Bourguignon 30 juil. 2019, 12:54 30 juil. 2019, 12:25

                            Ce message a été supprimé !
                            1 réponse Dernière réponse Répondre Citer 0
                            • Référencé par  robin4002 robin4002 29 nov. 2021, 01:52
                            • Référencé par  robin4002 robin4002 29 nov. 2021, 02:04
                            • Référencé par  robin4002 robin4002 29 nov. 2021, 02:07
                            • 1 / 1
                            3 sur 13
                            • Premier message
                              3/13
                              Dernier message
                            Design by Woryk
                            Contact / Mentions Légales

                            MINECRAFT FORGE FRANCE © 2018

                            Powered by NodeBB