[Intellij Idea] Actualiser le code en direct (sans redémarrer le jeu)



  • Bonjour à tous !
    Je vais vous expliquer comment installer hotSwapAgent sur votre Intellij Idea !

    À quoi ça sert ?!

    Cela sert à éviter de redémarrer à chaque fois le jeu dès que vous modifiez le code, les modifications seront en direct, ceci permettra de ne pas redémarrer Minecraft à chaque fois que vous avez un petit souci, un oublie, un rajout à faire, une légère modification ou encore pendant que vous essayez de doser/tester certaines fonctionnalités de votre mod.

    Outils

    Nous aurons besoins de 3 choses très important !

    • hotSwapAgent

    Non ce n'est pas un nouveau event ... C'est le nom d'un gros outil qui est à la fois conteneur de plugin, manager de plugin, un registre de plugin ... Bref en sois il gère tout ce qui touche aux plugins.

    • DCEVM

    Non ce n'est pas un éternuement, c'est le nom d'une JVM (Java Virtuel Machine) qui contient une amélioration de l'hotSwapAgent tout est pré-configurer.

    • JAVA 1.8.0_181

    Vous connaissez peut être ? 🙂

    Installation

    Premièrement, vérifiez que vous avez bien Java 1.8.0_181, n'essayez pas avec une autre en vous disant "oh ce n'est pas grave sa passe", car non, ça ne passe pas j'ai essayé ... Mais vous pouvez quand même essayer 🙂
    (Dans le doute j'ai téléchargé le JDK & JRE 181)

    Maintenant il faut télécharger DCEVM et hotSwapAgent
    (Pour ma part j'ai téléchargé "DCEVM-8u181-installer-build2.jar" et "1.4.2-SNAPSHOT (2019-06-26)")

    Vous pouvez ranger dans un endroit le .jar de hotSwapAgent car seulement son chemin nous intéressera. Il sera nécessaire à chaque fois que vous allez lancer le débugger.

    Nous allons devoir utiliser DCEVM, pour cela on va lancer une console CMD en administrateur.

    Maintenez les touches Windows + R, une fois la console ouverte tapez "CMD" puis maintenez une nouvelle fois les touches CTRL + SHIFT + ENTRER

    Nous allons lancer le .jar de DCEVM java -jar "C:\votre-chemin\DCEVM-8u181-installer-build2.jar", (Vous changerez bien sûr le lien vers le dossier n'est-ce pas !) vous devriez avoir un GUI qui s'ouvre de "Dynamic Code Evolution VM installer", vous devriez voir vos versions Java s'afficher, repérez les versions "1.8.0_181" puis sélectionnez et cliquer sur "Install DCEVM as altjvm" pour le JDK et JRE. Pour ma part dans "Installed altjvm" j'ai Yes (25.71-b01-dcevmlight-26)

    Vous pouvez ouvrir Intellij Idea si ce n'est pas déjà fait, dans le cas contraire je vous conseillerais de le relancer !

    Nous avons besoin du plugin hotSwapAgent, rendez vous dans File > Settings > Plugins, puis cherchez (et installez) le plugin "hotSwapAgent" dans le marketplace.

    Maintenant vous pouvez aller dans un projet et faire un double shift, dans le menu qui apparaît vous cochez compiler.automake.allow.when.aoo.running.

    On va ensuite ajouter des arguments Java Arguments, il suffit d'aller dans le fichier gradle.properties et d'y ajouter les arguments suivant à la suite de "-Xmx3G":
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5010 -XX:+UnlockExperimentalVMOptions -javaagent:C:\\votre-chemin\\hotswap-agent-1.4.2-SNAPSHOT.jar -XXaltjvm=dcevm

    N'oubliez pas comme précédemment à changer le chemin du fichier d'accès à votre hotSwapAgent.

    Il ne reste plus qu'à lancer ! Pour les noobs comme moi, il faut cliquer sur le Debug (à droite du bouton Run) et non pas le Run car sinon ça marche beaucoup moins bien.

    Vous n'avez plus qu'à sauvegarder vos changements (CTRL + S) et a retourné en jeu.

    En cas de problème

    En cas de problème il sera difficile de vous aider. Quelques trucs si jamais vous avez des soucis:

    Vérifiez que vous avez bien la variable d'environnement JAVA_HOME présente. (Sinon google "variable environnement java_home")

    Si dès le lancement vous avez une erreur du genre: ERROR: transport error 202 c'est que vous avez une application déjà présente sur le port 5010, vous n'avez qu'à changer le numéro du port dans le Java Argument.

    Si vous avez une erreur ERROR: transport error 202 après avoir sauvegardé le code / recompiler les class, c'est que vous êtes surement en Run et non pas en Debug. (bienvenue au club)

    Vérifiez que vous utilisez bien le bon JDK File > Settings > Build, Execution, Deployment > Build Tools > Gradle et vérifiez dans "Gradle JVM" que vous avez bien Java version "1.8.0_181" !

    Attention à tout ce qui est proxy qui peut causer des soucis, tout ce qui empêche l'accès à 127.0.0.1 et tout autres logiciels pouvant parasiter la connexion local.

    Licence et attribution

    Creative Commons

    Ce tutoriel rédigé par UtopiePhysique et publié sur 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

    retour Sommaire des tutoriels



  • Salut, est-ce possible d'utiliser sur éclipse? Car je ne connais pas IntelifIdea et je trouve éclipse vraiment bien xp



  • Intéressant. Cela fonctionne avec les versions récentes ?



  • @Mysterious_Dev Je développes en 1.15.2 et j'ai aucun soucis.
    C'est surtout pour le "Java" en général et pas forcément pour "Minecraft" donc ça devrait fonctionner avec tout.

    Edit: Finalement pour Eclipse il y à beaucoup plus de choses à faire, je n'ai pas très envie de me pencher dessus, une petite recherche "hotswapagent eclipse setup", bonne chance !



  • Ok merci pour l'info ;).


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonjour,

    Je ne comprends pas l'intérêt de tout cela, il y a déjà du hotswap par défaut en Java, il suffit juste de lancer le jeu en debug depuis son IDE (que ce soit via Eclipse ou IDEA). Qu'apporte de plus toutes ces manipulations ?



  • @robin4002 J'ai essayé il me semble et ça ne fonctionnait pas pour moi 😕

    J'ai peut être râté un truc ... J'ai regardé plusieurs tuto et personne parlait de hotswap par défaut et uniquement des tutos en anglais qui expliquait pour Minecraft sur Intellij Idea.

    J'avais essayé plusieurs trucs sans rien et j'avais rien qui s'actualiser. J'ai lu que par défaut Java ne pouvait auto rafraîchir des class une fois dans la pile.

    #boulet


Log in to reply