MFF

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

    Récupérer le "lanceur" d'une flèche

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    17 Messages 4 Publieurs 3.2k Vues 1 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.
    • mindany2M Hors-ligne
      mindany2
      dernière édition par

      Je vois pas de rapport avec le player 😮
      Tu dis que si l’arc à l’enchant ça utilise une entité(flèche) qui explose ._. non ?

      ^^

      1 réponse Dernière réponse Répondre Citer 0
      • utyboU Hors-ligne
        utybo
        dernière édition par

        Effectivement pas besoin de traquer l’auteur de la flèche pour ça
        Si tu cherches à savoir si la flèche est sur le sol ou non, c’est un tag NBT, ça j’en suis sûr

        Moddeur à la retraite et développeur de trucs en Java.

        J'aide les gens comme je peux, alors si mon message v…

        1 réponse Dernière réponse Répondre Citer 0
        • mindany2M Hors-ligne
          mindany2
          dernière édition par

          Si tu cherches à savoir si la flèche est sur le sol ou non, c’est un tag NBT, ça j’en suis sûr

          Oui effectivement lorsque tu créera l’entité de la flèche explosive tu as :

          
          public void onUpdate()
          {
          super.onUpdate();
          
          if (this.inGround)
          {
          //Je te laisse deviner ^^
          }
          
          }
          

          ^^

          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

            Tu condition ne sera jamais vrai car la flèche n’est pas extends EntityLiving.
            Et dans la classe de la flèche tu as ça :
            public Entity shootingEntity;
            Vérifie juste que l’entity n’est pas null, si elle est tiré par un dispenser, elle sera null.

            1 réponse Dernière réponse Répondre Citer 0
            • ÜberfapÜ Hors-ligne
              Überfap
              dernière édition par

              Robin : ma condition est vrai parce que le event.entity retourne une Entity, pas une EntityLivingBase 😉

              mais merci à toi et a tous les autres 😄

              Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
              Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

              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

                Non, ça ne fonctionnera pas non plus, l’événement LivingSpawnEvent n’est que appelé dans les entités vivantes.
                En revanche, ça :

                @SubscribeEvent
                public void onArrowSpawned(EntityJoinWorldEvent event)
                {
                if(event.entity instanceof EntityArrow)
                {
                EntityArrow arrow = (EntityArrow)event.entity;
                System.out.println("flèche");
                }
                }
                

                ça fonctionne

                1 réponse Dernière réponse Répondre Citer 0
                • ÜberfapÜ Hors-ligne
                  Überfap
                  dernière édition par robin4002

                  Ah ok merci 😄


                  Edit : il se passe un truc assez bizarre 😕

                  avec ce code :

                      @SubscribeEvent
                      public void onArrowSpawned(EntityJoinWorldEvent event) {
                      if (event.entity instanceof EntityArrow) {
                          EntityArrow arrow = (EntityArrow) event.entity;
                              if (arrow.shootingEntity != null) {
                                  System.out.println("flèche" + arrow.shootingEntity);
                              } else {
                                  System.out.println("flèche sans lanceur :'(");
                              }
                          }
                      }
                  

                  dans les logs ça donne ça :

                  flèche EntityPlayerMP['Player867'/193, l='New World', x=-941,55, y=4,00, z=603,81]
                  flèche sans lanceur :'(
                  

                  en gros, il fait le if et le else ? o_O on m’explique s’ils vous plait ?

                  Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
                  Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

                  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

                    Client / Serveur …

                    1 réponse Dernière réponse Répondre Citer 0
                    • ÜberfapÜ Hors-ligne
                      Überfap
                      dernière édition par

                      ah ok x)


                      Edit : merci beaucoup tout le monde, spécialement Robin, mais maintenant je me trouve confronté à un autre problème : commet détecter si la flèche a atteint sa cible (entité ou bloc) ?

                      Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
                      Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

                      1 réponse Dernière réponse Répondre Citer 0
                      • mindany2M Hors-ligne
                        mindany2
                        dernière édition par

                        NBTTag : “inTile” (sur un bloc) et
                        arrow.isDead (entité, il me semble)
                        ^^

                        ^^

                        1 réponse Dernière réponse Répondre Citer 0
                        • ÜberfapÜ Hors-ligne
                          Überfap
                          dernière édition par

                          J’ai testé ça, mais je ne peux tester ça qu’une seule fois dès le début de l’event (donc ça ne marcheras pas). Une boucle while semble adaptée mais fait complètement bugger le jeu 😢

                          Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
                          Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

                          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 seule solution que je vois, c’est mettre un tag dans l’entity data lors du lancement si le joueur à l’enchantement.
                            Ensuite avec un event fml :

                            @SubscribeEvent
                            public void onWorldTick(TickEvent.WorldTickEvent event)
                            {
                            for(Object o : event.world.loadedEntityList)
                            {
                            if(o instanceof EntityArrow)
                            {
                            EntityArrow arrow = (EntityArrow)o;
                            if(arrow.getEntityData().hasKey("explosion"));
                            {
                            // …
                            }
                            }
                            }
                            }
                            

                            C’est la seule solution que je vois, et niveau performance ça risque d’être pas génial 😕

                            1 réponse Dernière réponse Répondre Citer 0
                            • ÜberfapÜ Hors-ligne
                              Überfap
                              dernière édition par

                              d’accord, j’essaye 😉


                              Edit : bon ben je laisse tomber hein ^^

                              Si je t'ai aidé, n'hésites pas à mettre un point de réputation positif !
                              Si tu m'as aidé, je n'hésiterais pas à t'en donner à mon tour !

                              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