Installer et configurer l'espace de travail de Forge


  • Administrateurs

    youtubeCe tutoriel est également disponible en vidéo.

    Sommaire

    Introduction

    Dans ce tutoriel nous allons installer l'espace de travail de Forge pour Eclipse à l'aide de Forge Gradle.

    Pré-requis

    Télécharger et configurer le MDK (Mod Development Kit)

    Rendez-vous sur le site de téléchargement de Forge et prenez au choix soit la version recommandée soit la dernière version disponible. Passez la souris sur la version de Minecraft pour faire apparaître les sous versions (par exemple passez la souris sur 1.8 pour voir le bouton 1.8, le bouton 1.8.8 et le bouton 1.8.9) puis cliquez sur la version que Minecraft que vous souhaitez modder. Ensuite cliquez sur MDK, la page sponsorisée va s'ouvrir. Au bout de 5 secondes cliquez en haut à droite sur "skip" pour lancer le téléchargement.

    Une fois le téléchargement fini il faut extraire l'archive dans le dossier de votre choix (on appellera par la suite ce dossier le dossier de Forge ou du mdk). Il faut absolument éviter les espaces et les caractères spéciaux (accent, point d'exclamation, etc.) dans le chemin de ce dossier, ils sont sources de problème (dossier vide une fois qu'on arrive sur Eclipse).
    Ouvrez le fichier build.gradle avec un éditeur de texte. Nous allons modifier les trois lignes suivantes :

    version = "1.0"
    group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
    archivesBaseName = "modid"
    

    La première ligne est la version de votre mod. Vous pouvez laisser 1.0 ou mettre autre chose.
    Le groupe fonctionne comme pour le nom des packages (voir début du tutoriel sur la base de Java). Dans mon cas ce sera fr.minecraftforgefrance.modtutoriel.
    Et pour finir archivesBaseName est le nom du jar de votre mod. Il y sera ajouté -<version du mod>.jar lors de la compilation. Dans mon cas ce sera ModTutoriel.

    Dans la partie minecraft, il est possible de changer la version de Forge. Cela vous évitera de re-télécharger le MDK à chaque fois. Il faudra refaire une installation (voir ci-dessous) après changement de cette valeur.
    Vous pouvez aussi y changer les mappings. Les mappings sont des listes de correspondance qui associent les func_xxxx, field_xxxx et par_xxxx incompréhensibles à des noms anglais compréhensibles.
    Si vous êtes en 1.8.9 utilisez la version 22 :

       mappings = "stable_22"
    

    Pour la 1.9.4, la version 26 :

       mappings = "stable_26"
    

    Pour la 1.10.2, la version 29 :

       mappings = "stable_29"
    

    Pour la 1.11.2, la version 32

       mappings = "stable_32"
    

    Pour la 1.11.2 je vous conseilles d'utiliser les mappings les plus récentes possible :

       mappings = "snapshot_20180611"
    

    le format de la date est <année><mois><jour>.
    La liste des mappings est disponible ici : http://export.mcpbot.bspk.rs/
    Une nouvelle snapshot est généré chaque jour à 3h.

    Il faut refaire une installation à chaque changement de version des mappings, pour cette raison je vous conseille de les mettre à jour en même temps que Forge pour faire d'une pierre deux coups (inutile de les mettre à jour chaque jour).

    Pour information les mappings se trouvent dans le dossier <dossier de votre session>\.gradle\caches\minecraft\de\oceanlabs\mcp\mcp_snapshot\<version des mappings>. Ce sont les fichiers fields.csv, methods.csv et params.csv.
    (le dossier de votre session est C:\Users\<nom de la session>\ sous Windows, /home/<nom de la session> sous Linux /Users/<nom de la session>/ sous OS X).

    Installation du MDK

    Windows :

    Avec l'explorateur de fichier ouvrez le dossier de Forge. Appuyez sur la touche shift de votre clavier et en même temps faites un clic droit dans le dossier. Dans le menu déroulant il devrait y avoir une option en plus nommée "ouvrir une fenêtre de commande ici", cliquez dessus. L'invite de commande de Windows va s'ouvrir.
    Entrez la commande suivante :

    .\gradlew setupDecompWorkspace
    

    Une fois terminé lancez la commande suivante pour préparer l'espace de travail pour Eclipse :

    .\gradlew eclipse
    

    L'installation est maintenant terminée.

    Linux et MacOS :

    Ouvrez un terminal et tapez "cd " (avec l'espace) puis glissez dans le terminal le dossier de Forge. Le chemin complet de ce dernier devrait s'ajouter, cliquez maintenant sur entrée. (sous certaines distributions Linux il suffit de faire un clic droit dans le dossier et une option nommée "ouvrir un terminal ici" permet d'ouvrir le terminal directement dans le dossier).
    Entrez la commande suivante :

    ./gradlew setupDecompWorkspace
    

    Une fois terminé lancez la commande suivante pour préparer l'espace de travail pour Eclipse :

    ./gradlew eclipse
    

    L'installation est maintenant terminée.

    Configuration de l'espace de travail

    Lancez Eclipse et choisissez comme espace de travail le dossier eclipse qui se trouve dans le dossier de Forge.
    Une fois Eclipse lancé, cliquez sur "Window" puis "Preferences".
    Déroulez le menu "General" ainsi que le menu "Editors". Cliquez sur "Text Editors" (sans le dérouler) et cochez la case "Show line numbers". Comme son nom l'indique cela va afficher les numéros de ligne dans l'éditeur, ce qui peut-être très utile pour les rapports de crash (la ligne qui cause problème y sera indiquée).
    Cliquez sur "Workspace" (à nouveau sans dérouler le menu). Dans "Text file encoding" cochez "other" et choisissez "UTF-8". C'est très important sinon vous allez avoir des problèmes avec les accents ou autres caractères non alpha-numérique (UTF-8 est déjà utilisé par défaut sous Linux).

    Dans le menu "Java" -> "Code style" -> "Formatter" il est possible de créer son propre formateur de code si vous n'aimez pas celui de d'Eclipse. Pour formater votre code il suffit d'appuyer sur ctrl + shift + f, c'est très important afin d'avoir un code lisible. Si vous voulez utiliser le même formateur que moi, il est disponible ici (il suffit l'extraire puis l'importer dans Eclipse).
    Cliquez sur "OK" pour fermer la page.

    Dernier réglage plutôt utile : utilisez votre compte Minecraft directement dans Eclipse. Par défaut lorsque vous allez lancer le jeu vous allez avoir un pseudo aléatoire du type player+un nombre et vous allez être en mode offline.
    Cliquez sur la flèche qui pointe vers le bas à droite de la flèche vers qui sert à lancer le programme et sélectionnez "Run Configurations…". Sélectionnez le premier "client" à gauche (si pas déjà sélectionné par défaut) et cliquez sur l'onglet "Arguments".
    Dans la case "Program arguments:" ajoutez :

    --username votre_adresse_mail --password votre_mot_de_passe
    

    La classe GradleStart de forge va automatiquement vous identifier et vous aurez donc votre pseudo et votre compte premium (donc possibilité de se connecter aux serveurs premium et vous aurez votre skin).
    Vous pouvez également mettre seulement --username unPseudo pour changer le pseudo sans utiliser votre compte premium (mais du-coup impossible de se connecter aux serveurs premium et pas de skin).

    En vidéo

    Youtube Video

    Crédits

    Rédaction :

    Correction :

    cc
    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



  • c'est bien pour la 1.9 çà , on aura des tuto sur la 1.9 un jour ou pas ?



  • @'Asmath':

    c'est bien pour la 1.9 çà , on aura des tuto sur la 1.9 un jour ou pas ?

    Oui c'est pour la 1.9 mais attend pour les tuto en 1.9 la 1.9 est toute récente attend que le staff de MFF en prend connaissance pour faire des tutoriel en 1.9



  • pour la deuxième partie de ma phrase merci mais pour la première je voulais dire : c'est cool pour les mod 1.9 çà


  • Administrateurs

    J'attends les premiers build recommandé 1.9 avant de passer aux tutoriels 1.9.



  • Alors j'ai un petit problème pour passer de 1.8 à 1.8.9, gradlew me sort un FileNotFoundException (log en pièce jointe) sur un fichier qui pourtant existe, je sais pas comment résoudre ce problème  😕


  • Administrateurs

    tu peux lancer cette commande ?
    gradlew -Dorg.gradle.jvmargs=-Xmx2048M setupDecompWorkspace –stacktrace



  • Okay, voici le log obtenu

    C:\Users\aymer\.gradle\caches\minecraft\net\minecraftforge\forge\1.8.9-11.15.1.1722\userdev\dev.json could not be parsed
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    A problem occurred configuring root project 'Modding 1.8'.
    > java.io.FileNotFoundException: Inherited json file (1.8.9) not found! Maybe you are running in offline mode?
    
    * Try:
    Run with –info or --debug option to get more log output.
    
    * Exception is:
    org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project 'Modding 1.8'.
    at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:79)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:74)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:61)
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:491)
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:89)
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:42)
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
    at org.gradle.initialization.DefaultGradleLauncher$2.run(DefaultGradleLauncher.java:126)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:123)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:100)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:94)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:94)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:40)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:71)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: Inherited json file (1.8.9) not found! Maybe you are running in offline mode?
    at com.google.common.base.Throwables.propagate(Throwables.java:160)
    at net.minecraftforge.gradle.common.BasePlugin.parseAndStoreVersion(BasePlugin.java:687)
    at net.minecraftforge.gradle.user.patcherUser.PatcherUserBasePlugin.afterEvaluate(PatcherUserBasePlugin.java:171)
    at net.minecraftforge.gradle.user.patcherUser.forge.ForgePlugin.afterEvaluate(ForgePlugin.java:137)
    at net.minecraftforge.gradle.common.BasePlugin$2.execute(BasePlugin.java:182)
    at net.minecraftforge.gradle.common.BasePlugin$2.execute(BasePlugin.java:174)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
    at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy10.afterEvaluate(Unknown Source)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:67)
    ... 52 more
    Caused by: java.io.FileNotFoundException: Inherited json file (1.8.9) not found! Maybe you are running in offline mode?
    at net.minecraftforge.gradle.util.json.JsonFactory.loadVersion(JsonFactory.java:91)
    at net.minecraftforge.gradle.common.BasePlugin.parseAndStoreVersion(BasePlugin.java:682)
    ... 64 more
    
    BUILD FAILED
    
    Total time: 1 mins 21.782 secs
    
    

  • Administrateurs

    Tu peux m'envoyer ton fichier build.gradle ?



  • Okay :

    
    // for people who want stable
    plugins {
       id "net.minecraftforge.gradle.forge" version "2.0.2"
    }
    
    version = "0.2.0-BETA-MC-1.8-BUILD19"
    group= "net.Energy.mod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
    archivesBaseName = "Energy"
    
    minecraft {
       //version = "1.8-11.14.4.1563" Version 1.8
    version = "1.8.9-11.15.1.1722"
       runDir = "eclipse"
    
       // 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 = "stable_22"
    }
    
    dependencies {
       // you may put jars on which you depend on in ./libs
       // or you may define them like so..
       //compile "some.group:artifact:version:classifier"
       //compile "some.group:artifact:version"
    
       // real examples
       //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
       //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
    
       compile fileTree(dir: 'lib', include: '*.jar')
    
       // for more info…
       // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
       // http://www.gradle.org/docs/current/userguide/dependency_management.html
    
    }
    
    processResources
    {
       // this will ensure that this task is redone when the versions change.
       inputs.property "version", project.version
       inputs.property "mcversion", project.minecraft.version
    
       // replace stuff in mcmod.info, nothing else
       from(sourceSets.main.resources.srcDirs) {
           include 'mcmod.info'
    
           // replace version and mcversion
           expand 'version':project.version, 'mcversion':project.minecraft.version
       }
    
       // copy everything else, thats not the mcmod.info
       from(sourceSets.main.resources.srcDirs) {
           exclude 'mcmod.info'
       }
    }
    
    

  • Administrateurs

    Ah tu es sur forge gradle stable 2.0.2, c'est pour ça que ça ne fonctionne pas.
    Il faut être sur la snapshot 2.1.

    Ajoutes ça en haut du fichier :

    buildscript {
    repositories {
    jcenter()
    maven {
    name = "forge"
    url = "http://files.minecraftforge.net/maven"
    }
    }
    dependencies {
    classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
    }
    }
    apply plugin: 'net.minecraftforge.gradle.forge'
    

    Et commente les trois lignes "plugins { … }"



  • ça marche (enfin), merci 🙂 , ça faisais longtemps que je voulais passer en 1.8.9.

    Sauf que là, ça fait 10min qu'il est bloqué à 56%, juste après le téléchargement de lwjgl pour mac…Je pense pas que ce soit normal. 😢
    EDIT : j'ai coupé et relancé et il me dit que c'est un problème de mémoire, je relance avec la commande qui va bien.



  • Bonjour.
    J'ai besoin d'aide s'il vous plaie.
    Je voudrai coder un mod en 1.7 ou 1.6, le problème c'est que sur le site de Forge dans ces versions il n'y a plus de "MDK" comme présenter dans le tutoriel.
    Je voudrai donc savoir ce que je dois télécharger a la place du "MDK" ?

    Merci.


  • Administrateurs

    L'équivalent c'est src.
    Et il y a ce tutoriel pour la 1.7.10 : http://www.minecraftforgefrance.fr/showthread.php?tid=566



  • @'robin4002':

    L'équivalent c'est src.
    Et il y a ce tutoriel pour la 1.7.10 : http://www.minecraftforgefrance.fr/showthread.php?tid=566

    Merci beaucoup 🙂




  • Bonjour,


    Problème avec la commande à entrer sur cmd : gradlew setupDecompWorkspace


    Merci de bien vouloir m'aider.




  • Si vous rencontrez un problème de mémoire, réessayez avec la commande suivante :

    ./gradlew -Dorg.gradle.jvmargs=-Xmx2048M setupDecompWorkspace
    

  • Administrateurs

    Je vais carrément supprimé la première ligne du tutoriel et ne laisser que celle-ci.



  • @'robin4002':

    Je vais carrément supprimé la première ligne du tutoriel et ne laisser que celle-ci.

    La deuxième ligne ne fonctionne pas non plus, pièce jointe.



  • Tu n'as que 2 Go de RAM ? Dans ce cas, tu ne peux pas modder en 1.8.8 et plus.