Résolu Condition pour Armure
-
Bonjour, je suis en train de finaliser mon mod minecraft.
il ne me manque plus qu’une seule chose pour achever celui-ci :j’aimerais, activer un effet de potion non quant on porte une partie de l’armure, mais l’armure complete.
je m’explique : imaginons que je crée une armure en obsidienne, j’aimerais que seulement quand je m’equipe des 4 slots de l’armure l’effet soit activé.
il ne serait pas actif si je possede sur moi uniquement le casque et le pantalon par exemple. Il faut que je m’équipe du casque en obsidienne, du plastron en obsidienne, du pantalon en obsidienne et des bottes en obsidienne pour que l’effet soit activé.je suis “débutant” en java, j’ai donc essayé par moi meme et avec quelques connaissances de faire cette fameuse condition (j’ai pris l’exemple de la nightvison pour l’effet donné une fois la condition respectée) :
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { if((this.armorType == 0 && this == ItemMod.obsidienne_helmet) && (this.armorType == 1 && this == ItemMod.obsidienne_chestplate) && (this.armorType == 2 && this == ItemMod.obsidienne_leggings) && (this.armorType == 3 && this == ItemMod.obsidienne_boots)) { player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), 60, 1)); } }
Mais le probleme, c’est que cette derniere ne marche pas, quand j’equipe mon armure en obsidienne, rien ne se passe…
Apres de nombreuses heures de recherche, je n’ai rien trouvé sur internet, donc je fais appelle à vous pour m’aider.
J’espere vous avoir donné les détails suffisant pour que vous puissiez me repondre ^^
Sur ce Bonne journée a tousCordialement, AzeFire
-
Salut à toi le nouveau !
C’est mignon ^^
if((this.armorType == 0 && this == ItemMod.obsidienne_helmet) && (this.armorType == 1 && this == ItemMod.obsidienne_chestplate) && (this.armorType == 2 && this == ItemMod.obsidienne_leggings) && (this.armorType == 3 && this == ItemMod.obsidienne_boots)) { player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), 60, 1)); }
Tu as compris le principe seulement essayes de regarder ton code avec une vision extérieure.
La condition n’arrive pas à être vérifiée:
if((this.armorType == 0 && this == ItemMod.obsidienne_helmet) && (this.armorType == 1 && this == ItemMod.obsidienne_chestplate) && (this.armorType == 2 && this == ItemMod.obsidienne_leggings) && (this.armorType == 3 && this == ItemMod.obsidienne_boots))
this.armorType == 0 && this.armorType == 1, comment tu veux qu’un nombre soit en même temps égal à 0 et à 1 ? ^^
Si j’étais toi je ferai comme ceci:
if(player.inventory.armorInventory[0] != null && player.inventory.armorInventory[1] != null && player.inventory.armorInventory[2] != null && player.inventory.armorInventory[3] != null) // Si tout ces slots d'armure sont remplies { if(player.inventory.armorInventory[0].getItem().equals(ItemMod.obsidienne_helmet && player.inventory.armorInventory[1].getItem().equals(ItemMod.obsidienne_chestplate && player.inventory.armorInventory[2].getItem().equals(ItemMod.obsidienne_leggings && player.inventory.armorInventory[3].getItem().equals(ItemMod.obsidienne_boots)) // Si tout ces slots comprennent bien ta bonne armure d'obsidienne { player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), 60, 1)); // Alors on donne l'effet :) } }
Cependant cette fonction onArmorTick ets peut-être appelé trop de fois et dans ce cas agit en conséquences sur les paramètres de ton effet
Salut !
-
Salut,
C’est vraiment désespérant de voir une nouvelle demande d’aide concernant une question qui a déjà été demandé et répondu au moins 5 fois et qui en plus la réponse se trouve dans le bonus du tutoriel sur les armures.
https://www.minecraftforgefrance.fr/showthread.php?tid=674#bonus2
Mais bienvenue quand même sur le forum !
-
Merci beaucoup pour vos réponses ^^
Malheureusement je n’arrive toujours pas faire se que je voudrais…j’ai suivi le tutoriel qu’a fait robin4002 mais je n’arrive pas à ajouter l’effet…
je vous ai mis le screenshot
-
Il faudrait peut-être créer ta variable player, nan ?
-
Merci ^^
Et maintenant ? x)
-
@‘AzeFire’:
Merci ^^
Et maintenant ? x)
Tu veux que ce soit l’entité qui reçoit l’effet donc tu met “event.entityLiving” à la place de “player”
-
Cela ne marche toujours pas…
Ca fait depuis ce matin que j’essaye de faire marcher mon event…
-
@‘AzeFire’:
Cela ne marche toujours pas…
Ca fait depuis ce matin que j’essaye de faire marcher mon event…
As-tu bien enregistré ta class d’event ? Et as-tu essayé avec d’autres valeurs pour l’effet de potion (comme 60 et 1, comme c’était au début ?)
-
oui, ma classe d’event est bien enregistrer, j’ai suivi le tuto que robin4002 a fait concernant les armures, mais je n’arrive pas a ajouter d’effet au joueur quand l’armure complete est equipée…
j’ai chnagé les valeurs mais rien ne change…
-
@‘AzeFire’:
oui, ma classe d’event est bien enregistrer, j’ai suivi le tuto que robin4002 a fait concernant les armures, mais je n’arrive pas a ajouter d’effet au joueur quand l’armure complete est equipée…
j’ai chnagé les valeurs mais rien ne change…
A oui, c’est normal, tu as utilisé l’event “LivingHurtEvent” qui se déclanche qand une entité prend des dégâts Il te faut plutôt “LivingUpdateEvent” comme ça, tous les ticks, si le joueur a l’armure, il aura l’effet.