9 juil. 2016, 11:44

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

retourSommaire des tutoriels