OnItemRightClick sur une entity.



  • Bonsoir j'essaye depuis ce matin a faire en sorte que quand je fais clic droit avec un item sur un joueur (Entité) une action s’exécute mais j'y arrive pas…

    CODE:

     public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) {
       if (lvl != 0)
         lvl2 = Math.abs(lvl / 2);
       else if (lvl == 0) {
         lvl2 = Math.abs(lvl);
       }
       this.lvlS = Integer.toString(lvl2);
       return itemstack;
     }
    

    J'ai essayé avec [size=smallEntityInteractEvent marche toujours pas .]
    [size=smallCordialement Flo.]


  • Rédacteurs

    
    public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
    
    


  • Je peux pas essayer voir si ton code marche bien car j'ai un problème de build je sais si le problème vient de ta ligne de code ou si je me suis tromper vous pouvez m'aider?


  • Rédacteurs

    Ya quoi comme erreur ?



  • ça marche niquel j'ai essayer avec un System.out.println("");
    Mais comme je le dis j'ai une erreur avec le build l'erreur est:

    ****************************
     Powered By MCP:             
     http://modcoderpack.com/    
     Searge, ProfMobius, Fesh0r, 
     R4wk, ZeuX, IngisKahn, bspkrs
     MCP Data version : unknown
    ****************************
    :compileApiJava UP-TO-DATE
    :processApiResources UP-TO-DATE
    :apiClasses UP-TO-DATE
    :sourceMainJava
    :compileJavawarning: [options] bootstrap class path not set in conjunction with -source 1.6
    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 warning
    
    :processResources UP-TO-DATE
    :classes
    :jar
    :compileTestJava UP-TO-DATE
    :processTestResources UP-TO-DATE
    :testClasses UP-TO-DATE
    :test UP-TO-DATE
    :extractMcpData UP-TO-DATE
    :getVersionJson
    :extractUserDev UP-TO-DATE
    :genSrgs SKIPPED
    :reobf FAILED
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':reobf'.
    > MALFORMED
    
    * 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: 13.114 secs
    
    

  • Administrateurs

    Tu as surement un accent ou autre caractère spéciaux dans le nom d'un fichier (une texture, un son). Il ne faut pas en mettre.



  • merci 🙂 +2



  • J'ai encore quelques problème en gros quand je fais clic droit sur un joueur on voit mon niveau d'alcoolémie est pas celui du joueur avec qui j’interagis .
    Mon code:

    Object lvlS = "Impossible d'obtenir votre niveau d'alcoolémie.";
     public static int lvl = 0;
     public static int lvl2 = 0;
    
     public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity){
       if (lvl != 0)
         lvl2 = Math.abs(lvl / 2);
       else if (lvl == 0) {
         lvl2 = Math.abs(lvl);
       }
       this.lvlS = Integer.toString(lvl2);
    return stack != null;
     }
     public void addInformation(ItemStack item, EntityPlayer player, List list, boolean par4) {
       list.add("Faite clic droit pour actualiser ");
       list.add("votre niveau d'alcoolémie.");
       list.add("Votre niveau d'alcoolémie est de:");
       list.add(this.lvlS);
     } 
    

  • Rédacteurs

    Tu peux envoyer la classe entière ?



  • Ouaip tien:

    package com.AltisMine.mod;
    
    import ibxm.Player;
    
    import java.util.List;
    
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ChatComponentText;
    import net.minecraft.world.World;
    
    public class AT extends Item
    {
     Object lvlS = "Impossible d'obtenir votre niveau d'alcoolémie.";
     public static int lvl = 0;
     public static int lvl2 = 0;
    
     public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity){
       if (lvl != 0)
         lvl2 = Math.abs(lvl / 2);
       else if (lvl == 0) {
         lvl2 = Math.abs(lvl);
       }
       this.lvlS = Integer.toString(lvl2);
    return stack != null;
     }
     public void addInformation(ItemStack item, EntityPlayer player, List list, boolean par4) {
       list.add("Faite clic droit pour actualiser ");
       list.add("votre niveau d'alcoolémie.");
       list.add("Votre niveau d'alcoolémie est de:");
       list.add(this.lvlS);
     }
    }
    

  • Rédacteurs

    A quoi correspondent lvl et lvl2 ?
    Si tu veux récupéré le taux d'alcoolémie de l'entité sur laquelle tu cliques il faut que tu passe par une ExtendedEntityPropertie et que tu la récupère en utilisant un cast de entity



  • J'ai pas trop bien compris mais j'ai fais ça:

    public boolean ExtendedEntityPropertie(ItemStack stack, EntityPlayer player, EntityLivingBase entity){
       Entity en = (EntityLivingBase) entity;
       if (entity instanceof EntityPlayer){
     if (lvl != 0)
         lvl2 = Math.abs(lvl / 2);
       else if (lvl == 0) {
         lvl2 = Math.abs(lvl);
       }
       this.lvlS = Integer.toString(lvl2);
       }
    return stack != null;
     }
    

    Je suis pas sur que ça marche .


  • Rédacteurs

    Euh … C'est pas vraiment ça non xD

    Tout d'abord il faut que tu enregistre le taux d'alcoolémie dans une entité, le joueur dans ton cas. Tu peux le faire en suivant ce tuto : http://www.minecraftforgefrance.fr/showthread.php?tid=905

    Ensuite il faut faire un truc qui ressemble à ça :

    
    public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
    {
    if(entity instanceof EntityPlayer)
    {
    EntityPlayer target = (EntityPlayer)entity;
    //Et là tu récupère le taux d'alcoolémie du joueur target et tu fait tes calculs et tout
    }
    return true;
    }
    
    


  • Juste, le singulier de properties c'est property, pas propertie (c'est moche à voir -_- )



  • Merci juste pour info je suis obliger de stocké le taux par un extended entity ?


  • Rédacteurs

    Ça me parait être la solution la plus "propre", sinon tu peux créer un tableau qui associera chaque joueur à un taux d'alcoolémie et qu'il faudra enregistrer et charger à chaque fois



  • Si je fait rien de cela ça marchera ?


  • Rédacteurs

    Bah comment comptes-tu sauvegarder le taux d'alcoolémie de chaque joueur ? Tu ne peux certainement pas le faire dans l'item comme tu l'avais fait au début car ce serait le même pour chaque joueur (plus précisément pour chaque item)



  • Yep effectivement j'ai essayé avec un pote lui a un niveau de 3 après avoir bu 3 boissons et quand je fais clic droit sur lui ça m'indique 0 et lui quand il fait clic droit sur moi ça lui indique 3 et quand il me passe l'item y'a marquer 0 enfin bref je suis obliger de faire comme tu mas indiqué merci à toi 🙂
    +2



  • Wow par contre j'ai rien compris… si demain tu pourras m'aider pour le tuto se serrai super .