Navigation

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

    SOLVED Augmenter les dégats des flèches par rapport aux arcs

    1.7.x
    1.7.10
    3
    6
    593
    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.
    • LavaPower
      LavaPower last edited by

      Bonjour, je souhaite augmenter les dégâts fait par les flèches normales suivant l’arc que le joueur a.

      J’ai donc fait ce code :
      :::

      @SubscribeEvent
         public void onEntityJoin(LivingHurtEvent event)
         {
             if(event.source.isProjectile())
             {
                 if(event.source.getSourceOfDamage() != null && event.source.getSourceOfDamage() instanceof EntityPlayer)
                 {
                     EntityPlayer shooter = (EntityPlayer)event.source.getSourceOfDamage();
                     System.out.println("Touché");
                     if(shooter.inventory.hasItem(ItemMod.Androrium_Bow))
                     {
                         event.ammount += 4;
                     }
                     if(shooter.inventory.hasItem(ItemMod.Axinite_Bow))
                     {
                         event.ammount += 3;
                     }
                     if(shooter.inventory.hasItem(ItemMod.Mangano_Bow))
                     {
                         event.ammount += 2;
                     }
                     if(shooter.inventory.hasItem(ItemMod.Natrolite_Bow))
                     {
                         event.ammount += 1;
                     }
                 }
             }
      

      :::

      Cependant, le System.out.println n’est jamais appelé donc l’augmentation des dégâts ne peut pas avoir lieu

      Pouvez-vous m’aider ?

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

        Salut, essaie de mettre des println pour voir où MC arrete de lire ton code.

        1 Reply Last reply Reply Quote 0
        • robin4002
          robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

          ❗ Note: instanceof null renvoie false. Donc ton instanceof sert déjà de null check, tu peux le retirer.

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

            En utilisant plusieurs System.out.println, j’ai remarqué que la condition if(event.source.getSourceOfDamage() instanceof EntityPlayer) n’était jamais sur True.
            Je suppose qu’au lieu de retourner le joueur qui a tiré la flèche, elle retourne la flèche mais alors, comment avoir le tireur de celle-ci ?

            EDIT : C’est confirmé car System.out.println(event.source.getSourceOfDamage().getClass()); me retourne class net.minecraft.entity.projectile.EntityArrow

            1 Reply Last reply Reply Quote 0
            • robin4002
              robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

              Normalement les dégâts de flèche sont du type IndirectDamageSource et dans cette classe il y a une fonction du genre getIndirectSource qui te permet d’avoir le joueur.

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

                Je suis passé par un autre moyen :

                • Je récupère la flèche avec le event.source.getSourceOfDamage() dans  une variable arrow
                • Je récupère le joueur avec arrow.shootingEntity
                • Je vérifie s’il tiens mon arc moddé, si oui, j’augmente les dégats (event.ammount)

                Merci quand même

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

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB