Résolu Augmenter les dégats des flèches par rapport aux arcs
-
Bonjour, je souhaite augmenter les dégâts fait par les flèches normales suivant l’arc que le joueur a.
J’ai donc fait ce code :
:::@SubscribeEvent public void onEntityJoin(LivingHurtEvent event) { if(event.source.isProjectile()) { if(event.source.getSourceOfDamage() != null && event.source.getSourceOfDamage() instanceof EntityPlayer) { EntityPlayer shooter = (EntityPlayer)event.source.getSourceOfDamage(); System.out.println("Touché"); if(shooter.inventory.hasItem(ItemMod.Androrium_Bow)) { event.ammount += 4; } if(shooter.inventory.hasItem(ItemMod.Axinite_Bow)) { event.ammount += 3; } if(shooter.inventory.hasItem(ItemMod.Mangano_Bow)) { event.ammount += 2; } if(shooter.inventory.hasItem(ItemMod.Natrolite_Bow)) { event.ammount += 1; } } }
:::
Cependant, le System.out.println n’est jamais appelé donc l’augmentation des dégâts ne peut pas avoir lieu
Pouvez-vous m’aider ?
-
Salut, essaie de mettre des println pour voir où MC arrete de lire ton code.
-
Note: instanceof null renvoie false. Donc ton instanceof sert déjà de null check, tu peux le retirer.
-
En utilisant plusieurs System.out.println, j’ai remarqué que la condition if(event.source.getSourceOfDamage() instanceof EntityPlayer) n’était jamais sur True.
Je suppose qu’au lieu de retourner le joueur qui a tiré la flèche, elle retourne la flèche mais alors, comment avoir le tireur de celle-ci ?EDIT : C’est confirmé car System.out.println(event.source.getSourceOfDamage().getClass()); me retourne class net.minecraft.entity.projectile.EntityArrow
-
Normalement les dégâts de flèche sont du type IndirectDamageSource et dans cette classe il y a une fonction du genre getIndirectSource qui te permet d’avoir le joueur.
-
Je suis passé par un autre moyen :
- Je récupère la flèche avec le event.source.getSourceOfDamage() dans une variable arrow
- Je récupère le joueur avec arrow.shootingEntity
- Je vérifie s’il tiens mon arc moddé, si oui, j’augmente les dégats (event.ammount)
Merci quand même