Résolu 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.
-
:‘( 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 …
-
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 :)]