1. Afin de faciliter votre navigation sur le site, nous utilisons des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation de cookies. En savoir plus.
  2. Nous vous recommandons fortement de vous inscrire sur le forum pour bénéficier de toutes les fonctionnalités : S'enregistrer !
  3. Il se peut que l'accès au serveur soit compliqué ou que des messages d'erreurs apparaissent pendant la connexion au serveur, nous mettons tout en oeuvre pour vous garantir l'accès en toute circonstances.
    Rejeter la notice

TUTORIEL Créer un mod Minecraft sous Minecraft Forge #1 Préparer et configurer la workspace

Discussion dans 'Développement Forge' créé par mg76, 12 Octobre 2016.

?

Ce tutoriel vous a-t'il plus?

  1. Oui

    82.4%
  2. Non

    0 vote(s)
    0.0%
  3. Avis neutre

    17.6%
  1. mg76

    mg76 Tueur de Zombie
    Membre Actif Ancien

    Inscrit:
    11 Avril 2016
    Messages:
    366
    J'aime reçus:
    125
    Bonjour à toutes et à tous, bienvenue dans la seconde partie de mon tutoriel pour créer un mod basique avec Minecraft Forge. Aujourd'hui nous allons voir comment configurer et préparer la workspace. Bonne lecture!

    Pré-requis:
    Posséder ce qui est mentionné au début du tutoriel #0

    1.Préparer la workspace

    Bien pour commencer, vous allez vous rendre dans le dossier où dans le précédent tutoriel nous avons extrait l'archive contenant les sources de forge, ce dossier doit contenir ces fichiers :

    [​IMG]
    Vous allez ouvrir le fichier build.gradle, vous chercherez la ligne 32 (sur cette ligne il est écrit "mappings = "snapshot_AAAAMMJJ OU stable_X""). Si comme moi vous utilisez la 1.10.2, vous remplacerez "snapshot_AAAAMMJJ"(les lettres en majuscules correspondent consécutivement à l'année, le mois et le jour de publication de la snapshot) par "snapshot_dateDePublicationDeLaDernièreSnapshot". Pour la liste des mappings, c'est ici: http://export.mcpbot.bspk.rs/ .

    [​IMG]
    Dans l'encadré rouge se trouve le nom de la snapshot que je dois utiliser, à droite se trouve le nom de la version de minecraft à laquelle elle correspond.

    Pour faire simple, les mappings sont ceux qui nous permettent de compiler notre mod. Pour les versions 1.9.4 et antérieures de minecraft, toutes les mappings sont des versions stables, leurs noms se présentent donc sous la forme "stable_X". Pour la 1.10 et la 1.10.2, ce sont uniquement des snapshots pour le moment, donc leurs noms se présentent sous la forme "snapshot_AAAAMMJJ".
    Code:
    minecraft {
        version = "1.10.2-12.18.2.2098"
        runDir = "run"
      
        // the mappings can be changed at any time, and must be in the following format.
        // snapshot_YYYYMMDD   snapshot are built nightly.
        // stable_#            stables are built at the discretion of the MCP team.
        // Use non-default mappings at your own risk. they may not allways work.
        // simply re-run your setup task after changing the mappings to update your workspace.
        mappings = "snapshot_20161012"
        // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
    }
    
    Une fois le nom des mappings correspondant à votre version de minecraft écrit, allez aux lignes 14;15;16 et faîtes ce qui suit:
    changez le "1.0" de la ligne 14 par "1.0.0"(ceci est facultatif, mais permet d'avoir un numéro de version supplémentaire si jamais vous faîtes une mise à jour consacrée à l'élimination des bugs) à la ligne 15 vous changerez "com.yourname.modid" par CeQueVousVoulez (par convention il est mieux de mettre une abréviation correspondant à votre pays, tel que "fr" pour France, "us" pour Etats-Unis, etc.). VotrePseudoOuNom/NomDeDomaine.LeNomDeVotreMod, le tout en minuscule. Pour finir, à la ligne 16, vous changerez "modid" par le nom de votre mod en minuscule.

    Code:
    version = "1.0.0"
    group= "fr.mg76.modtutoriel" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
    archivesBaseName = "modtutoriel"
    
    Ensuite vous allez maintenir votre touche SHIFT et faire un clic droit dans le dossier, vous cliquerez sur "ouvrir une fenêtre de commandes ici":

    [​IMG]
    Bien, maintenant que l'invite de commande est ouverte, vous allez entrer cette commande :
    Code:
    gradlew task
    cette commande va permettre à la fois de voir les différentes commandes possibles pour faire du débug , le setup, etc. et de télécharger des fichiers de gradle s'ils n'étaient pas présent auparavant sur votre machine.

    Une fois le téléchargement des fichiers terminé, l'invite de commandes vous affichera ceci :
    [​IMG]

    C'est donc la fameuse liste de toutes les commandes que nous pourrons utiliser pour compiler notre mod, faire du débug, clean les fichiers d'éclipse, etc. . Pour le moment ce qui nous intéresse, c'est de préparer notre workspace, donc vous allez entrer cette commande :
    Code:
    gradlew -Dorg.gradle.jvmargs=-Xmx2048M setupDecompWorkspace
    Concrètement, cette commande va nous permettre de préparer la workspace tout en dé-compilant les sources de Minecraft, sources que l'on ne pourra pas modifier mais consulter, ce qui nous sera utile pour voir les "class" que nous pouvons importer, s'inspirer du code source du jeu si l'on veut créer par exemple une entité ayant des caractéristiques similaires à celles déjà présentent dans le jeu. Les arguments qui ont été rajoutés à la commande permettent de limiter la RAM allouer au setup pour éviter les out of memory (si jamais vous avez un pc avec 2Go de RAM, remplacer le "2048" par "1024"). La durée du setup peut varier selon votre connexion internet (pour moi cela aura pris environ 15min).

    Une fois que vous aurez vu passer le message "build successfull", vous pouvez passer à la suite. Si vous voyez écrit "build failed" essayez ces solutions dans l'ordre :

    - vérifier que votre connexion internet est suffisante et qu'elle n'a pas subit de coupure
    - vérifier qu'il n'y avait pas de programmes prenant beaucoup sur les ressources systèmes qui tournaient en arrière plan.
    Si après avoir vérifié cela, ça ne fonctionne toujours pas, essayez cette commande:
    Code:
    gradlew setupDecompWorkspace --refresh-dependencies
    NOTE: si cela ne marche toujours pas et que vous voulez avoir une installation "propre", aller dans le dossier du nom de votre session, supprimez le dossier "gradle" et recommencer ce tutoriel depuis la partie où l'on a entré la commande "gradlew task".

    Maintenant il nous faut entrer une dernière commande qui va nous permettre de générer les fichiers pour éclipse, cette commande est la suivante :
    Code:
    gradlew eclipse
    Maintenant que tout cela est fait, nous allons pouvoir passer sur éclipse, mais auparavant vous pouvez quitter l'invite de commande en entrant la commande "exit". La 1ère fois que vous démarrerez éclipse, vous aurez cette fenêtre :
    [​IMG]

    Vous cliquerez sur "browse..." et vous chercherez le dossier "eclipse" se trouvant dans le dossier où nous avons extrait les sources de forge :
    [​IMG]

    une fois ceci fait, vous pouvez cocher si vous voulez la case "use this as default and do not ask again" si vous êtes sûr(e) de ne pas changer l'emplacement de votre workspace entre deux, car la workspace que nous utilisons est dédié au développement d'un mod Minecraft, pas d'un autre programme/mod pour un autre jeu. Ensuite cliquez sur "ok".
    Ensuite nous arrivons donc enfin sur l'interface d'éclipse. La 1ère fois, vous aurez une page avec des liens vous redirigeant vers des tutoriels pour mieux connaître le logiciel(en anglais), etc.. Pour enlevez cette page, décochez la case en bas à droite "Always show Welcome at start up", puis cliquez sur la croix en haut à gauche.
    [​IMG]

    Maintenant nous voici enfin sur l'interface du logiciel !

    Pour commencer, vous allez sélectionner "MDKexemple", faire un clic droit, passer votre souris sur "refactor" et cliquer sur "rename".

    [​IMG]

    Vous allez avoir cette fenêtre qui va s'ouvrir :

    [​IMG]

    A la place de "MDKexemple", vous allez mettre le nom de votre mod, par exemple, moi je vais mettre ModTutoriel, puis vous cliquerez sur "ok".

    Maintenant, dans la barre du haut, vous allez passer votre souris sur "windows" et cliquer sur "préférences" et une fenêtre va s'ouvrir:
    [​IMG]

    Vous allez aller dans general>workspace et dans l'encadré "Text file encoding" vous allez cocher "other" et sélectionnez "UTF-8"(c'est très important, sinon si dans votre mod il y a des objets avec un nom avec des accents, cela évitera que ça donne un nom bizarre) puis vous cliquerez sur "ok".

    [​IMG]

    Bien bien bien, maintenant que notre workspace est prête, êtes-vous prêt(e) à passer à la partie la plus intéressante et la plus attendue ? Et c'est parti pour créer notre première "class" !

    Bien, si vous lisez ceci, c'est que vous voulez continuer et non, je n'ai pas mal écrit le mot "class", mais c'est bien le nom donné aux fichiers contenant votre code. Commencez par cliquer sur la flèche à gauche du nom de votre mod et pouf, vous pouvez voir les fichiers de votre projet ainsi que du dossier où se trouve notre workspace apparaître.
    Pour commencer, vous allez cliquer sur la flèche à gauche de "src/main/java" et vous allez supprimer "com.example.examplemod", vous cliquerez sur "ok" quand il vous le demandera.

    [​IMG]

    Ensuite vous allez faire clic droit sur "main/java/src" , vous passerez votre souris sur "new" et vous cliquerez sur "package".

    [​IMG]

    Cette fenêtre s'ouvrira :

    [​IMG]

    Pour le nom il faut absolument que vous mettiez le même que celui que vous aviez mis dans le build.gradle suivi de common, pour moi c'est donc "fr.mg76.modtutoriel.common". Ensuite vous pouvez cliquer sur "Finish".

    Ensuite, clic droit sur package, passez votre souris sur new et cliquez sur "class"

    [​IMG]

    Vous allez avoir cette fenêtre :

    [​IMG]

    Dans name vous écrirez soit le nom de votre mod, soit "Main" (cela veut dire "Principal" en anglais), sachez qu'il ne faut ni accents, ni caractères spéciaux dans le nom de votre class, ce qui pour moi donnera donc "ModTutoriel". Ensuite vous pouvez cliquer sur ok. Ce que nous venons de créer sera la class principale de notre mod, c'est dans celle-ci que seront déclarés tous les autres éléments de notre mod. Vous pouvez admirer votre première class que vous venez de créer :p

    [​IMG]

    Maintenant les choses sérieuses vont commencer, mais avant tout voici quelques petits points sur le java:
    - Mettre // devant une phrase permet de dire à la JVM d'ignorer ce qui est écrit à cette ligne et donc de commenter son code pour s'y retrouver.
    - Il est important de mettre un ; pour terminer correctement la déclaration d'une variable, etc.
    - Le raccourci CTRL+SHIFT+O permet d'importer les class manquantes pour que votre code fonctionne.

    À présent, entre les accolades fermantes vous allez écrire ceci:
    Code:
    public static final String MODID = "NOMdeVotreMOD";
     public static final String VERSION = "1.0.0";
    
    Puis à la ligne 2 vous allez écrire(au dessus de la déclaration de votre class):
    Code:
    @Mod(modid = NomDeVotreClass.MODID, version = NomDeVotreClass.VERSION)
    Vous remplacerez "NomDeVotreClass" par le nom de votre class principale et "NOMdeVotreMODID" par le modid de votre mod (c'est ce que nous avons mis dans le build.gradle ligne 16), donc pour moi le nom de ma class est "ModTutoriel" et le nom de mon modid "modtutoriel".

    puis vous appuierez simultanément sur les touches CTRL+SHIFT+O

    Ce qui pour moi donnera cela :
    Code:
    package fr.mg76.modtutoriel.common;
    
    import net.minecraftforge.fml.common.Mod;
    
    @Mod(modid = ModTutoriel.MODID, version = ModTutoriel.VERSION)
    
    public class ModTutoriel {
      
        public static final String MODID = "modtutoriel";
        public static final String VERSION = "1.0.0";
    
    
    }
    
    Ce que nous venons de faire nous facilitera la vie lorsque nous aurons à déclarer les autres class de notre mod dans la class principale.

    En dessous de ce que je vous ai fait écrire auparavant entre les accolades fermantes, vous allez écrire:
    Code:
    @Instance(MODID)
        public static NomDeVotreClass Instance;
    
    public static Logger logger;
    
    Puis vous irez à la ligne et vous écrirez cela:
    Code:
        @EventHandler
        public void preInit(FMLPreInitializationEvent event)
        {
        logger = event.getModLog();
        } 
        @EventHandler
        public void init(FMLInitializationEvent event)
        {
    
        }
        @EventHandler
        public void postInit(FMLPostInitializationEvent event)
        {
    
        }
    
    N'oubliez pas de faire CTRL+SHIFT+O pour importer ce qu'il manque.
    Ce que nous venons de faire est de créer respectivement les events de pré-initialisation, d'initialisation et de post-initialisation de notre mod.

    Voici à quoi devrait ressembler votre class au final :

    Code:
    package fr.mg76.modtutoriel.common;
    
    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.event.FMLInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
    
    @Mod(modid = ModTutoriel.MODID, version = ModTutoriel.VERSION)
    
    public class ModTutoriel {
      
        public static final String MODID = "modtutoriel";
        public static final String VERSION = "1.0.0";
    
        @Instance(MODID)
        public static ModTutoriel Instance;
      
        public static Logger logger;
      
        @EventHandler
        public void preInit(FMLPreInitializationEvent event)
        {
    
        } 
        @EventHandler
        public void init(FMLInitializationEvent event)
        {
          
        }
        @EventHandler
        public void postInit(FMLPostInitializationEvent event)
        {
      
        }
    
    }
    
    Ensuite nous allons éditer le "mcmod.info", il se trouve dans src/main/ressources:

    [​IMG]

    Vous allez double cliquez dessus pour l'ouvrir et voici ce que vous aurez dedans:

    Code:
    [
    {
      "modid": "examplemod",
      "name": "Example Mod",
      "description": "Example placeholder mod.",
      "version": "${version}",
      "mcversion": "${mcversion}",
      "url": "",
      "updateUrl": "",
      "authorList": ["ExampleDude"],
      "credits": "The Forge and FML guys, for making this example",
      "logoFile": "",
      "screenshots": [],
      "dependencies": []
    }
    ]
    
    A la ligne "modid", vous allez remplacer "examplemod" par le modid de votre mod (pour moi c'est donc modtutoriel), à la ligne "name", vous mettrez le nom de votre mod, à la ligne "description", vous mettrez une petite description de votre mod, à la ligne "authorList" vous mettrez votre pseudo et à la ligne "credits", vous pouvez mettre qui vous a aidé à créer le mod, avec quoi vous l'avez fait, etc. . Ce qui pour moi donne:

    Code:
    [
    {
      "modid": "modtutoriel",
      "name": "ModTutoriel",
      "description": "Mod pour un tutoriel",
      "version": "${version}",
      "mcversion": "${mcversion}",
      "url": "",
      "updateUrl": "",
      "authorList": ["mg76"],
      "credits": "Mod créer pour la communauté du serveur UniCraft",
      "logoFile": "",
      "screenshots": [],
      "dependencies": []
    }
    ]
    
    Ensuite vous pouvez tout enregistrer et pour finir nous allons lancer minecraft pour voir si forge détecte bien votre mod :), pour faire cela il suffit de cliquer sur la petite flèche verte dans la barre d'outils :
    [​IMG]

    Une fois Minecraft lancé, vous pouvez cliquer sur "mods" et tadaa, votre mod apparaît bien dans la liste!
    [​IMG]

    J'espère que ce tutoriel vous aura plus, n'hésitez pas à laisser votre avis en commentaire et je vous dit à la prochaine pour le prochain tutoriel !
     
    • J'aime J'aime x 1
    • D'accord D'accord x 1
    • Informatif Informatif x 1
    • Utile Utile x 1
    #1
  2. Luca008

    Luca008 Didactel008 :3 Funcky ❤
    Membre Actif Ancien

    Inscrit:
    6 Février 2016
    Messages:
    662
    J'aime reçus:
    614
    Luca008
    Merci grâce à ton tuto j'ai réussi à passer Éclipse en UTF-8 ^^
    XD
     
    #2
  3. mg76

    mg76 Tueur de Zombie
    Membre Actif Ancien

    Inscrit:
    11 Avril 2016
    Messages:
    366
    J'aime reçus:
    125
    Content si tu a pu apprendre au moins cela x)
     
    • J'aime J'aime x 1
    #3
  4. Luca008

    Luca008 Didactel008 :3 Funcky ❤
    Membre Actif Ancien

    Inscrit:
    6 Février 2016
    Messages:
    662
    J'aime reçus:
    614
    Luca008
    Je code avec l'api spigot pour des plugins et bien evidemment bukkit fait tout faire kk comme d'abb, quand tu créer un fichier config, que tu louvre avec notepad++ que tu convertis en utf-8 pour pouvoir mettre des accents etc, que tu reload ta config et que Bukkit remet la config en ANSI tout seul --'

    (Oui je viens faire mon coup de gueule sur ton tuto de mod XD), (Mais c'est pas H.S, car je parle de utf x) )
     
    #4
  5. mg76

    mg76 Tueur de Zombie
    Membre Actif Ancien

    Inscrit:
    11 Avril 2016
    Messages:
    366
    J'aime reçus:
    125
    Effectivement Bukkit a l'air casse pied sur ce point x)
     
    • D'accord D'accord x 1
    #5
  6. JordGame

    JordGame Petit Nouveau

    Inscrit:
    19 Février 2017
    Messages:
    1
    J'aime reçus:
    0
    euuuh ouais mais forge ne detecte pas mon mod
    et je comprend pas vraiment pourquoi
     
    #6
  7. SpyLX

    SpyLX Petit Nouveau

    Inscrit:
    4 Mai 2017
    Messages:
    1
    J'aime reçus:
    0
    Vraiment cool ce tuto, tu m'a bien aidé pour débuter, mais j'ai un petit problème, pourquoi quand je change de workspace le file explorer à gauche reste l'ancien workspace ?
    Je comprend pas ce délire, comment faire plusieurs projets sur le même mdk ?
     
    #7
  8. FireWolf_90

    FireWolf_90 Petit Nouveau

    Inscrit:
    28 Octobre 2017
    Messages:
    1
    J'aime reçus:
    0
    moi j ai pas le package expolrer peut tu m aider stp
     
    #8
  9. ManToa

    ManToa Petit Nouveau

    Inscrit:
    27 Novembre 2017
    Messages:
    6
    J'aime reçus:
    1
    Génial !

    J'ai suivis ton Tuto de A à Z et tout à fonctionné à la perfection pour Minecraft 1.12.2 !

    Juste quelques précisions à faire pour de futurs intéressés:

    - Bien prendre le JDK 8 (La version la plus récente) car ça ne fonctionne pas avec JDK 9.
    - Lors du téléchargement de Forge, bien sélectionner la "version" MDK (j'avais pris "windows installer" et ça marchait pas)

    Sinon pour le reste tout est ok.

    J'avais encore une question, comptes-tu faire une suite à ce Tuto ? Une suite où tu nous montres comment commencer à "creer" notre mod.

    Personnellement, j'aimerais juste modifier certaines choses au jeu, mais ne rien ajouter. Je ne sais juste pas par où commencer, où localiser les fichiers dont j'ai besoin etc

    (J'aimerais empêcher un GUI de s'ouvrir, mais je sais pas où aller modifier le code)
    Je serais ravi d'avoir une suite :)
     
    #9