Effet pour toute l'armure



  • Bonjour. J'ai créé une armure et j'aimerai que seulement si on met TOUTE l'armure (casque, plastron, jambière et bottes), cela donne l'effet.
    Mon code actuel de la classe de l'armure :

    package fr.the_pumpkin_man.InvisibleArmor.common;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.world.World;
    
    public class InvisibleA extends ItemArmor 
    {
    
    public InvisibleA(ArmorMaterial material, int type) 
    {
    super(material, 0 ,type);
    }
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
    {
    if(slot == 2)
    {
    return InvisibleArmor.MODID + ":textures/models/armor/Invisible_layer_2.png";
    }
    return InvisibleArmor.MODID + ":textures/models/armor/Invisible_layer_1.png";
    }
    public boolean getIsRepairable(ItemStack input, ItemStack repair)
    {
    if(repair.getItem() == InvisibleArmor.InvisibleItem)
    {
    return true;
    }
    return false;
    }
        public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
        {
       if(this.armorType == 1 && player.isSprinting() && player.onGround)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
        }
    }
    
    

    Le code que j'ai essayé et qui ne marche pas :

    package fr.the_pumpkin_man.InvisibleArmor.common;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.world.World;
    
    public class InvisibleA extends ItemArmor 
    {
    
    public InvisibleA(ArmorMaterial material, int type) 
    {
    super(material, 0 ,type);
    }
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
    {
    if(slot == 2)
    {
    return InvisibleArmor.MODID + ":textures/models/armor/Invisible_layer_2.png";
    }
    return InvisibleArmor.MODID + ":textures/models/armor/Invisible_layer_1.png";
    }
    public boolean getIsRepairable(ItemStack input, ItemStack repair)
    {
    if(repair.getItem() == InvisibleArmor.InvisibleItem)
    {
    return true;
    }
    return false;
    }
        public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
        {
        if(this.armorType == 0 && this.armorType == 1 && this.armorType == 2 && this.armorType == 3)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
        }
    }
    
    


  • public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
    {
    if(this.armorType == 0 && this.armorType == 1 && this.armorType == 2 && this.armorType == 3)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
    }
    

    Euh…quelque chose ne peut pas avoir plusieurs valeurs en même temps x)
    Il faut que tu parcoures les armures équipées sur le joueur afin de voir si c'est la tienne :

    public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
    {
    if(this.armorType == 0 && player.inventory.armorItemInSlot(1) == tonItemPlastron && pareil pour pantalon et bottes)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
    }
    

    Là si un casque est équipé, ça cherchera si le reste de l'armure est équipée.


  • Administrateurs

    😢 C'est expliqué dans le bonus du tutoriel, que visiblement personne le lit 😢



  • @'AymericRed':

       public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
       {
       if(this.armorType == 0 && this.armorType == 1 && this.armorType == 2 && this.armorType == 3)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
       }
    

    Euh…quelque chose ne peut pas avoir plusieurs valeurs en même temps x)
    Il faut que tu parcoures les armures équipées sur le joueur afin de voir si c'est la tienne :

       public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
       {
       if(this.armorType == 0 && player.inventory.armorItemInSlot(1) == tonItemPlastron && pareil pour pantalon et bottes)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
       }
    

    Là si un casque est équipé, ça cherchera si le reste de l'armure est équipée.

    Aymeric cela ne marche pas il me met en erreur : "Incompatible operand types ItemStack and Item"
    Et Robin ton bonus montre comment faire cela pour les events pas avec cette fonction ...



  • Ah oui effectivement j'ai fait une petite bêtise ^^

    public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
    {
    if(this.armorType == 0 && (player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem() == tonItemPlastron) && pareil pour pantalon et bottes)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
    }
    

    ça marchera mieux comme ça 😉



  • @'AymericRed':

    Ah oui effectivement j'ai fait une petite bêtise ^^

       public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
       {
       if(this.armorType == 0 && (player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem()  == tonItemPlastron) && pareil pour pantalon et bottes)
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
       }
    

    ça marchera mieux comme ça 😉

    Effectivement ça marche mieux : il n'y a plus d'erreur mais ça ne marche quand même pas : je mets un des items de l'armure et je suis invisible au lieu que ce soit les 4 …

        public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
        {
        if(this.armorType == 0 && player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem() == InvisibleArmor.InvisibleChestplate && player.inventory.armorItemInSlot(2) != null && player.inventory.armorItemInSlot(2).getItem() == InvisibleArmor.InvisibleLeggings && player.inventory.armorItemInSlot(3) != null && player.inventory.armorItemInSlot(3).getItem() == InvisibleArmor.InvisibleBoots);
    {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    }
    


  • Retire le point virgule à la fin du if



  • J'ai essayé mais ça ne marche pas … 😢


  • Administrateurs

    Pourtant ça devrait.
    Envoies le code ?



  • @'robin4002':

    Pourtant ça devrait.
    Envoies le code ?

    package fr.the_pumpkin_man.InvisibleArmor.common;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.world.World;
    
    public class InvisibleA extends ItemArmor 
    {
    
    public InvisibleA(ArmorMaterial material, int type) 
    {
    super(material, 0 ,type);
    }
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
    {
    if(slot == 2)
    {
    return InvisibleArmor.MODID + ":textures/models/armor/Invisible_layer_2.png";
    }
    return InvisibleArmor.MODID + ":textures/models/armor/Invisible_layer_1.png";
    }
    public boolean getIsRepairable(ItemStack input, ItemStack repair)
    {
    if(repair.getItem() == InvisibleArmor.InvisibleItem)
    {
    return true;
    }
    return false;
    }
        public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
        {
        if(this.armorType == 0 && player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem() == InvisibleArmor.InvisibleChestplate && player.inventory.armorItemInSlot(2) != null && player.inventory.armorItemInSlot(2).getItem() == InvisibleArmor.InvisibleLeggings && player.inventory.armorItemInSlot(3) != null && player.inventory.armorItemInSlot(3).getItem() == InvisibleArmor.InvisibleBoots)
        {
    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
        }
        }
    }
    

    Voilà le code. Quand on met une pièce de l'armure, ça fait rien. Si on met toute l'armure, ça fait … RIEN
    PS : j'ai testé avec uniquement ça :

        public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
        {
        if(player.inventory.armorItemInSlot(0) != null && player.inventory.armorItemInSlot(0).getItem() == InvisibleArmor.InvisibleHelmet)
        {
         player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
        }
    

    et ça marche pas non plus ... Le problème vient de là.
    Aujourd'hui j'ai compris la vie : je suis passé par le bonus de Robin mais j'ai fait ça avec le onArmorTick. Par contre fallait deviner que il fallait remplacer le [font=monospaceevent][font=monospace.][font=monospaceentityLiving par player. Pour toutes les moddeurs futurs qui galèreront peut être là dessus voici un code :]
    [font=monospace```java
        public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
    ]
        {

    ItemStack Boots = player.getEquipmentInSlot(1);

    ItemStack Leggings = player.getEquipmentInSlot(2);

    ItemStack Chestplate = player.getEquipmentInSlot(3);

    ItemStack Helmet = player.getEquipmentInSlot(4);

    if(Boots != null && Boots.getItem() == InvisibleArmor.InvisibleBoots && Leggings != null && Leggings.getItem() == InvisibleArmor.InvisibleLeggings && Chestplate != null && Chestplate.getItem() == InvisibleArmor.InvisibleChestplate && Helmet != null && Helmet.getItem() == InvisibleArmor.InvisibleHelmet)

    {

    player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 20, 0));
    [font=monospace    }

    %(#000000)[[font=monospace]Sinon merci de votre aide. Problème résolu :)]