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

    Créer un item simple

    Les items
    1.8.x
    20
    145
    25247
    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.
    • Ama
      Ama dernière édition par robin4002

      youtubeCe tutoriel est également disponible en vidéo.

      Sommaire

      • Introduction
      • Pré-requis
      • Code
        • La classe des items
        • La classe de l’item
        • La classe commune et client
        • Le modèle et la texture
      • Résultat
      • En vidéo
      • Crédits

      Introduction

      Dans ce tutoriel vous allez apprendre à créer un item simple en 1.8, des méthodes utiles seront aussi données.

      Pré-requis

      • Créer la base de votre mod

      Code

      La classe des items :

      Nous allons commencer par créer une classe qui regroupera tous nos items. Commencez par créer un nouveau package dans lequel nous allons mettre toutes les classes en rapport avec les items. Comme le package de mon mod est «fr.minecraftforgefrance.tutorial» je vais nommer le package «fr.minecraftforgefrance.tutorial.items»
      Dans ce package créez une classe nommée «VotreModidItems». Dans mon cas ce sera «TutorialItems»
      Dans cette classe nous allons ajouter deux fonctions, une fonction nommée registerItems dans laquelle nous allons nommer les items et une nommée registerItemsModels qui sera seulement présente côté client pour l’enregistrement des modèles :

      package fr.minecraftforgefrance.tutorial.items;
      
      import net.minecraftforge.fml.relauncher.Side;
      import net.minecraftforge.fml.relauncher.SideOnly;
      
      public class TutorialItems
      {
          // ici on va déclarer les items
      
          public static void registerItems()
          {
              // ici on va les enregistrer
      
          }
      
          @SideOnly(Side.CLIENT)
          public static void registerItemsModels()
          {
              // et ici on va enregistrer les modèles (fichiers json)
      
          }
      }
      

      Ce que nous venons de faire là servira pour tous les items du mod, ce code ne doit exister qu’une seul fois par mod.

      Par contre, la suite sera à refaire pour chaque item que vous souhaitez ajouter. En dessous du commentaire «ici on va déclarer les items» ajoutez la ligne suivante :

          public static final Item NOM = new ItemTutorial().setUnlocalizedName("nom non localisé").setCreativeTab(CreativeTabs.tabMisc);
      

      Ceci est la déclaration de l’item. Comme c’est une constante, par convention le nom de la variable est en majuscule (utilisez des tirets du bas pour séparer plusieurs mots). Dans la fonction setUnlocalizedName il doit y avoir le nom non-localisé, de préférence mettez-le en minuscule. Il sera utilisé pour les fichiers de langues. setCreativeTab permet de définir l’onglet créatif, il n’est pas obligé d’en avoir un.
      ItemTutorial est le nom de la classe de l’item, on va la créer par la suite.
      Ensuite dans la fonction registerItems (donc en dessous du commentaire «ici on va les enregistrer») on va enregistrer l’item :

              GameRegistry.registerItem(NOM, "nom_dans_le_registre");
      

      NOM est le nom de la variable (le même que dans la déclaration de l’item) et nom_dans_le_registre est, comme indiqué, le nom du registre. Ne mettez surtout pas d’espace dans le nom du registre, évitez également les majuscules pour être cohérent avec les noms de registres de mojang. Utilisez des tirets du bas pour les espaces.
      Et pour finir, dans la fonction registerItemsModels on va enregistrer le modèle avec la ligne suivante :

              ModelLoader.setCustomModelResourceLocation(NOM, 0, new ModelResourceLocation(ClassePrincipale.MODID + ":nom_dans_le_registre", "inventory"));
      

      Faites attention de bien utiliser le même nom que dans la fonction GameRegistry.registerItem. Pensez également à utiliser ctrl + shift + o pour importer ce qui manque.

      Voila à quoi ressemble la classe de mon côté :

      package fr.minecraftforgefrance.tutorial.items;
      
      import fr.minecraftforgefrance.tutorial.ModTutorial;
      import net.minecraft.client.resources.model.ModelResourceLocation;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.item.Item;
      import net.minecraftforge.client.model.ModelLoader;
      import net.minecraftforge.fml.common.registry.GameRegistry;
      import net.minecraftforge.fml.relauncher.Side;
      import net.minecraftforge.fml.relauncher.SideOnly;
      
      public class TutorialItems
      {
          public static final Item TUTORIAL = new ItemTutorial().setUnlocalizedName("tutorial").setCreativeTab(CreativeTabs.tabMisc);
      
          public static void registerItems()
          {
              GameRegistry.registerItem(TUTORIAL, "tutorial_item");
          }
      
          @SideOnly(Side.CLIENT)
          public static void registerItemsModels()
          {
              ModelLoader.setCustomModelResourceLocation(TUTORIAL, 0, new ModelResourceLocation(ModTutorial.MODID + ":tutorial_item", "inventory"));
          }
      }
      

      La classe de l’item :

      Créez la classe de votre item. Elle doit hériter de la classe Item.java :

      public class ItemTutorial extends Item
      {
      
      }
      

      Le but étant de créer un item simple, nous n’avons rien d’autre à ajouter. Pour ajouter des fonctionnalités à votre item vous pouvez override les différentes fonctions qui se trouvent dans la classe Item.java.
      Vous pouvez aussi ajouter un constructeur et modifier la valeur de certaines variables d’Item.java.
      Par exemple :

      package fr.minecraftforgefrance.tutorial.items;
      
      import net.minecraft.item.Item;
      
      public class ItemTutorial extends Item
      {
          public ItemTutorial()
          {
              this.maxStackSize = 1;
          }
      }
      

      Comme ceci, l’item ne se stackera que par 1.
      Un autre exemple :

      package fr.minecraftforgefrance.tutorial.items;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.ChatComponentText;
      import net.minecraft.util.ChatComponentTranslation;
      import net.minecraft.world.World;
      
      public class ItemTutorial extends Item
      {
          @Override
          public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
          {
              if(!world.isRemote)
              {
                  player.addChatMessage(new ChatComponentText("bonjour " + player.getName()));
              }
              return stack;
          }
      }
      

      Comme ceci, l’item affichera “bonjour le nom du joueur” dans le chat si on fait un clic droit en ayant ce dernier en main.
      Je vous laisse explorer la classe Item.java, il y a plein de fonctions dedans !

      La classe commune et client :

      Dans la classe commune (aussi appelée common proxy), dans la fonction preInit appelez la fonction registerItems de la classe contenant vos items comme ceci :

      package fr.minecraftforgefrance.tutorial;
      
      import java.io.File;
      
      import fr.minecraftforgefrance.tutorial.items.TutorialItems;
      
      public class TutorialCommon
      {
          public void preInit(File configFile)
          {
              *TutorialItems.registerItems();*
          }
      
          public void init()
          {
      
          }
      }
      

      Il est essentiel d’ajouter cette ligne sinon vos items ne seront jamais enregistrés et donc jamais fonctionnels.
      De même, dans la classe client (ou client proxy) appelez la fonction registerItemsModels :

      package fr.minecraftforgefrance.tutorial.client;
      
      import java.io.File;
      
      import fr.minecraftforgefrance.tutorial.TutorialCommon;
      import fr.minecraftforgefrance.tutorial.items.TutorialItems;
      
      public class TutorialClient extends TutorialCommon
      {
          @Override
          public void preInit(File configFile)
          {
              super.preInit(configFile);
              TutorialItems.registerItemsModels();
          }
      
          @Override
          public void init()
          {
              super.init();
          }
      }
      

      Et voilà ! Si vous lancez votre jeu, l’item devrait être fonctionnel mais s’appellera item.nom non localisé.name et n’aura pas de texture. Il faut donc maintenant s’occuper des ressources.

      Le modèle et la texture :

      Dans un premier temps, voici le fichier JSON de cet item (tutoriel), c’est le fichier JSON de base pour les items basiques de Minecraft.

      {
          "parent": "builtin/generated",
          "textures": {
              "layer0": "tutorial:items/tutorial_item"
          },
          "display": {
              "thirdperson": {
                  "rotation": [ 0, 90, -35 ],
                  "translation": [ 0, 1.25, -3.5 ],
                  "scale": [ 0.85, 0.85, 0.85 ]
              },
              "firstperson": {
                  "rotation": [ 0, -135, 25 ],
                  "translation": [ 0, 4, 2 ],
                  "scale": [ 1.7, 1.7, 1.7 ]
              }
          }
      }
      

      Je vais vous expliquer les principales méthodes à changer,

      La ligne “layer0” sert à définir la texture de notre Item
      (équivalent, à l’époque de la 1.7.x, au this.setTextureName() )

      Changez “tutorial” et **“tutorial_item” **par le modid de votre mod et le nom de votre texture.

      La texture doit toujours se trouver dans vos assets ! (assets/modid/textures/items/nomdelatexture.png)

      Les autres lignes en dessous servent à définir la taille, la position et la rotation de votre item,

      "thirdperson"
      
      = rendu à la troisième personne
      
      "firstperson"
      
      = rendu à la première personne (rendu en main et inventaire)
      

      Si vous souhaitez modifier le fichier JSON tout en évitant les erreurs je vous conseille ce site qui corrigera vos erreurs si il y en a : http://jsoneditoronline.com

      Il y a aussi les détails complets pour modifier votre fichier JSON sur le wiki officiel de Minecraft
      Comme par exemple les particules, les layers…

      Vous avez maintenant tous les outils en main pour personnaliser le fichier JSON de votre item !

      Une dernière chose, modifier le fichier de langue de votre mod. Ajoutez la ligne suivante dedans :

      item.nom non localisé.name=Nom localisé
      

      Un exemple concret :

      • pour le fichier en_US.lang :
      item.tutorial.name=Tutorial Item
      
      • pour le fichier fr_FR.lang :
      item.tutorial.name=Item Tutoriel
      

      Et voila, le nom devrait apparaître en jeu !

      Résultat

      Voir le commit sur github
      Le commit sur github montre clairement où ont été placé les fichiers, ainsi que ce qui a été ajouté et retiré dans le fichier.

      En vidéo

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

      Crédits

      Rédaction :

      • ZeAmateis
      • robin4002

      Correction :

      • Fine33
      • DiabolicaTrix
      • Toutoune1008

      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

      retourSommaire des tutoriels

      Si je t'ai filé un coup de main n'oublie pas le + / -
      Par contre évite les demandes d'aides en MP, tu sera sympa'

      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

      1 réponse Dernière réponse Répondre Citer 0
      • T
        tibo12 dernière édition par

        Bonsoir, j’ai un problème quand j’arrive à l’étape de la fonction pour enregistré les rendus, cette fonction :

        ClassePrincipal.itemTest
        

        et celle la :

        ModelResourceLocation
        

        son souligné en rouge et voila pour les deux ce qu’il mes afficher quand je passe le curseur dessus :

        1 réponse Dernière réponse Répondre Citer 0
        • SCAREX
          SCAREX dernière édition par

          Il va falloir apprendre à comprendre le code au lieu de le copier bêtement : ClassePrincipale c’est ta classe principale, tout simplement. Pour ModelResourceLocation : il faut l’importer, fait Alt + shift + O.

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

          1 réponse Dernière réponse Répondre Citer 1
          • T
            tibo12 dernière édition par

            Je ne fait pas du copier coller loin de la ! j’essaye de comprendre et c’est normal qu’il est des parties du tuto que certaines personnes on du mal a comprendre ! Maintenant sa ne sert a rien d’être sur un forum pour remballé les gens pour des questions qui nous paraisses évidente !

            Merci quand même.

            1 réponse Dernière réponse Répondre Citer 0
            • SCAREX
              SCAREX dernière édition par

              Je suis tout à fait d’accord pour aider les autres mais avant de demander de l’aide, il est demandé de connaître le java et de savoir un minimum ce que l’on fait. Ici il était évident que “ClassePrincipal” n’existait pas et que tu dois changer “modid” par ton modid.

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

              1 réponse Dernière réponse Répondre Citer 0
              • Gabs
                Gabs dernière édition par

                Le fichier .json on le nomme comment et on le place ou?

                1 réponse Dernière réponse Répondre Citer 0
                • AymericRed
                  AymericRed dernière édition par

                  Te le mets dans assets\ton modid\models\item\ et pour le nom, c’est le nom que t’a mis pour enregistrer le modèle.

                  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
                  • conquerorguepard
                    conquerorguepard dernière édition par

                    Je n’arrive pas à visionner le résultat final. Pourrait-on me mettre les miniatures nécessaires svp afin que je puisse recopier :). Parce que j’ai du mal à comprendre le tuto en fait.
                    Et si possible dire à quoi correspond exactement ItemTutoriel-Minecraft-Item-itemTutoriel car clairement après je suis assez perdu 😕

                    Sinon vivement la vidéo :).

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                      Les images étaient sur puush, elles ne sont plus disponible 😕
                      @‘conquerorguepard’:

                      Et si possible dire à quoi correspond exactement ItemTutoriel-Minecraft-Item-itemTutoriel car clairement après je suis assez perdu 😕

                      Je n’ai pas comprit de quoi tu parles :s

                      1 réponse Dernière réponse Répondre Citer 0
                      • conquerorguepard
                        conquerorguepard dernière édition par

                        Sinon du coup j’ai essayé de commencer ma classe principal et ma classe principale tout seul, à l’aide de ce tuto et de celui de l’item 1.7.
                        Voici ce que cela donne (fichiers joints):

                        Cela, comme vous le voyez, m’indique des erreurs:

                        Principal:
                        Type mismatch: cannot convert from MeatEpanterias to Item

                        GameRegistry cannot be resolved

                        Item:
                        Multiple markers at this line
                            - The type MeatEpanterias is already
                             defined
                            - The type MeatEpanterias is already
                             defined

                        Syntax error on token “}”, delete this token

                        Syntax error, insert “}” to complete ClassBody

                        Proxy:
                        itemTest cannot be resolved or is not a field
                        (dans la dernière ligne)

                        Je pense avoir tout mis :). Quelqu’un peut m’aider à les résoudre svp? (désolé de vous ennuyer avec mes appels à l’aide, je débute et j’ai du mal, mais je suis motivé et j’ai bien l’intention de finir en bon moddeur :))

                        1 réponse Dernière réponse Répondre Citer 0
                        • AymericRed
                          AymericRed dernière édition par

                          Dans ton Item, tu as défini 2 fois la classe (tu as 2 public class MeatEpanterias) et pour le GameRegistry, il faut que tu l’importe (ctrl + shift + o) va importer tout ce qui est nécessaire.
                          Pour le pb du proxy, il faut que tu remplaces itemTest par ton item

                          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
                          • conquerorguepard
                            conquerorguepard dernière édition par

                            Proxy (fichier join):
                            Multiple markers at this line
                                - itemTest cannot be resolved or is not a
                                 field
                                - meatEpanterias cannot be resolved or is
                                 not a field

                            Item:
                            Résolu

                            Principal:
                            Résolu

                            1 réponse Dernière réponse Répondre Citer 0
                            • AymericRed
                              AymericRed dernière édition par

                              “MeatEpanterias.meatEpanterias”, tu ne définis pas “meatEpanterias” dans la classe de ton item, mais dans ta classe principale, donc il faut que tu remplaces “MeatEpanterias” par ta classe principale.

                              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
                              • conquerorguepard
                                conquerorguepard dernière édition par

                                C’est quoi exactement le nom de ma classe principal du coup? Je pensais que c’était “MeatEpanterias”.
                                J’ai essayé avec “public class”, le nom de mon mod.
                                ça me met:
                                Multiple markers at this line
                                    - itemTest cannot be resolved or is
                                     not a field
                                    - Modzoic cannot be resolved to a
                                     variable

                                1 réponse Dernière réponse Répondre Citer 0
                                • AymericRed
                                  AymericRed dernière édition par

                                  Le nom de ta classe c’est Modzoic donc il faut que tu mettes Modzoic.meatEpanterias (en pensant à bien importer).
                                  Et je précise les seuls endroits où tu auras besoin de ça : “public class” ça sera au début de tes classes et uniquement là.

                                  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
                                  • conquerorguepard
                                    conquerorguepard dernière édition par

                                    Merci beaucoup à toi :D. Tout est bon, j’avais juste pas importé et sauvegardé.

                                    "Appliquer le fichier JSON :

                                    Dans un premier temps voici le fichier JSON de cet item (tutoriel), c’est le fichier JSON de base pour les items basiques de Minecraft".

                                    Je le trouve où?

                                    Et j’ai essayé de démarrer le  jeu pour voir ça me met ça:

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • AymericRed
                                      AymericRed dernière édition par

                                      J’ai l’impression que ton message est pas complet. (la pj s’était mal chargée)
                                      Pour trouver le fichier json, son contenu est juste en dessous de la phrase que tu as copié collé, je vois pas ce qui bloque…
                                      Et pour le message, d’erreur ton projet dois etre mal configuré… Refais le gradlew eclipse et si ça marche toujours pas, je pense que quelqu’un d’autre t’aidera mieux que moi  😄

                                      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
                                      • conquerorguepard
                                        conquerorguepard dernière édition par

                                        {
                                           "parent": "builtin/generated",
                                           "textures": {
                                               "layer0": "modid:items/itemTutoriel"
                                           },
                                           "display": {
                                               "thirdperson": {
                                                   "rotation": [ -90, 0, 0 ],
                                                   "translation": [ 0, 1, -3 ],
                                                   "scale": [ 0.55, 0.55, 0.55 ]
                                               },
                                               "firstperson": {
                                                   "rotation": [ 0, -135, 25 ],
                                                   "translation": [ 0, 4, 2 ],
                                                   "scale": [ 1.7, 1.7, 1.7 ]
                                               }
                                           }
                                        }
                                        

                                        –—

                                        ^
                                         |
                                        ça je le trouve où dans eclipse?

                                        Et “Refais le gradlew eclipse”, c’est à dire? Je dois faire quoi exactement :/?

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • AymericRed
                                          AymericRed dernière édition par

                                          Ah oui effectivement, il y a pas marqué dans le tuto où il faut mettre le json, il faut que t’ailles dans src/main/ressources/assets/tonmodid/models/item (créée les dossiers qu’il faut) et que tu y enregistres un fichier “LeNomDeLitem.json” où tu mets le contenu qu’il y a dans le tuto.

                                          Pour le gradlew eclipse, si t’a suivi le tuto “Installer et configurer l’espace de travail Forge”, tu devrais savoir ce que c’est.

                                          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
                                          • conquerorguepard
                                            conquerorguepard dernière édition par

                                            C’est tout bon. Pour gradlew eclipse je vais voir. Je m’en rappelle plus bien.

                                            J’ai tenté de redémarrer le jeu, ça à lancer le luncher et avant que ça marche (5/7), ça a crash et a marqué Using GL 1.3 texture combiners.
                                            Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
                                            Shaders are available because OpenGL 2.1 is supported.
                                            VBOs are available because OpenGL 1.5 is supported.

                                            Using VBOs: No
                                                Is Modded: Definitely; Client brand changed to ‘fml,forge’
                                                Type: Client (map_client.txt)
                                                Resource Packs:
                                                Current Language: Français (France)
                                                Profiler Position: N/A (disabled)
                                                CPU: 2x Intel® Pentium® CPU 2020M @ 2.40GHz
                                            [16:06:15] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:612]: #@!@# Game crashed! Crash report saved to: #@!@# C:\Users\Conqueror\Documents\Modding\forge-1.8.8\run.\crash-reports\crash-2016-03-28_16.06.15-client.txt
                                            AL lib: (EE) alc_cleanup: 1 device not closed
                                            Java HotSpot™ 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 8
                                            • 1 / 8
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB