Problème d'erreur empêchant la compilation du mod



  • Bonjour, j'ai essayé de compiler mon mod, mais il y à échec sur le build de gradlew : voici la fenêtre de commande :

    
    C:\Users\user\Desktop\forge-1.8.9-11.15.1.1747-mdk>gradlew build
    This mapping 'stable_20' was designed for MC 1.8.8! Use at your own peril.
    #################################################
            ForgeGradle 2.1-SNAPSHOT-17806f4
     https://github.com/MinecraftForge/ForgeGradle
    #################################################
                  Powered by MCP unknown
                http://modcoderpack.com
            by: Searge, ProfMobius, Fesh0r,
            R4wk, ZeuX, IngisKahn, bspkrs
    #################################################
    :deobfCompileDummyTask
    :deobfProvidedDummyTask
    :sourceApiJava UP-TO-DATE
    :compileApiJava UP-TO-DATE
    :processApiResources UP-TO-DATE
    :apiClasses UP-TO-DATE
    :sourceMainJava UP-TO-DATE
    :compileJava
    warning: [options] bootstrap class path not set in conjunction with -source 1.6
    C:\Users\user\Desktop\forge-1.8.9-11.15.1.1747-mdk\build\sources\main\java\com\s
    urvivant\mod\Packet\Message.java:53: error: local variable message is accessed f
    rom within inner class; needs to be declared final
                       thirst.set(message.thirstVal);
                                  ^
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    1 warning
    :compileJava FAILED
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':compileJava'.
    > Compilation failed; see the compiler error output for details.
    
    * Try:
    Run with –stacktrace option to get the stack trace. Run with --info or --debug
    option to get more log output.
    
    BUILD FAILED
    
    Total time: 20.221 secs
    
    C:\Users\user\Desktop\forge-1.8.9-11.15.1.1747-mdk>
    
    

    Merci d'avance.


  • Administrateurs

    Salut,
    Ça ne compile pas car il y a une erreur dans ton code.



  • Ok… J'ai retrouvé la ligne qui pose problème :

    
    public static class Handler implements IMessageHandler <message, imessage="">{
    
           @Override
           public IMessage onMessage(Message message, MessageContext ctx)
           {
               Minecraft.getMinecraft().addScheduledTask(new Runnable()
               {
                   @Override
                   public void run()
                   {
                       EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                       IThirst thirst = player.getCapability(ThirstProvider.THIRST_CAP, null);
                       thirst.set(message.thirstVal);                
                   }              
               });
               return null;
           }
    
       }
    
    

    Mais ils veulent que je passe la variable message en final, cependant message est dans les paramètre de la fonction, donc comment faire ?

    Merci d'avance.</message,>



  • @'elx9000':

    Mais ils veulent que je passe la variable message en final, cependant message est dans les paramètre de la fonction, donc comment faire ?

    Cela n’empêche pas de mettre la variable en final. Si une variable local à une fonction ou un paramètre de fonction est final, cela signifie juste que sa valeur ne va pas être modifiée.



  • Ok, j'ai fait ceci :

    
    public static class Handler implements IMessageHandler <message, imessage="">{
    
           @Override
           public IMessage onMessage(final Message message, MessageContext ctx)
           {
               Minecraft.getMinecraft().addScheduledTask(new Runnable()
               {
                   @Override
                   public void run()
                   {
                       EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                       IThirst thirst = player.getCapability(ThirstProvider.THIRST_CAP, null);
                       thirst.set(message.thirstVal);                
                   }              
               });
               return null;
           }
    
       }
    
    

    Le build du mod est un succès.
    Par contre, le fichier lang n'a pas l'air ne s'être chargé, car en jeux (une fois le mod compilé) aucun de mes items, blocs,… n'a de noms. Avez-vous une idée sur ce problème ?

    Merci d'avance.</message,>


  • Administrateurs

    Ton fichier de lang est où est se nomme comment ?



  • Mon fichier lang se situe :

    forge-1.8.9-11.15.1.1747-mdk\src\main\resources\assets\survivant\lang

    et se nomme fr_FR

    Merci d'avance.


  • Administrateurs

    Ça me semble bon.
    Le fichier se trouve bien dans le zip final ?



  • Oui, il est bien dans le mod fini. Au fait, c'est normal d'avoir deux mod une fois la compilation fini : un nommé survivant-1.0.0 et l'autre nommé survivant-1.0.0-sources ?

    Merci d'avance.


  • Administrateurs

    Oui c'est normal d'avoir deux jar.

    Tu peux envoyer le jar que je puisse regarder ?



  • elx9000 as-tu essayé de ne tout mettre de minuscule dans le nom du fichier lang ? Car si je ne dis pas de bêtise, dans les dernières versions, c'est comme ça qu"il faut faire.
    (http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2818534-forge-lang-file-didnt-work :

    In your pack.mcmeta file, is "pack_format" set to 3?

    If it is, Minecraft will only load resources with lowercase names, including lang files. Rename en_US.lang to en_us.lang and pl_PL.lang to pl_pl.lang.

    If it's set to 2 or not set at all (either because you don't have a pack.mcmeta file or because it doesn't contain a "pack" section), FML will use the LegacyV2Adapter IResourcePack wrapper for your mod's resources. This will still only load resources with lowercase names, except lang files. Lang files will only be loaded with the mixed case names used in earlier versions (e.g. en_US.lang).

    )



  • Maintenant, j'ai un autre souci, il y a échec lorsque je fais gradlew clean.
    Je n'arrive pas à vous transmettre le jar, je dois demander l'autorisation à l'administrateur (j'avoue que là j'y comprends plus rien normalement je suis l'administrateur de mon pc, comment corriger ceci ?)

    Merci d'avance.



  • J'ai réussi à retenter un build. Le souci du fichier lang a pu être réglé : je l'ai nommé fr_FR, et j'ai mis mon jeu en français (ce que je n'avais pas fait avant 😄 ).
    Le problème de la texture bugées était dû à une erreur de lettre j'avais mis I au lieu de i sur la texture.

    Du coup, mes 2 problèmes ont été résolu, merci de l'aide.