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

    Solved Effet de knockback

    1.11.x
    1.11.x
    3
    13
    1899
    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.
    • MrCupCakeMonster
      MrCupCakeMonster last edited by

      Bonjour à tous,
      ça fait maintenant 2 jours que je me casses la tête pour ajouter un effet de knockback que je clic droit sur une entité avec un item spécifique.
      Eclipse n’affiche aucune erreur, mais cela ne marche simplement pas. Voici le code :

      @Override
      public ActionResult <itemstack>onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
      
      Minecraft mc = Minecraft.getMinecraft();
      RayTraceResult rayTrace = mc.objectMouseOver;
      Entity entity = rayTrace.entityHit;
      
      if (rayTrace.entityHit != null) {
      if (rayTrace.entityHit instanceof EntityLivingBase) {
      ((EntityLivingBase) rayTrace.entityHit).knockBack(playerIn, 5, (double) MathHelper.sin(playerIn.rotationYaw * 0.017453292F),
      (double) (-MathHelper.cos(playerIn.rotationYaw * 0.017453292F)));
      }
      }
      return new ActionResult(EnumActionResult.SUCCESS, playerIn.getHeldItem(handIn));
      }
      

      J’ai cru comprendre qu’a la place de mettre l’argument playerIn de onItemRightClick() directement dans la méthode knockback, il faudrait avoir un argument de type EntityPlayerMP.
      Seulement je ne sais pas comment l’instancier.

      Merci d’avance</itemstack>

      Mes tutos :

      >! Un item mangeable
      [url=http://www.minecraftforgefranc…

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

        Salut,
        La méthode knockback est à appeler uniquement côté serveur comme elle gère les motion. Par ailleurs le paramètre Entity est inutilisée dans la déclaration de la méthode, donc peu importe ce que tu mets, le soucis ne peut venir de là.
        En revanche, toi tu as besoin de get l’entity visée par un outil client side, le ray tracer. Donc tu as besoin d’un packet à envoyer au serveur avec l’id de l’entity visée, que tu pourras ensuite instancier côté serveur à l’aide d’un World#getEntityByID, afin d’appeler la fonction knockback.
        D’autres questions ?

        PS = Pour le moment, méfies toi de ta variable Minecraft, le serveur dédié n’aimera pas du tout au lancement, et crashera avec un ClassNotFoundException.

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

          Donc je dois utiliser MonMod.network.sendToServer(); ?
          Et a l’intérieur je met quoi ?

          Mes tutos :

          >! Un item mangeable
          [url=http://www.minecraftforgefranc…

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

            @‘Plaigon’:

            Donc tu as besoin d’un packet à envoyer au serveur avec l’id de l’entity visée, que tu pourras ensuite **instancier **côté serveur à l’aide d’un World#getEntityByID, afin **d’appeler **la fonction knockback.

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

              Faut-il donc que j’ajoute a ma classe de Packet une nouvelle variable de knockback ?

              Car pour l’instant j’ai réussi à trouver ça :

              ModSWMod.network.sendToServer(new PacketCapabilitiesSWMod());

              A vrai dire j’avance très lentement car j’ai beaucoup de mal à comprendre le network

              Mes tutos :

              >! Un item mangeable
              [url=http://www.minecraftforgefranc…

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

                Non, il faut que l’appel de la fonction knockback sur ton entity visée soit fait côté serveur (dans ton ta fonction onMessage de ta sous-classe Handler) plutôt que côté client (dans ta fonction onItemRightClick).

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

                  Je ne comprends vraiment pas ce que je dois faire.
                  Où est ce que je dois mettre mon code pour le knockback ? Dans un event ? Le laisser dans onItemRightClick ?
                  Comment je suis sensé envoyé l’ID de l’entité au serveur ? Je ne sais pas comment il faut faire et faut il créer une nouvelle variable ?
                  Une fois que j’ai envoyé le packet, comment je peux instancier cette entité ?

                  N’as tu pas un bout de code à me fournir, cela pourrait être plus explicite et je pourrai comprendre mieux ?

                  Mes tutos :

                  >! Un item mangeable
                  [url=http://www.minecraftforgefranc…

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

                    “Où est ce que je dois mettre mon code pour le knockback ? Dans un event ? Le laisser dans onItemRightClick ?”
                    –>
                    @‘Plaigon’:

                    il faut que l’appel de la fonction knockback […] dans ton ta fonction onMessage de ta sous-classe Handler

                    “Comment je suis sensé envoyé l’ID de l’entité au serveur ? Je ne sais pas comment il faut faire et faut il créer une nouvelle variable ?”
                    Tu as la méthode Entity#getEntityId, tout bêtement.

                    “Une fois que j’ai envoyé le packet, comment je peux instancier cette entité ?”
                    Une fois le packet reçu* plutôt
                    –>
                    @‘Plaigon’:

                    avec l’id de l’entity visée, que tu pourras ensuite instancier côté serveur à l’aide d’un World#getEntityByID

                    A mettre dans un try, au cas où l’id ne soit pas bon/l’entity ne puisse pas être instancé !

                    “N’as tu pas un bout de code à me fournir, cela pourrait être plus explicite et je pourrai comprendre mieux ?”
                    Tu dois savoir apprendre par toi même, surtout cette notion. En revanche MFF est là pour te mettre sur la piste !

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

                      Merci pour ton aide et merci pour le tuto même si je l’ai déjà lu, est ce que je dois faire une nouvelle classe de packet exprès pour ce que je veux faire ?

                      Mes tutos :

                      >! Un item mangeable
                      [url=http://www.minecraftforgefranc…

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

                        Peut-être que MC a déjà un packet adapté (notamment lors du middle click sur un entity pour get son oeuf). Faut que tu diriges tes recherches vers ceci, si tu veux éviter ta propre classe de packet, qui disons le, ne contiendrais pas grand chose.

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

                          Pourquoi faire simple quand on peut faire compliqué ?

                          onItemRightClick est utilisé quand tu fais click droit en général, mais il existe la même chose pour le click sur une entité : itemInteractionForEntity -> pas besoin de rayTrace et pas besoin de packet !

                          1 Reply Last reply Reply Quote 1
                          • MrCupCakeMonster
                            MrCupCakeMonster last edited by

                            Franchement je ne comprends rien du tout, je n’y arrive pas.
                            EDIT : je vais essayer ton idée


                            Merci ça marche ^^

                            Mes tutos :

                            >! Un item mangeable
                            [url=http://www.minecraftforgefranc…

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

                              Bien joué, je n’en n’avais plus connaissance !

                              EDIT = LeBossMax2, ce serait plutôt “Pourquoi faire compliqué quand on peut faire simple ?” 😃

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

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB