Résolu Problème event s'éxecute deux fois
-
Tout mes évènements s’éxecutent deux fois alors qu’ils sont juste sur la side SERVER je ne comprend pas est ce que j’aurai manqué un truc?
°fa-info°(texte d’information)@SubscribeEvent public void onBandageUse(PlayerInteractEvent.EntityInteract e) { if(e.getWorld().isRemote==false){ if (e.getTarget() instanceof EntityPlayer ) { if (e.getEntityPlayer().getHeldItemMainhand() != null) { if (e.getEntityPlayer().getHeldItemMainhand().getItem() == ModItems.bandage) { System.out.println(e.getSide()); ((EntityPlayer) e.getTarget()).heal(2.0F); e.getEntityPlayer().getHeldItemMainhand().shrink(1); } } } } }
Le problème est que quand je cliques droit avec le bandages il heal deux fois plus de coeur et il enlève deux bandage au lieu d’un
-
@clement5188 a dit dans Problème event s'éxecute deux fois :
if(e.getWorld().isRemote==false){
Ça, ça n’existe pas sur minecraft
Ça c’est mieux:
if(!e.getWorld().isRemove)
Et essaie avec
if (e.getTarget() instanceof ServerEntityPlayer)
étant donné que t’es côté serveur maintenant*ServerEntityPlayer peut avoir un autre nom en 1.12.2, et je m’en rappelle plus
-
Il y a deux mains, donc l’event est appelé pour les deux mains. Tu devrais donc check l’item en fonction de la main donnée dans l’event, comme ça ton item fonctionnera aussi dans la main secondaire. En plus, il faut que tu set le result de l’event pour que l’event de l’autre main soit pas appelé.
Aussi, comme c’est ton propre item, tu as pas besoin de passer par un event, c’est mieux d’override la méthode qui correspond dans la classe de ton item.
Et un dernier truc, pour les items, ça sert à rien de check si c’est null, il faut plutôt utiliser la fonction isEmpty pour vérifier qu’il n’y a pas d’item dans le stack -
@ama
ok c’est vrai c’est mieux que ==false
j’ai pas trouvé le ServerEntityPlayer ou un équivalent en 1.12.2 je suppose que c’est EntityPlayer -
@lebossmax2
Le problème était ici merci beaucoup enfaite j’avais pas compris mais il éxecute deux fois l’event une fois pour chaque main merci beaucoup!!!
parcontre je vois pas qu’elle méthode Overide dans la class de l’item tu peux m’éclairer? -