Utiliser le FFMTAPI



  • [bt]
    Sommaire
    [/bt]

    [bt]
    Présentation
    [/bt]

    Je vous invite à vous référer à ce sujet!

    [bt]
    Prérequis
    [/bt]

    Il vous faut connaître les bases en modding, pour cela consultez les autres tutoriels du forum!

    [bt]
    Installation
    [/bt]

    Pour cela il vous suffit de télécharger l'api ici
    Il vous faut un fichier nommé FFMT-API-src-x.x.x.x-mcx.x.x.zip.

    Ensuite vous devez extraire le contenu de l'archive dans le dossier forge/mcp/src/minecraft/
    Et voilà l'api est installé!

    [bt]
    Utilisation
    [/bt]

    Pour utiliser une fonction de l'api, vous devrez écrire une ligne de ce style:
    NomDeLaClass.nomDeLaFonction(argument1, argument2, …)

    FFMTRegistry

    Dans cette class nous trouvons une fonction pour les blocs, vous permet de lui faire spawn des particules, elle est à placer dans une autre fonction comme onBlockActivated().

    spawnParticles(int speed, String particles, World world, int posX, int posY, int posZ, Random random, double velX, double velY, double velZ)
    

    Arguments:
    1:Integer, il définit la vitesse d'apparition des particules
    2:String, c'est le nom de votre particule (exemple: "smoke", "largeSmoke", etc)
    3:World, c'est le monde où est le bloc, il faut utiliser celui qui est dans la fonction ou cette fonction ce trouve
    4:Integer, position x du bloc
    5:Integer, position y du bloc
    6:Integer, position z du bloc
    7:Random, un fonction de random à déclarer
    8:Double, vélocité x (s'il n'est pas spécifier il est automatiquement mis à 0.0)
    9:Double, vélocité y (s'il n'est pas spécifier il est automatiquement mis à 0.0)
    10:Double, vélocité z (s'il n'est pas spécifier il est automatiquement mis à 0.0)

    Voici une fonction pour ajouter une recette au four avec un metadata:

    addSmeltingWithMetadata(int input, int metadata, ItemStack output, float xp)
    

    Arguments:
    1:Integer, id du bloc/item
    2:Integer, metadata du bloc/item
    3:ItemStack, résultat de la cuisson
    4:Float, xp donné après opération

    Maintenant je vais vous parler des fonction de craft en masse (elles sont à mettre dans la class principale):
    Armures:

    addArmorCrafting(ItemStack material, int type, ItemStack output)
    

    Arguments:
    1:ItemStack, le bloc/item utiliser dans le craft
    2:Integer, la pièce d'armure à craft (0:Casque, 1:Plastron, 2:Pantalon, 3:Bottes)
    3:ItemStack, la pièce d'armure terminée

    Et pour toutes les armures en un coup:

    addAllArmorCrafting(ItemStack material, ItemStack outputHelmet, ItemStack outputChestPlate, ItemStack outputLeggings, ItemStack outputBoots)
    

    Arguments:
    1.ItemStack, le bloc/item utiliser dans le craft
    2.ItemStack, le casque
    3.ItemStack, le plastron
    4.ItemStack, le pantalon
    5.ItemStack, les bottes

    Outils:

    addToolsCrafting(ItemStack material, int type, ItemStack output, ItemStack stick)
    

    Arguments:
    1:ItemStack, le bloc/item utiliser dans le craft
    2:Integer, l'outil à craft (0:Hache, 1:Pelle, 2:Bèche, 3:Pioche, 4:épée)
    3:ItemStack, l'outil terminé
    4:ItemStack, le bâton utiliser

    Et pour tout les outils:

    addAllToolsCrafting(ItemStack material, ItemStack outputAxe, ItemStack outputShovel, ItemStack outputHoe, ItemStack outputPickaxe, ItemStack outputSword, ItemStack stick)
    

    Arguments:
    1.ItemStack, le bloc/item utiliser dans le craft
    2.ItemStack, la hache
    3.ItemStack, la pelle
    4.ItemStack, la bèche
    5.ItemStack, la pioche
    6.ItemStack, l'épée
    7.ItemStack, le bâton

    Et voici une fonction pour faire un check MAJ:

    registerVersionCheck(FMLPreInitializationEvent event, String versionUrl, String downloadurl, String modname, String actuallyversion)
    

    Arguments:
    1:FMLPreInitializationEvent, vous avez juste à mettre la fonction dans le PreInit et à mettre "event"
    2:String, lien vers le fichier.txt avec la version dedans. Dans ce fichier txt vous devez mettre la dernière version du mod
    3:String, lien vers la page de téléchargement du mod
    4:String, le nom du mod
    5:String, la version actuelle du mod

    Nous en avons finit pour la class FFMTRegistry.

    FFMTEntityHelper

    On commence avec un fonction pour faire spawn de la fumée à une entité, même fonctionement que pour le bloc:

    spawnSmokeParticles(int speed, EntityLiving entity, double xVel, double yVel, double zVel, double xPosition, double yPosition, double zPosition)
    

    Arguments:
    1.Integer, la vitesse de spawn
    2.EntityLiving, l'entité en question
    3.Double, vélocité x
    4.Double, vélocité y
    4.Double, vélocité z
    5.Double, position x (Non obligatoire)
    6.Double, position y (Non obligatoire)
    7.Double, position z (Non obligatoire)

    Une fontion pour enregistrer une entité mais autre qu'un mob:

    addOtherEntity(Class entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates)
    

    Arguments:
    1.Class, une class extends Entity
    2.String, le nom de l'entité
    3.Integer, l'id
    4.Object, l'instance du mod
    5.Integer, la distance sur laquelle l'entité vous traque
    6.Integer, la fréquence d'update de l'entité
    6.Boolean, si l'entité met à jour ça vélocité

    Et voilà la dernière fonction de cette classe, celle qui vous permet d'enregistrer un mob en une seule ligne.

    addMob(Class entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates,
    int backGroundEggColour, int foreGroundEggColour, int weightedProb, int minSpawn, int maxSpawn, EnumCreatureType creatureType, BiomeGenBase… biome)
    

    Arguments
    1.Class, une class extends Entity
    2.String, le nom du mob
    3.Integer, l'id du mob dans le mod
    4.Object, l'instance du mod
    5.Integer, distance de traque du mob
    6.Integer, fréquence de mise à jour du mob
    7.Boolean, si le mob met à jour ça vélocité
    8.Integer, couleur arrière de l'oeuf
    9.Integer, couleur avant de l'oeuf
    10.Integer, probabilité de spawn
    11.Integer, spawn minimum par chunk
    12.Integer, spawn maximum par chunk
    13.EnumCreatureType, le type de créature
    14.BiomeGenBase... , les biomes où spawn le mod (Non obligatoire)(vous pouvez mettre le nombre de biomes que vous souhaitez)

    ! FFMTEntityMobCustomized
    ! Je laisse elias54 rédiger cette partie car c'est lui qui a créé cette class et je ne l'est pas utilisée.
    ! Vérificateur de mise à jour
    ! Voici un vérificateur de mise à jour (ou Version checker), l'idée est de elias54 et robin4002 l'a amélioré.
    Pour l'utiliser, dans le PreInit de la class principale vous ajoutez:
    ! [bt]
    Compilation
    [/bt]
    ! Pour cela il vous suffit de compiler votre mod normalement, mais vous ne devez pas ajouter de dossier "fr" qui se trouve dans votre dossier reobf, après cela, pour l'utiliser, vous glisser votre mod et l'archive de l'API universal dans le dossier .minecraft/mods/, avec, bien sûr, Forge installé.



  • Tutoriel finit pour moi, j'ai mis tout ce que je pouvais, après je laisse elias compléter la partie vide qui le concerne.



  • Super ! Je pense que je l'utiliserais 🙂
    Un petit problème, le tuto pour le vérificateur de mise à jour est expliqué 2 fois ^^


  • Rédacteurs

    Le post pourrai être mis à jour please


  • Administrateurs

    Un nouveau est en cours de préparation depuis un moment, il sera disponible dès la 1.7.



  • Où doit-on extraire l'archive si on utilise Gradle au lieu de MCP ?


  • Administrateurs

    Elle se trouve ici


  • Administrateurs

    Suffit juste de passer par le build.gradle maintenant comme montré dans le readme.
    https://github.com/FFMT/FFMT-libs/blob/master/README.md



  • J'ai installé l'api mais quand j'ouvre eclipse ca me dis ca:

    Description Resource Path Location Type
    Project 'Minecraft' is missing required library: 'C:\Users\Hugo\Desktop\Mod Harry Potter\forge-1.7.10-10.13.2.1230-src\unresolved dependency - fr.minecraftforgefrance FFMT-libs ${version}-mc${mcversion}' Minecraft Build path Build Path Problem
    
    

  • Administrateurs

    Il faut remplacer version et mcversion par les bonnes valeurs …



  • Mdrr je me disais, c'est cool ça détecte auto ta version! Mais en fait je suis juste con