• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Problème de projectile

    1.7.x
    1.7.2
    4
    10
    1814
    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.
    • P
      Portuar dernière édition par

      Mon projectile est créer, peux se lancer mais aucune collision. Voila la fonction concerné :

      /**
          * Called when this EntityFireball hits a block or entity.
          */
         protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
         {
             if (!this.worldObj.isRemote)
             {
                 if (par1MovingObjectPosition.entityHit != null)
                 {
                     par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeFireballDamage(this, this.shootingEntity), 6.0F);
                 }
      
                 this.worldObj.setBlock((int)this.posX, (int)this.posY, (int)this.posZ, Block.getBlockById(87));
                 this.worldObj.newExplosion((Entity)null, this.posX, this.posY, this.posZ, (float)this.field_92057_e, true, this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"));
                 this.setDead();
             }
         }
      
      1 réponse Dernière réponse Répondre Citer 0
      • P
        Portuar dernière édition par

        Bon, j’ai un peu avancé en réalité le bug ne vient pas de la sa vient encore une fois de ceci :

        final Minecraft minecraft = FMLClientHandler.instance().getClient();
        final EntityPlayer player = minecraft.thePlayer;
        
        

        Mias je ne vois pas comment le remplacé dans cette event :

        @SubscribeEvent
        public void keyinput(KeyInputEvent event)
        {
        }
        
        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

          KeyInputEvent n’est que déclenché en client, si tu veux faire des actions côtés serveur avec, il faut envoyer un paquet.

          1 réponse Dernière réponse Répondre Citer 0
          • P
            Portuar dernière édition par

            Encore c’est packet, il n’y as pas d’event autre que celui la qui effectue la même chose ?

            1 réponse Dernière réponse Répondre Citer 0
            • Gugu
              Gugu dernière édition par

              L’input de touches, c’est uniquement côté Client, donc oui, les packets sont obligatoires ^^

              "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
              ― Jordan B. Peterson

              1 réponse Dernière réponse Répondre Citer 0
              • P
                Portuar dernière édition par

                Et je doit faire quoi donc ?

                1 réponse Dernière réponse Répondre Citer 0
                • Gugu
                  Gugu dernière édition par

                  Quand la touche voulue est pressée, tu envoies un packet. Je te conseille de prendre les classes de l’API FFMT qui gèrent les packets ( Juste a donner les crédits dans ton mod ) pour avoir un système de packet efficace.

                  "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                  ― Jordan B. Peterson

                  1 réponse Dernière réponse Répondre Citer 0
                  • P
                    Portuar dernière édition par

                    au pire j’ai une autre idée j’ai juste a faire en sort que quand j’appuie sur la touche un boolean devient true et après je récupéré cette variable dans un autre event no ?___Bon je up pour dire que j’avance sa à l’air de marcher le problème c’est que quand j’appuie sur ma touche la valeur n’a pas le temps d’être envoyer a mon event player avant d’être retourner 0, voila mais deux event :

                    @SubscribeEvent
                    public void alterationPower_1(PlayerEvent event)
                    {
                    ExtendedEntityPropAlteration props = ExtendedEntityPropAlteration.get(event.entityPlayer);
                    
                    if(props.projectile == 1)
                    {
                    Vec3 look = event.entityPlayer.getLookVec();
                    
                    EntityFireProjectile entityfireball = new EntityFireProjectile(event.entityPlayer.worldObj, event.entityPlayer, 1, 1, 1);
                    entityfireball.setPosition(event.entityPlayer.posX + look.xCoord * 2, event.entityPlayer.posY + look.yCoord * 2, event.entityPlayer.posZ + look.zCoord * 2);
                    entityfireball.accelerationX = look.xCoord * 0.1;
                    entityfireball.accelerationY = look.yCoord * 0.1;
                    entityfireball.accelerationZ = look.zCoord * 0.1;
                    
                    event.entityPlayer.worldObj.playSoundAtEntity(event.entityPlayer, "fire.ignite", 0.5F, 0.4F);
                    event.entityPlayer.swingItem();
                    event.entityPlayer.worldObj.spawnEntityInWorld(entityfireball);
                    
                    System.out.println("aga");
                    }
                    }
                    
                    @SubscribeEvent
                    public void keyAlteration(KeyInputEvent event)
                    {
                    final Minecraft minecraft = FMLClientHandler.instance().getClient();
                    final EntityPlayer player = minecraft.thePlayer;
                    
                    ExtendedEntityPropAlteration props = ExtendedEntityPropAlteration.get(player);
                    
                    if(this.spell_1.isPressed() && props.getAlterationLvl() > 2 && props.getAlteration() == 0)
                    {
                    props.setBooleanProjectile(1);
                    
                    System.out.println("" + props.getBooleanProjectile());
                    }
                    else
                    {
                    props.setBooleanProjectile(0);
                    }
                    }
                    
                    

                    PS : j’ai testé les boules s’envoyent bien le problème ne vient pas de la.

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

                      24h avant un up ……
                      De plus si tu ne fais pas de packet ça marcheras peut-être en solo mais pas en multi …

                      ^^

                      1 réponse Dernière réponse Répondre Citer 0
                      • P
                        Portuar dernière édition par

                        Non mais c’etait pas un up dans le sens “up”, j’ai avancer, le problème avance et donc je ne cherche pas à avoir la même réponse. Et pour les packet faut que je me renseigne mais les properties utilise les packets hors j’utilise les properties donc logiquement j’utilise les packet.


                        Okay j’ai réussi enfète c’était vraiment VRAIMENT tout bête et je suis désolé d’avoir déranger pour si peu voila je pensai que l’event KeyInputEvent était obligatoire pour récupéré si le joueur tape sur la touche ou non mais enfete rien du tout donc j’ai juste rajouté isPressed dans l’event playerEvent.

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

                        MINECRAFT FORGE FRANCE © 2018

                        Powered by NodeBB