Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    SOLVED [1.7.10] Détection d'un clic droit avec un item spécifique dans la main

    1.7.x
    1.7.10
    3
    7
    73
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      kraniax last edited by kraniax

      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.

      1 Reply Last reply Reply Quote 0
      • JustAnDev
        JustAnDev last edited by JustAnDev

        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

        1 Reply Last reply Reply Quote 0
        • JustAnDev
          JustAnDev last edited by

          le code dans la classe de l’item = la classe de l’item a detecter

          1 Reply Last reply Reply Quote 0
          • SpyMan
            SpyMan last edited by

            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

            1 Reply Last reply Reply Quote 0
            • JustAnDev
              JustAnDev last edited by JustAnDev

              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

              1 Reply Last reply Reply Quote 0
              • JustAnDev
                JustAnDev last edited by

                p.setHealth est en fait this.setHealth et ajoute la methode

                1 Reply Last reply Reply Quote 0
                • K
                  kraniax last edited by kraniax

                  Merci, ça marche.

                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Design by Woryk
                  Contact / Mentions Légales / Faire un don

                  MINECRAFT FORGE FRANCE © 2018

                  Powered by NodeBB