Résolu [1.7.10] Détection d'un clic droit avec un item spécifique dans la main
-
Bonjour, j’aimerais savoir comment détecter clic droit avec un item spécifique dans la main. J’ai essayé de
@SubscribeEvent public void rightClick(PlayerInteractEvent e){ if(e.action == Action.RIGHT_CLICK_AIR && e.entityPlayer.getCurrentEquippedItem() != null && e.entityPlayer.getCurrentEquippedItem().getItem() == ItemMod.heal){ p.setHealth(20.0F) }
Mon clic est détecté cependant ça fonctionne même lorsque je n’ai pas l’item en main de plus l’action est effectué 2 fois alors que j’ai cliqué qu’une fois pour résoudre ce problème j’ai essayé de faire e.setCanceled(true). Cela a fonctionné cependant je ne pouvais plus lancer de potion, ça exécutait le code à la place.
Merci de votre aide.
-
essaie cela
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { p.setHealth(20.0F) }
il faudra import, mettre le code dans la classe de l’item et modifier a ta facon
-
le code dans la classe de l’item = la classe de l’item a detecter
-
deja c’est normal que le code soit exec 2 fois, car c’est exec une fois client side et une autre fois server side, si tu veux exec le code que server side only alors tu doit verifier si le side est bien celui du server, avec un if world.isRemote == false, disponible dans la class du player, ou utiliser la class FMLCommonHandler qui permet de savoir sur quel side tu te trouve
-
ah oui je l’ai oublié donc c’est cela
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if(!world.isRemote) { p.setHealth(20.0F) } if(!world.isRemote) { stack.stackSize--; } return stack; }
oui j’ai eu la flemme j’ai le code de ma dynamite mais le principe est presque le meme dans ce bout de code
donc c’est en fait ceci -
p.setHealth est en fait this.setHealth et ajoute la methode
-
Merci, ça marche.