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

    Les recettes - simples

    Les bases
    1.10.x
    5
    13
    6682
    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

      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

        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

          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

            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

              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

                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

                  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

                    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

                      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

                        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

                          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

                            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

                              Ce message a été supprimé !
                              1 réponse Dernière réponse Répondre Citer 0
                              • Référencé par  robin4002 robin4002 
                              • Référencé par  robin4002 robin4002 
                              • Référencé par  robin4002 robin4002 
                              • 1 / 1
                              • Premier message
                                Dernier message
                              Design by Woryk
                              Contact / Mentions Légales

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB