MFF

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

    Configurer l'espace de travail de Forge pour Kotlin

    Planifier Épinglé Verrouillé Déplacé Autres langages
    1.9
    8 Messages 4 Publieurs 3.7k Vues 1 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.
    • Mokona78M Hors-ligne
      Mokona78
      dernière édition par robin4002

      Sommaire

      • Introduction
      • Pré-requis
      • Compilateur
      • Hello Kotlin
      • Ajouter le support Kotlin à Gradle
      • Vérification
      • Résultat
      • En vidéo
      • Crédits

      Introduction

      Ce tutoriel vous proposer d’adapter votre environnement de travail pour utiliser le langage de programmation Kotlin dans vos Mod Minecraft.

      Pré-requis

      • Installer les logiciels nécessaire au modding forge
      • Installer et configurer l’espace de travail de Forge

      Compilateur Kotlin

      Afin d’utiliser le langage de programmation Kotlin, vous devez utiliser un environnement de programmation adapté.

      • Il est possible d’utiliser Eclipse Luna avec un plugin en développement, dont les instructions sont détaillées sur le site de Kotlin.
      • Il est aussi possible, et cela sera mon cas, d’utiliser IntelliJ IDEA, qui possède un support avancé de Kotlin.

      Hello Kotlin

      Avant de vous lancer dans la programmation de Mod, je vous conseille de vérifier qu’un programme simple en Kotlin se compile et lance bien depuis votre environnement.

      Avec IntelliJ IDEA 2016.1, voici les étapes à suivre. Tout d’abord créer un nouveau projet Java avec support Kotlin.

      Dans ce nouveau projet, donner les informations concernant l’environnement Java et le compilateur Kotlin utilisé. Il est possible que le « Project SDK » soit vide si vous créez un projet pour la première fois. Sélectionnez « New… », puis « JDK » et pointez vers le répertoire contenant une installation du Java Developement Kit sur votre ordinateur.

      Cochez l’option « Kotlin (Java) ».

      Si « Use library: » est vide, appuyez sur « Create… », sélectionnez « Copy to: » et laissez le reste par défaut. Confirmez avec Ok.

      Puis confirmez cette page de configuration avec « Next »

      Sur la page suivante, entrez le « Project name » et le « Project location », respectivement le nom de votre projet et son emplacement sur votre ordinateur.

      Confirmez la création du projet avec « Finish »

      Depuis la vue principale de l’environnement, créez un nouveau fichier dans le répertoire « src » en cliquant droit sur « src », et sélectionnant « New » puis « Kotlin File/Class ».

      J’appelle mon fichier PremierTest, et je précise que c’est un fichier libre, et non un template de classe.

      Un fichier PremierTest.kt est à présent présent dans le répertoire « src ». Ajoutez-y le code suivant.

      fun main(args: Array<string>) {
         println("Hello Kotlin!")
      }
      

      Compilez le projet.

      Puis définissez une cible de lancement en appuyant sur la petite flêche vers le bas à côté de la compilation. Puis « Edit Configurations ». Avec la croix verte, ajoutez une nouvelle configuration de type « Kotlin », que vous nommerez comme vous le voulez (je la nomme Launch dans l’écran suivant).

      La classe principale (« Main class ») est dans mon cas PremierTestKt. Cette classe est générée automatiquement par le compilateur Kotlin en se basant sur le nom du fichier. Puisque mon fichier se nomme PremierTest.kt, la classe générée se nomme PremierTestKt.

      Validez avec Ok.

      L’icône de lancement (flèche vers la droite est à présent disponible). Appuyez dessus, attendez un moment la fin de la compilation, et si tout s’est bien passé, admirez la sortie dans le terminal :

      Vous avez une chaîne de compilation Kotlin qui fonctionne.

      Ajouter le support Kotlin à Gradle

      Il est temps à présent d’intégrer le support de Kotlin au kot de développement Forge.

      Le début de l’installation de l’environnement suit la même procédure que le tutoriel Installer et configurer l’espace de travail de Forge jusqu’au moment où il est indiqué :

      gradlew -Dorg.gradle.jvmargs=-Xmx2048M setupDecompWorkspace
      

      Ne le faites pas tout de suite !

      Modifions d’abord le fichier build.gradle afin de lui ajouter un support Kotlin pour le développement. On ajoute tout d’abord une dépendance à Kotlin, en précisant le version utilisée. En effet, Kotlin est un langage accompagné d’un environnement qui étend et adapte l’environnement Java.

      buildscript {
      
          […]
      
          ext.kotlin_version = '1.0.2'
      
          dependencies {
              classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
              classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
          }
      }
      

      Kotlin nécessite aussi l’utilisation d’un plugin

      apply plugin: 'kotlin'
      apply plugin: 'net.minecraftforge.gradle.forge'
      

      Ensuite, reprenez les opérations habituelles avec:

      gradlew -Dorg.gradle.jvmargs=-Xmx2048M setupDecompWorkspace
      

      Puis, si vous utilisez Eclipse:

      gradlew eclipse
      

      ou bien, si vous utilisez IntelliJ IDEA:

      gradlew idea
      

      Ceci est suffisant pour ajouter du Kotlin à votre projet, le tester, mais pas pour le construire et le distribuer correctement. En effet, si vous publiez dans votre Mod l’environnement Kotlin, il pourra entrer en conflit avec d’autres mods utilisant Kotlin. Nous verrons ça dans un autre tutoriel. En attendant, il vous est possible de tester votre mod localement.

      Ce n’est pas non plus suffisant pour construire un Mod entièrement avec Kotlin, nous avons besoin d’avoir la classe principale en Java. Nous verrons comment faire du 100% Kotlin dans un autre tutoriel.

      Fichier Gradle complet sur GitHub.

      Vérification

      Afin de vérifier que la chaîne de compilation Kotlin fonctionne et est intégrée à votre Mod, nous allons ajouter un fichier en Kotlin qui contiendra une classe. Nous allons construire une instance de cette classe avec un Logger en paramètre, puis appeler une méthode qui affichera l’Id et la version du Mod dans le logger.

      Tout d’abord, je crée une classe de base d’un module, comme indiqué dans Créer la base de son mod (lecture optionnelle). Pour cela, je lance mon environnement de programmation (IntelliJ IDEA) et j’ouvre le projet qui a été crée à l’étape précédente grâce à Gradle.

      J’utilise les outils de renommages pour changer le nom du package et de la classe de base avec de les faire correspondre à mon Mod et j’ajoute la récupération de l’instance de Logger dans la méthode preInit().

      Cela donne le code de base suivant.

      package org.puupuu.kotlinbasedmod;
      
      import net.minecraftforge.fml.common.Mod;
      import net.minecraftforge.fml.common.Mod.EventHandler;
      import net.minecraftforge.fml.common.event.FMLInitializationEvent;
      import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
      import org.apache.logging.log4j.Logger;
      
      @Mod(modid = KotlinBasedMod.MODID, version = KotlinBasedMod.VERSION)
      public class KotlinBasedMod
      {
         static final String MODID = "kotlinbasedmod";
         static final String VERSION = "0.1";
      
         private static Logger logger;
      
         @EventHandler
         public void preInit(FMLPreInitializationEvent event) {
             logger = event.getModLog();
         }
      
         @EventHandler
         public void init(FMLInitializationEvent event)
         {
         }
      }
      

      Commit du fichier sur GitHub.

      Ensuite, dans le même package, j’ajoute un fichier Kotlin, cette fois en précisant que c’est un fichier de Classe, que je nomme TestKotlin.

      Au moment de l’ajout du premier fichier Kotlin, IntelliJ IDEA demandera de configurer l’environnement pour Kotlin. En effet, si dans le test de la section précédente, nous avions créé un projet Kotlin, ici, ForgeGradle nous a préparé un environnement Java. Il suffit de renseigner dans la configuration les mêmes éléments que précédemment.

      L’éditeur génère quelque chose qui ressemble à ceci :

      package org.puupuu.kotlinbasedmod
      
      class TestKotlin {
      }
      

      Je modifie ce fichier avec le code suivant, que je vais commenter juste après.

      package org.puupuu.kotlinbasedmod
      
      import org.apache.logging.log4j.Logger
      
      class TestKotlin(val logger: Logger) {
         fun go() {
             logger.info("I'm module ${KotlinBasedMod.MODID} at version ${KotlinBasedMod.VERSION}.");
         }
      }
      

      Fichier sur GitHub

      • Les deux premières lignes ressemblent fortement à leurs équivalent Java. Tout d’abord la déclaration du package dont le fichier fait parti, puis l’import de la classe Logger, qui est utilisée par la suite.
      • Une différence notable cependant : il n’y a pas de point-virgules à la fin des instructions.
      • Le mot-clé class indique, comme en Java, la définition d’une classe. Il n’est pas nécessaire de préciser qu’elle est publique.
      • TestKotlin est le nom de la classe, suivi entre parenthèses par les paramètres du constructeur principal (et unique, dans cet exemple). logger est le nom de la variable, Logger, après les deux points, son type. L’instruction val qui précède indique que ce paramètre initialise un membre de cette classe.
      • Le mot-clé fun indique la définition d’une fonction, une fonction membre dans notre cas, mais Kotlin permet aussi la création de fonction libres, c’est-à-dire hors d’une classe. La fonction ici est nommée go et ne prend pas de paramètre.
      • Le corps de la fonction appelle la fonction debug du membre logger (défini par le constructeur) avec en paramètre une chaîne de caractères.
      • L’appel a la fonction est rigoureusement identique à son équivalent Java.
      • La chaîne de caractères est construite en remplaçant les expressions à l’intérieur des ${…}.

      Nous voyons donc que côté Kotlin, nous pouvons manipuler des types et des objets Java.

      Côté Java à présent, il nous faut créer une instance de la classe TestKotlin et appeler la fonction go().

      Faisons ça dans la fonction init() de la classe principale.

      @EventHandler
      public void init(FMLInitializationEvent event)
      {
         TestKotlin test = new TestKotlin(logger);
         test.go();
      }
      

      Fichier complet sur GitHub.

      Côté Java, nous pouvons donc accéder de manière transparente au monde Kotlin.

      Résultat

      Il est maintenant temps de lancer le client Minecraft et d’admirer la sortie du log.

      (…)
      [22:18:37] [Client thread/INFO]: Max texture size: 16384
      [22:18:37] [Client thread/INFO]: Created: 16x16 textures-atlas
      [22:18:38] [Client thread/INFO]: I’m module kotlinbasedmod at version 0.1.
      [22:18:38] [Client thread/INFO]: Injecting itemstacks
      [22:18:38] [Client thread/INFO]: Itemstack injection complete
      (…)

      Crédits

      Rédaction :

      • Mokona78

      Correction :


      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

      Retour vers le sommaire des tutoriels

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

        J’ai survolé mais ça m’a l’air intéressant à partir du moment où on veut utiliser Kotlin, tu pourrai spécifier l’utilité d’utiliser Kotlin plus que Java, à moins que ce soit vraiment parce qu’on aurait envie.

        1 réponse Dernière réponse Répondre Citer 0
        • Superloup10S Hors-ligne
          Superloup10 Modérateurs
          dernière édition par

          Je regarderai plus en détail demain, mais en tout cas, c’est une bonne idée de faire une démonstration d’un autre langage pour le modding Forge.

          Envoyé de mon Nexus 4 en utilisant Tapatalk

          Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

          Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

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

            J’ai enlevé la partie sur la vidéo. Je pense en faire une, mais pas tout de suite.

            L’intérêt d’utiliser Kotlin sera traité sur des exemples dans les prochains tutoriels. En fait, je voulais écrire un tutoriel sur « comment fait-on en Kotlin ». En l’écrivant, je me suis dit qu’il était préférable d’aider tout d’abord à installer un environnement, pour ceux qui seraient tentés.

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

              @‘Mokona78’:

              J’ai enlevé la partie sur la vidéo. Je pense en faire une, mais pas tout de suite.

              L’intérêt d’utiliser Kotlin sera traité sur des exemples dans les prochains tutoriels. En fait, je voulais écrire un tutoriel sur « comment fait-on en Kotlin ». En l’écrivant, je me suis dit qu’il était préférable d’aider tout d’abord à installer un environnement, pour ceux qui seraient tentés.

              Personnellement je ne suis pas pour installer un nouveau langage qui fait la même chose (voir peut être même moins) qu’un mod fait un java pur et dur et qui va en plus consommer de la mémoire inutilement, ça pourrait être utile seulement si des personnes veulent créer des mods en dehors des jars (par exemple des petits scripts).

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

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

                Chacun choisi le langage dans lequel il veut programmer bien entendu. Mes posts sont là pour présenter une alternative afin de pouvoir faire le (son propre) bon choix.

                Quelques précisions qui me semblent nécessaires du coup :

                • installer un nouveau langage : on installe un compilateur et un plugin au niveau de l’environnement.
                • fait la même chose (voir peut être même moins) : Kotlin a été crée pour être plus expressif et plus solide  que Java en moins verbeux, en ce sens, il en fait plus.
                • qui va en plus consommer de la mémoire inutilement : cela coûte effectivement ~750Ko d’un .jar supplémentaire, c’est donc ce poids en plus dans le Mod. J’ai cru voir un Mod qui distribue Kotlin en tant que Mod, ce qui permettrait de mutualiser ces 750ko entre les différents Mod qui utilisent Kotlin (au prix d’une dépendance).
                • ça pourrait être utile seulement si des personnes veulent créer des mods en dehors des jars : Kotlin est un langage qui produit des .class, qui sont packagées dans des .jar. Ce n’est pas vraiment un langage adapté à des petits scripts rapides (mais je ne comprends pas bien cette histoire de « petits scripts en dehors des jars »)
                1 réponse Dernière réponse Répondre Citer 0
                • SCAREXS Hors-ligne
                  SCAREX
                  dernière édition par

                  @‘Mokona78’:

                  Chacun choisi le langage dans lequel il veut programmer bien entendu. Mes posts sont là pour présenter une alternative afin de pouvoir faire le (son propre) bon choix.

                  Quelques précisions qui me semblent nécessaires du coup :

                  • installer un nouveau langage : on installe un compilateur et un plugin au niveau de l’environnement.
                  • fait la même chose (voir peut être même moins) : Kotlin a été crée pour être plus expressif et plus solide  que Java en moins verbeux, en ce sens, il en fait plus.
                  • qui va en plus consommer de la mémoire inutilement : cela coûte effectivement ~750Ko d’un .jar supplémentaire, c’est donc ce poids en plus dans le Mod. J’ai cru voir un Mod qui distribue Kotlin en tant que Mod, ce qui permettrait de mutualiser ces 750ko entre les différents Mod qui utilisent Kotlin (au prix d’une dépendance).
                  • ça pourrait être utile seulement si des personnes veulent créer des mods en dehors des jars : Kotlin est un langage qui produit des .class, qui sont packagées dans des .jar. Ce n’est pas vraiment un langage adapté à des petits scripts rapides (mais je ne comprends pas bien cette histoire de « petits scripts en dehors des jars »)
                  • Oui c’est comme le scala
                  • Je parle au niveau des possibilités (je sais pas si tout ce qui est possible en java est possible en Kotlin). Je suis d’accord que certains peuvent préférer la syntaxe du Kotlin plutôt que le java
                  • Je parle de la mémoire RAM surtout
                  • Je pensais à quelque chose comme les nouveaux mods pour la version windows 10 de minecraft qui eux sont fait en javascript

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

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

                    @‘SCAREX’:

                    • Oui c’est comme le scala
                    • Je parle au niveau des possibilités (je sais pas si tout ce qui est possible en java est possible en Kotlin). Je suis d’accord que certains peuvent préférer la syntaxe du Kotlin plutôt que le java
                    • Je parle de la mémoire RAM surtout
                    • Je pensais à quelque chose comme les nouveaux mods pour la version windows 10 de minecraft qui eux sont fait en javascript
                    • C’est comme pour Scala, en effet.
                    • Tout ce qui est faisable en Java l’est en Kotlin, et inversement.
                    • À part le runtime de Kotlin (le jar de ~750ko), rien d’autre. Le modèle mémoire est rigoureusement le même.
                    • Kotlin produit du code pour JVM, et pas du tout pour une machine virtuelle Javascript.
                    1 réponse Dernière réponse Répondre Citer 0
                    • 1 / 1
                    • Premier message
                      Dernier message
                    Design by Woryk
                    ContactMentions Légales

                    MINECRAFT FORGE FRANCE © 2024

                    Powered by NodeBB