Créer la base de son mod



  • Ce tutoriel est très bien il y a tout d'expliqué.
    Mais il faut faire une version 1.9 /1.10



  • Super tuto très bien expliqué !
    mais j'ai une erreur au lancement ce qui entraine le crash
    voila la seule ligne de la console qui parle de mon mod que j'ai appelé the future :
    [18:45:24] [Client thread/INFO] [The_Future]: Mod The_Future is missing the required element 'name'. Substituting The_Future

    que doit-je faire pour résoudre se problème.
    je peu envoyer le code ou tout les logs de la console si besoin.
    😢 😢 😢 😢 😢



  • As-tu bien spécifié le nom dans le @Mod et dans le mcmod.info ?



  • tkt sa marche
    j’avais aussi fait une erreur dans le @SidedProxy
    merci ^-^
    😉 😉



  • Pour info, cette méthode fonctionne également parfaitement en 1.11.x, si vous pensez que ça peut être utile de l'ajouter dans le titre 🙂



  • Bonjour j'ai une erreur dans le clien proxy.

    mes "override" ne fonctionne pas "Error: method does not override or implement a method from a supertype"

    ( je tien à précisé que je suis très mauvais en code vus que je suis autodidacte et que je commence avec ce tutos)

    voici mon code pour clientproxy:

    package be.melgaran.modrpg.Proxy;
    
    import net.minecraft.block.Block;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.renderer.ItemModelMesher;
    import net.minecraft.client.renderer.block.model.ModelResourceLocation;
    import net.minecraft.item.Item;
    
    /**
    * Created by Melgaran on 05-06-17.
    */
    public class clientproxy extends commonproxy {
    
       @Override
       public static void registerItemTexture(Item item, int metadata, String name)
       {
           ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher();
           mesher.register(item, metadata, new ModelResourceLocation("ModRpg:" + name, "inventory"));
       }
       @Override
       public static void registerItemTexture(Item item, String name)
       {
           registerItemTexture(item, 0, name);
       }
    
       @Override
       public static void registerBlockTexture(Block block, int metadata, String name)
       {
           registerItemTexture(Item.getItemFromBlock(block), metadata, name);
       }
       @Override
       public static void registerBlockTexture(Block block, String name)
       {
           registerBlockTexture(block, 0, name);
       }
    }
    

  • Administrateurs

    Il y a des erreurs car les fonctions sur lequel tu as mis un @Override n'existe pas dans la classe commonproxy.
    Et surtout, mettre un @Override sur une fonction static n'a pas de sens.



  • Petit changement pour les versions plus "récentes" de forge (ou en tout cas la mienne 1.11.2-2476).
    Où les fichiers ressources doivent uniquement être en minuscules
    ex: fr_fr.lang

    Le fichier pack.mcmeta est par défaut sous cette forme

    {
       "pack": {
           "description": "examplemod resources",
           "pack_format": 3,
           "_comment": voir plus bas
       }
    }
    

    "A pack_format of 3 should be used starting with Minecraft 1.11. All resources, including language files, should be lowercase (eg: en_us.lang). A pack_format of 2 will load your mod resources with LegacyV2Adapter, which requires language files to have uppercase letters (eg: en_US.lang)."

    J'étais perturbé en suivant le tutoriel "Créer un item simple" et de ne toujours pas avoir les fichiers .lang utilisés (à moins que j'ai loupé quelque part cette précision ?).


  • Administrateurs

    En effet, j'ai modifié le tutoriel pour le préciser.



  • Bonjour à tous

    Je suis nouveau sur le forum ^^

    Je suis rendu à 14.56 sur la vidéo ( environ ) et lorsque que je met la commande @EventHandler,
    l'import que j'ai n'est pas le même dans la vidéo, à la fin j'ai une asterix :

    import net.minecraftforge.fml.common.eventhandler.*;
    
    

    Et à la ligne 15, ou il y à écrit @EventHandler, j'ai une ampoule avec une croix qui dit "EventHandler cannot be resolved to a type".
    Je ne sais pas d'ou ça vient, une idée ?

    merci d'avance 🙂



  • Salut,

    ça ne devrait pas poser problème mais tu peux toujours supprimer la ligne avec l'import puis refaire l'important manuellement en mettant la souris sur l'erreur du @EventHandler. Si ça pose toujours problème, tu peux aussi écricre @Mod.EventHandler.



  • Merci pour le tuto, super bien fait et je dois dire que c'est très pratique d'avoir mis le résultat sur github et pas mal de détails c'est assez intéressant plus les pré-requis franchement c'est du bon travail ! 🙂



  • Bonjour,
    Je commence le modding sur minecraft et je suis en train de suivre les tutoriels. Désolé d'ailleurs par avance si je déterre un sujet qui ne devrait pas l'être ou si je poste ma question au mauvais endroit, je suis nouveau.
    Je n'arrive pas bien à comprendre à quoi sert un proxy et un logger. Si jamais ce sont des éléments de base de java que je devrais connaître, je demande pas forcément qu'on me ré-explique, une redirection vers une explication bien faite sur internet me conviendra totalement. Et si jamais c'est mieux expliqué dans la suite des tutoriels, désolé par avance pour le dérangement.

    Merci d'avance pour vos réponses.


  • Administrateurs

    Salut,
    Il n'y a aucun problème à répondre dans les tutoriels si c'est pour posé des questions en rapport avec ce dernier, peu importe l'âge du tutoriel.

    Le logger est un objet qui va te servir par la suite pour afficher des messages dans la console, avec automatiquement le nom de ton mod entre crochet au début de message.
    Il te mettra d'afficher les erreurs, ou simplement des informations dans les logs.

    Les classes de proxy te permette quand à elle se séparer la logique client de la logique serveur, très important car si tu mets de la logique client sur des classes communes au client et au serveur, ton mod va crasher lorsqu'il sera installé sur un serveur.



  • Ok ! Merci beaucoup ! Je pense que c'est plus clair, ça va m'aider à comprendre la suite. Une autre chose, tu ne précises pas vraiment pourquoi on passe un "File configFile" en argument de la fonction preInit de la classe proxy common. Est-ce que ça va s'éclaircir par la suite ?


  • Administrateurs

    Il va servir si tu fais un fichier de configuration.
    Si tu ne prévois pas d'avoir de fichier de config, tu n'as pas besoin de cette argument.



  • Ok, je vais le laisser pour l'instant, je verrai s'il me sert plus tard, sinon je le retirerai. Merci beaucoup ! J'ai d'autres questions, mais je vais les poser dans les tutoriels concernés au fur et à mesure que j'avance. (Je les relis et ré-écoute plusieurs fois pour être sûr de ne pas être passé à côté des réponses à mes questions avant de les poser ! ^^)