MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Créer un item simple

    Planifier Épinglé Verrouillé Déplacé Les items
    1.12.x1.11.x
    95 Messages 21 Publieurs 24.0k Vues 10 Watching
    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.
    • A Hors-ligne
      airokz
      dernière édition par

      @‘Plaigon’:

      Ohlala, originale ta classe multifonction, je veux la même :3
      Elle fait à la fois ItemHandler, CustomItem et ClientProxy, remarquable, nan ?

      Bref, j’arrête ma moquerie, pense à la convention Java. Et fais des copy paste de ton premier item, et si une erreur survient, montre la nous. Si tu ne connais pas le Java et que tu ne souhaites pas l’apprendre pour le moment (je comprends, ça prends du temps et ce n’est pas toujours très marrant), alors contente-toi de tout recopier. Ça passera ou ça cassera !

      je vais peut etre passer pour un con mais ses quoi la convention Java ?

      1 réponse Dernière réponse Répondre Citer 0
      • DeletedD Hors-ligne
        Deleted
        dernière édition par

        Tu es là pour apprendre après tout.
        La convention Java, c’est l’ensemble les règles de nommage imposées par la communauté de Java, afin de faciliter la lecture du code lors de partages de codes (via un repo, travail de groupe, ou même lors de demandes d’aide, comme ce que tu es en train de faire). Bref + nous serons nombreux à rajouter des majuscules là où il faut, + nous gagnerons en temps et en efficacité dans les futurs topics.
        Tiens, ça s’apprend très vite, voici les quelques règles à retenir :https://openclassrooms.com/forum/sujet/conventions-de-codage-en-java-64171

        1 réponse Dernière réponse Répondre Citer 0
        • M Hors-ligne
          MasterxHaze
          dernière édition par

          Merci pour ce tuto  🙂 .
          J’ai une petite question, moi mon item se pose pas quand je fais clique droit, est-ce normal ? ou il faut que je passe au tuto des blocks pour sa ? Merci d’avance  😄

          1 réponse Dernière réponse Répondre Citer 0
          • DeletedD Hors-ligne
            Deleted
            dernière édition par

            Salut,
            un item, ce n’est fait pour être posé. Soit tu cherches à creer un block, soit un ItemBlock.

            1 réponse Dernière réponse Répondre Citer 0
            • M Hors-ligne
              MasterxHaze
              dernière édition par

              @‘MasterxHaze’:

              Merci pour ce tuto  🙂 .
              J’ai une petite question, moi mon item se pose pas quand je fais clique droit, est-ce normal ? ou il faut que je passe au tuto des blocks pour sa ? Merci d’avance   😄

              D’accord, merci pour ta réponse super rapide 😄 , je me suis juste poser la question , car sur le screenshot du tuto (a la fin) je vois l’item poser sur le sol , je me suis dis que j"avais peut être raté un truc.

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

                Sur le screenshot l’item a été jeté au sol. (touche A)

                1 réponse Dernière réponse Répondre Citer 0
                • M Hors-ligne
                  MasterxHaze
                  dernière édition par

                  ah ok, l’objet était jeter sol autant pour moi  😄 Merci pour vos réponses 🙂

                  1 réponse Dernière réponse Répondre Citer 0
                  • D Hors-ligne
                    Devrok
                    dernière édition par

                    @‘aypristyle’:

                    Le json doit aller dans le dossier assets/modid/models/items

                    Bonjour,

                    Je ne vois pas où est “assets” :3

                    1 réponse Dernière réponse Répondre Citer 0
                    • S Hors-ligne
                      Sebasgaming
                      dernière édition par

                      Pour le moment où:
                      @EventBusSubscriber(value = Side.CLIENT, modid = ModTutorial.MODID)
                      Faut-il mettre ModTutorial ou autre chose, car ça me met : “ModTutorial cannot be resolved to a variable”

                      Et pour le “event.” de :
                      public static void registerItemModels(ModelRegistryEvent event.)
                      Le point est nécessaire ? Car il me met une erreur de syntaxe.


                      :D

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

                        Salut,
                        Il faut mettre le nom de ta classe principale.
                        Et non il devrait pas avoir de point ici. Je l’ai retiré du tutoriel.

                        1 réponse Dernière réponse Répondre Citer 0
                        • S Hors-ligne
                          Sebasgaming
                          dernière édition par

                          @‘robin4002’:

                          Salut,
                          Il faut mettre le nom de ta classe principale.
                          Et non il devrait pas avoir de point ici. Je l’ai retiré du tutoriel.

                          Merci de m’avoir expliqué alors  :D.


                          :D

                          1 réponse Dernière réponse Répondre Citer 0
                          • Z Hors-ligne
                            Zacharie
                            dernière édition par

                            J’ai trois erreur (en 1.12.2) quelqu’un peut m’aider ?

                            • Dans MODIDClient a la ligne
                            MODIDItems.registerItemModels();
                            

                            il me dit

                            The method registerItemModels(ModelRegistryEvent) in the type rfplusItems is not applicable for the arguments ()
                            

                            il me propose de mettre null est-ce un bonne solution ?

                            • Dans la classe principale a la ligne  
                              MinecraftForge.EVENT_BUS.register(new RegisteringHandler());

                            il me dit deux chose : la première au point entre EVENT_BUS et register

                            Syntax error on token ".", @ expected after this token
                            

                            et juste avant le point virgule

                            Syntax error, insert ")" to complete MethodDeclaration
                            
                            • Dans RegisteringHandler a la ligne
                            event.getRegistry().registerAll(ItemCopperOre.NAME);
                            

                            il dit

                            The method registerAll(Item…) in the type IForgeRegistry is not applicable for the arguments (String)
                            
                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002R Hors-ligne
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                              dernière édition par

                              Salut,
                              Il faudrait ton code (la classe principale + MODIDItems).

                              1 réponse Dernière réponse Répondre Citer 0
                              • Z Hors-ligne
                                Zacharie
                                dernière édition par

                                Voici ma classe principale

                                import org.apache.logging.log4j.Logger;
                                import net.minecraftforge.fml.common.Mod;
                                import net.minecraftforge.fml.common.Mod.EventHandler;
                                import net.minecraftforge.fml.common.Mod.Instance;
                                import net.minecraftforge.fml.common.SidedProxy;
                                import net.minecraftforge.fml.common.event.FMLInitializationEvent;
                                import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
                                
                                @Mod(modid = "rfplus", name = "RF+", version = "beta", acceptedMinecraftVersions = "[1.12.2]")
                                public class RFPlus {
                                    public static final String MODID = "rfplus";
                                
                                    MinecraftForge.EVENT_BUS.register(new RegisteringHandler());
                                
                                    @Instance(RFPlus.MODID)
                                    public static RFPlus instance;
                                    @SidedProxy(clientSide = "com.zacharie.rfPlus.rfPlusClient", serverSide = "com.zacharie.rfPlus.rfPlusServer")
                                    public static rfPlusCommon proxy;
                                
                                    public static Logger logger;
                                
                                    @EventHandler
                                    public void preInit(FMLPreInitializationEvent event) {
                                        logger = event.getModLog();
                                        proxy.preInit(event.getSuggestedConfigurationFile());
                                    }
                                
                                    @EventHandler
                                    public void init(FMLInitializationEvent event) {
                                        proxy.init();
                                    }
                                }
                                
                                

                                et MODIDItems

                                import com.zacharie.rfPlus.RFPlus;
                                import net.minecraft.client.renderer.block.model.ModelResourceLocation;
                                import net.minecraft.item.Item;
                                import net.minecraftforge.client.event.ModelRegistryEvent;
                                import net.minecraftforge.client.model.ModelLoader;
                                import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
                                import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
                                import net.minecraftforge.fml.relauncher.Side;
                                import net.minecraftforge.fml.relauncher.SideOnly;
                                
                                @EventBusSubscriber(value = Side.CLIENT, modid = RFPlus.MODID)
                                
                                public class rfplusItems {
                                
                                public static final Item COPPERORE = new ItemCopperOre();
                                
                                public static void setItemName(Item item, String name) {
                                item.setRegistryName(RFPlus.MODID, name).setUnlocalizedName(RFPlus.MODID + "." + name);
                                }
                                
                                @SideOnly(Side.CLIENT)
                                @SubscribeEvent
                                public static void registerItemModels(ModelRegistryEvent event) {
                                registerModel(COPPERORE, 0);
                                }
                                
                                @SideOnly(Side.CLIENT)
                                public static void registerModel(Item item, int metadata) {
                                if (metadata < 0)
                                metadata = 0;
                                String resourceName = item.getUnlocalizedName().substring(5).replace('.', ':');
                                if (metadata > 0)
                                resourceName += "_m" + String.valueOf(metadata);
                                
                                ModelLoader.setCustomModelResourceLocation(item, metadata,
                                new ModelResourceLocation(resourceName, "inventory"));
                                }
                                }
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R Hors-ligne
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                  dernière édition par

                                  Retires la ligne MODIDItems.registerItemModels(); tu n’en as pas besoin.

                                  MinecraftForge.EVENT_BUS.register(new RegisteringHandler());
                                  Doit être dans la fonction preinit de la classe principale, pas là où il est actuellement.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • Z Hors-ligne
                                    Zacharie
                                    dernière édition par

                                    Merci mais il me reste un erreur dans RegisteringHandler à la ligne

                                    event.getRegistry().registerAll(ItemCopperOre.NAME);
                                    

                                    il dit :

                                    The method registerAll(Item…) in the type IForgeRegistry is not applicable for the arguments (String)
                                    
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • robin4002R Hors-ligne
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                      dernière édition par

                                      Remplaces ItemCopperOre.NAME par rfplusItems.COPPERORE

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • Z Hors-ligne
                                        Zacharie
                                        dernière édition par

                                        Merci beaucoup tout marche maintenant 🙂

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • seb19992S Hors-ligne
                                          seb19992
                                          dernière édition par

                                          Bonjour,
                                          Ma première question est plus de l’ordre de la vérification. L’ajout de l’annotation @SubscribeEvent depuis la version 1.12.2, concernant la fonction registerItemModels, si je comprends bien, c’est parce qu’à partir de la 1.12.2, quelque chose (fml, je suppose), attend un événement bien particulier, celui qui signale qu’il est prêt à register, pour faire le register de tous les items du mod, c’est ça ? Et est-ce que du coup cela explique qu’on ait plus besoin à partir de la 1.12.2 d’appeler registerItemsModels dans la pré-initialisation du fichier client ?

                                          Ma deuxième question est concernant cette syntaxe :

                                          item.setRegistryName(ClassePrincipale.MODID, name).setUnlocalizedName(ClassePrincipale.MODID + "." + name);
                                          

                                          À la base, je code plutôt en C++, même si j’ai les bases de java. Pour moi, cette syntaxe signifie qu’on set le registryName de l’item et que ce “set” renvoit un objet qui possède une méthode permettant d’initialiser son unlocalized name. Est-ce que c’est bien ça, ou bien est-ce que ça fonctionne autrement sous java ? (D’ailleurs, tandis que je dis ça, je suis en train de regarder les fichiers java correspondant, et ça ne peut pas être ça puisque setRegistryName renvoit un String et que setUnlocalizedName est une méthode de l’objet item, donc rien à voir avec un String… )

                                          [Tu feras attention, il manque une parenthèse fermée, sur ce bout de code :

                                          ModelLoader.setCustomModelResourceLocation(item, metadata, new ModelResourceLocation(resourceName, "inventory");
                                          

                                          ]

                                          Ma troisième question est peut-être un poil flemmarde dans la mesure où je suppose que je pourrais chercher par moi-même (je comprendrais qu’on me réponde : “Bah va chercher !” ^^') : c’est quoi un fichier .json ?

                                          Et puis enfin, ma quatrième question : j’arrive ni à afficher une texture, ni à afficher un nom correct. Le jeu se lance sans problème, mais sans texture pour mon item et avec un nom standardisé de type “item.modid.nom_de_mon_item.name”. Pour le nom d’item, j’ai crée mes fichiers fr_fr.lang et en_us.lang et dans les deux, j’ai essayé le format “item.modid.nom_de_mon_item.name=Nom de l’item” ainsi que “item.nom_de_mon_item.name=Nom de l’item” et même “item.modid.name=Nom de l’item”. Et puis pour la texture, je ne sais pas quoi dire, j’ai suivi le tutoriel à la lettre…

                                          Merci par avance pour les réponse et la patience de celui qui me répondra ! 😃

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

                                            1. En effet, l’annotation SubscribeEvent indique que ta méthode va écoute un event, forge va donc l’appeler quand cette event sera déclenché. Par contre pour qu’il sache que ta classe contient des event il faut l’indiquer, avec @EventBusSubscriber ou la fonction MinecraftForge.EVENT_BUS.register.

                                            2. Tu peux faire un ctrl + clic sur la fonction pour que ton IDE ouvre la classe Block et voir sa définition. En fait la méthode setRegistryName renvoie this (le bloc lui même donc) ce qui te permet de chaîner une autre fonction de la classe directement après, sans le faire sur une nouvelle ligne.

                                            3. Le json est un format conçu pour représenter un objet, à la base fait pour le JS, mais désormais largement utilisé dans tout le monde informatique pour représenter des données.

                                            4. Toutes les ressources se trouve bien dans le dossier src/main/resources ? puis ensuite dans le bon package ? (assets.tonmodid.lang ) ?

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB