IMC : envoyer des messages entre les mods



  • Sommaire

    Introduction

    Vous voulez développer une API pour votre mod ou bien vous voulez utiliser l'API d'un autre mod mais vous ne savez pas forcément s'il est présent ou non, voici un tutoriel qui va vous permettre de faire la liaison entre 2 mods grâce à forge.

    Pré-requis

    Code

    Envoi d'informations

    Pour envoyer des informations c'est très simple : FMLInterModComms.sendMessage(modid, key, value)
    Ici le modid correspond au mod auquel vous envoyez le message, key est une chaîne de caractères qui permet d'identifier ce que vous envoyez et value peut être soit une chaîne de caractères, soit un ItemStack soit un NBTTagCompound.

    Cette fonction doit être appelée dans le preInit, ou l'init sinon le mod risque de ne pas recevoir le message.

    Vous pouvez aussi envoyer des messages pendant le jeu grâce à FMLInterModComms.sendRuntimeMessage(instanceDeVotreMod, modid, key, value)

    PS : vous n'avez pas besoin de rajouter une condition pour voir si le mod est présent : si le mod n'est pas présent le jeu ne crashera pas et votre message sera oublié.

    Réception d'informations

    Il y a 2 méthodes pour recevoir les informations :

    Première méthode simple :

    Cette méthode permet de récupérer tous les messages envoyés dans le preInit et l'init (mais pas le reste). A placer dans votre classe principale :

            @EventHandler
        public void onIMCMessage(FMLInterModComms.IMCEvent event) { // On souscrit à l'événement FMLInterModComms.IMCEvent
            for (IMCMessage message : event.getMessages()) { // On parcours la liste des messages
                log.info("Received message from " + message.getSender() + " with key \"" + message.key + "\" with object of type : " + message.getMessageType()); // Ce code sert juste à afficher les messages reçus, vous devez modifier cette partie
            }
        }
    

    Deuxième méthode :

    Cette méthode vous permet de récupérer les messages n'importe quand et n'importe où :

        for (IMCMessage message : FMLInterModComms.fetchRuntimeMessages(instanceDeVotreMod)) { // On récupère tous les messages pour notre mod
            log.info("Received message runtime from " + message.getSender() + " with key \"" + message.key + "\" with object of type : " + message.getMessageType()); // Ce code sert juste à afficher les messages reçus, vous devez modifier cette partie
        }
    

    Une fois les messages reçus vous devez les traiter :

    • Si le message doit contenir comme valeur une chaîne de caractères, vous devez utiliser message.getStringValue()
    • Si le message doit contenir un ItemStack, ce sera message.getItemStackValue()
    • Si le message doit contenir un NBTTagCompound, ce sera message.getNBTValue()

    Pour savoir de quel type est la valeur, vous pouvez utiliser message.getMessageType() qui retournera la classe de la valeur.

    Dans tous les cas vous pouvez accéder au modid de l'envoyeur grâce à message.getSender() et la clé grâce à message.key.

    Crédits

    Rédaction :

    • SCAREX

    Correction :


    Ce tutoriel de SCAREX 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 vers le sommaire des tutoriels



  • Bb je t'AIIIIIIMMMMMMMEEEEE COMMMME UN FOU COMME UN SOLDAAAAAAT !!!!!



  • @'moscaphone421':

    Bb je t'AIIIIIIMMMMMMMEEEEE COMMMME UN FOU COMME UN SOLDAAAAAAT !!!!!

    Comme une star de cinéma ? xD



  • Oui dans un film mais vaut mieux pas en parle ici piggy 18 xD



  • Très intéressant 🙂



  • Très intéressant, je pense l'utiliser pour mon système d'énergie et de fluide.

    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk