MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Détecter si un item moddé est dans la main gauche

    Planifier Épinglé Verrouillé Déplacé Résolu 1.16.x
    1.16.x
    8 Messages 2 Publieurs 549 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • L Hors-ligne
      Lunyx
      dernière édition par Lunyx

      Bonjour,
      ça fait déjà plusieurs jours que je fais face à un problème: je n’arrive pas à trouver un moyen de détecter si un item moddé est dans la main gauche,
      en fait je voudrais faire en sorte que lorsque l’item est dans la main gauche, le joueur ait un effet permanent, et quand il l’enlève, l’effet disparaît.
      Pour faire ça, j’ai tenté d’utiliser les events mais je n’ai pas trouvé d’event fonctionnel pour ça…
      Du coup aujourd’hui je vous demande de l’aide.

      Merci beaucoup à ceux qui tenteraient de m’aider, ne serait-ce que pour me donner une piste !

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Bonsoir,

        Regardes du côté de PlayerTickEvent.
        Tu peux ensuite utiliser event.getPlayer().inventory.getItem(Hand.OFF_HAND) pour avoir l’item stack dans la main secondaire (j’ai donnée le code de tête, probable qu’il soit pas 100% juste)

        L 1 réponse Dernière réponse Répondre Citer 0
        • L Hors-ligne
          Lunyx @robin4002
          dernière édition par Lunyx

          @robin4002 Bonsoir, merci beaucoup pour l’aide ! Cependant, tout fonctionne sauf un point…(J’ai dû pas mal modifier le code pour récupérer l’item)
          En fait je n’arrive pas à entrer le paramètre de la main, j’ai tenté de chercher un peu, et rien…
          Voici ce que j’ai tenté:

              @SubscribeEvent
              public static void onItemLeftHand(TickEvent.PlayerTickEvent event) {
                  System.out.println(event.player.inventory.getCurrentItem(Hand.OFF_HAND));
              }
          

          Mais malheureusement le paramètre “Hand.OFF_HAND” ne semble pas autorisé…
          Une idée ?

          EDIT:
          J’ai trouvé quelque chose de concluant:

              @SubscribeEvent
              public static void onItemLeftHand(TickEvent.PlayerTickEvent event) {
                  System.out.println(event.player.inventory.offHandInventory);
              }
          
          1 réponse Dernière réponse Répondre Citer 0
          • L Hors-ligne
            Lunyx
            dernière édition par Lunyx

            Bon j’ai réussi à chopper l’item, mais je ne trouve pas comment checker si c’en est un en particulier…
            J’ai tenté == et .equals(), mais aucun des deux ne fonctionnent
            Ça marche pas car c’est un itemstack qui est retourné…

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              event.player.inventory.offHandInventory.getItem() == ClasseItem.NOM

              L 1 réponse Dernière réponse Répondre Citer 0
              • L Hors-ligne
                Lunyx @robin4002
                dernière édition par

                @robin4002 Le soucis avec ça, c’est que getItem() ne fonctionnait pas, du coup j’ai trouvé quelque chose d’encore mieux…

                    @SubscribeEvent
                    public static void onItemLeftHand(TickEvent.PlayerTickEvent event) {
                        if(event.player.getHeldItem(Hand.OFF_HAND).getItem() == ModItems.FAST_HIT_BOOK.get()) {
                            // Encore du code par ici...
                        }
                    }
                

                Juste petite question, j’ai mis ça dans la classe de mon Item, et du coup j’ai rajouté “@Mod.EventBusSubscriber(modid = VanillaPlus.MODID)” avant le code de la classe, est-ce une bonne pratique ? Ou je devrais faire autrement ?

                1 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  La bonne pratique en général c’est plutôt d’avoir des classes dédiés aux events et ne pas éparpiller les events partout.

                  L 1 réponse Dernière réponse Répondre Citer 0
                  • L Hors-ligne
                    Lunyx @robin4002
                    dernière édition par

                    @robin4002 Ok, très bien, merci beaucoup pour toute l’aide 🙂

                    1 réponse Dernière réponse Répondre Citer 0
                    • 1 / 1
                    • Premier message
                      Dernier message
                    Design by Woryk
                    ContactMentions Légales

                    MINECRAFT FORGE FRANCE © 2024

                    Powered by NodeBB