MFF

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

    Envoyer des boules de feu

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    23 Messages 5 Publieurs 4.3k 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.
    • bin4r1sB Hors-ligne
      bin4r1s
      dernière édition par

      1. double d0 = player.getLookVec().xCoord;
      2. double d1 = player.getLookVec().yCoord;
      3. double d2 = player.getLookVec().zCoord;

      Normalement c’est ça mais quand on regarde le ciel, ça récupère le bloc de juste après le joueur.

      Mes mods:

      • New Ores
      • More Dragons
      1 réponse Dernière réponse Répondre Citer 0
      • sosohS Hors-ligne
        sosoh
        dernière édition par

        Moi je veux le bloques que le joueur regardes pour viser en gros

        Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

          J’ai trouvé aussi EntityPlayer.getLook(float) mais je ne vois pas trop comment m’en servir. Sinon je ne crois pas qu’il y ait autre chose pour récupérer le regard (bloc visé) du joueur.

          Mes mods:

          • New Ores
          • More Dragons
          1 réponse Dernière réponse Répondre Citer 0
          • bin4r1sB Hors-ligne
            bin4r1s
            dernière édition par

            Up, quelqu’un ?

            Mes mods:

            • New Ores
            • More Dragons
            1 réponse Dernière réponse Répondre Citer 0
            • bin4r1sB Hors-ligne
              bin4r1s
              dernière édition par

              Up, ça marche mais c’est toujours aussi buggué, quelqu’un a une idée, une piste ?

              Mes mods:

              • New Ores
              • More Dragons
              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

                Sinon il y a la fonction rayTrace mais elle n’est que disponible côté client.

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

                  Essaie peut être de lui donner un motion, je sais que quand je faisait des commandes pour les command bloc, il fallait rajouter le tag NBT Motion:[0.0,0.0,0.0], il doit bien y avoir une méthode comme ça dans le code du ghast. Je ne peux pas vérifier dans l’immédiat mais est-ce qu’il y a un autre constructeur pour la boule de ghast qui aurait comme paramètre une vélocité ou quelque chose d’autre dans le genre ?

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

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

                    @robin4002
                    Merci, je teste.
                    De toute façon j’exécute mon code côté client donc ça devrait aller.

                    @SCAREX
                    Je regarde de suite mais il me semble que non (j’avais regardé chez le blaze)

                    EDIT:

                    
                    double d5 = this.targetedEntity.posX - this.posX;
                    double d6 = this.targetedEntity.boundingBox.minY + (double)(this.targetedEntity.height / 2.0F) - (this.posY + (double)(this.height / 2.0F));
                    double d7 = this.targetedEntity.posZ - this.posZ;
                    
                    […]
                    EntityLargeFireball entitylargefireball = new EntityLargeFireball(this.worldObj, this, d5, d6, d7);
                    entitylargefireball.field_92057_e = this.explosionStrength;
                    double d8 = 4.0D;
                    Vec3 vec3 = this.getLook(1.0F);
                    entitylargefireball.posX = this.posX + vec3.xCoord * d8;
                    entitylargefireball.posY = this.posY + (double)(this.height / 2.0F) + 0.5D;
                    entitylargefireball.posZ = this.posZ + vec3.zCoord * d8;
                    this.worldObj.spawnEntityInWorld(entitylargefireball);
                    

                    Donc toujours le même problème de la cible.

                    J’ai regardé rayTrace mais je ne vois pas trop quoi mettre comme paramètres.
                    Comment récupérer une MovingObjectPosition et à quoi correspond-t-elle ?
                    A quoi correspond le float ?

                    Mes mods:

                    • New Ores
                    • More Dragons
                    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

                      Le premier et la distance, le deuxième je ne sais pas du tout ce qu’il fait. Essaye avec 0 ou 1.
                      MovingObjectPosition mop = player.rayTrace(64, 1);
                      Après avec le mop tu peux savoir si le joueur vise un bloc ou une entité, et tu peux avoir les coordonnés.

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

                        @‘robin4002’:

                        Le premier et la distance, le deuxième je ne sais pas du tout ce qu’il fait. Essaye avec 0 ou 1.
                        MovingObjectPosition mop = player.rayTrace(64, 1);
                        Après avec le mop tu peux savoir si le joueur vise un bloc ou une entité, et tu peux avoir les coordonnés.

                        Il me semble que j’avais utilisé une fonction similaire mais avec des sinus cosinus etc. et la méthode se trouvait dans la classe world, est-ce la même fonction ?

                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                        Pas de demandes de support par MP ni par skype SVP.
                        Je n'accepte sur skype que l…

                        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, rayTrace se trouve dans EntityLivingBase

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

                            @‘robin4002’:

                            non, rayTrace se trouve dans EntityLivingBase

                            Je vérifierai plus tard.

                            Site web contenant mes scripts : http://SCAREXgaming.github.io

                            Pas de demandes de support par MP ni par skype SVP.
                            Je n'accepte sur skype que l…

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

                              Merci, je teste 🙂

                              EDIT :
                              Avec ce code, la boule de feu part toujours dans la même direction :

                              
                              double d5;
                              
                              double d6;
                              double d7;
                              
                              MovingObjectPosition mop = player.rayTrace(128.0D, 1);
                              
                              if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
                              {
                                          d5 = mop.blockX;
                                          d6 = mop.blockY;
                                          d7 = mop.blockZ;
                              }
                              else if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY)
                              {
                                          d5 = mop.entityHit.posX;
                                          d6 = mop.entityHit.posY;
                                          d7 = mop.entityHit.posZ;
                              }
                              else
                              {
                                          d5 = player.getLookVec().xCoord;
                                          d6 = player.getLookVec().yCoord;
                                          d7 = player.getLookVec().zCoord;
                              }
                              
                              EntitySmallFireball entitylargefireball = new EntitySmallFireball(player.worldObj, player, d5, d6, d7);
                              double d8 = 4.0D;
                              Vec3 vec3 = player.getLook(1.0F);
                              entitylargefireball.posX = player.posX + vec3.xCoord * d8;
                              entitylargefireball.posY = player.posY + (double)(player.height / 2.0F) + 0.5D;
                              entitylargefireball.posZ = player.posZ + vec3.zCoord * d8;
                              player.worldObj.spawnEntityInWorld(entitylargefireball);
                              
                              

                              J’ai testé avec rayTrace(128, 0) et rayTrace(128, 1), je vais tester d’autres valeurs demain.

                              Mes mods:

                              • New Ores
                              • More Dragons
                              1 réponse Dernière réponse Répondre Citer 0
                              • bin4r1sB Hors-ligne
                                bin4r1s
                                dernière édition par

                                Après test, le deuxième argument de rayTrace semble contrôler la direction, sauf qu’il m’est impossible de savoir réellement si la boule de feu va partir dans la bonne direction ou non (c’est assez random semble-t-il).

                                Quelqu’un a une idée ?

                                Mes mods:

                                • New Ores
                                • More Dragons
                                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 désolé 😕

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

                                    J’ai fait quelques recherches avec les codes des blaze et voilà le résultat trouvé :

                                    public class ST18SpawnFireballCommand extends CommandBase
                                    {
                                    @Override
                                    public String getName(){
                                    return "fireball";
                                    }
                                    
                                    @Override
                                    public String getCommandUsage(ICommandSender p_71518_1_){
                                    return null;
                                    }
                                    
                                    @Override
                                    public void execute(ICommandSender sender, String[] args){
                                    if (sender instanceof EntityPlayerMP) {
                                    EntityPlayerMP p = (EntityPlayerMP) sender;
                                    
                                    MovingObjectPosition mop = p.rayTrace(128.0D, 1);
                                    
                                    double tx = mop.hitVec.xCoord;
                                    double ty = mop.hitVec.yCoord;
                                    double tz = mop.hitVec.zCoord;
                                    sender.addChatMessage(new ChatComponentText(String.format("position trouvée : (%.2f, %.2f, %.2f)", tx, ty, tz)));
                                    
                                    double d0 = tx - p.posX;
                                    double d1 = ty - (p.posY + (double) (p.height / 2.0F));
                                    double d2 = tz - p.posZ;
                                    
                                    EntitySmallFireball entitysmallfireball = new EntitySmallFireball(p.worldObj, p, d0, d1, d2);
                                    entitysmallfireball.posY = p.posY + (double) (p.height / 2.0F) + 0.5D;
                                    p.worldObj.spawnEntityInWorld(entitysmallfireball);
                                    }
                                    }
                                    }
                                    

                                    chez moi ça marche parfaitement.

                                    Pour robin : j’ai trouvé la fonction que j’avais utilisé, c’est la fonction rayTrace sauf qu’au moment de l’utiliser elle s’appelée func_147447_a mais se trouvée bien dans World.class

                                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                                    Pas de demandes de support par MP ni par skype SVP.
                                    Je n'accepte sur skype que l…

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

                                      Merci, ça marche !
                                      Un grand GG car sans toi (et robin) je n’aurais pas réussi !

                                      Il y a juste un petit problème, c’est que quand le joueur vise trop près de lui, la boule de feu part à l’opposé 😞

                                      EDIT :
                                      Plus précisément quand il vise un bloc pas trop loin avec le regard un peu penché vers le bas.

                                      Mes mods:

                                      • New Ores
                                      • More Dragons
                                      1 réponse Dernière réponse Répondre Citer 0
                                      • SCAREXS Hors-ligne
                                        SCAREX
                                        dernière édition par

                                        @‘MrBlockTNT’:

                                        Merci, ça marche !
                                        Un grand GG car sans toi (et robin) je n’aurais pas réussi !

                                        Il y a juste un petit problème, c’est que quand le joueur vise trop près de lui, la boule de feu part à l’opposé 😞

                                        EDIT :
                                        Plus précisément quand il vise un bloc pas trop loin avec le regard un peu penché vers le bas.

                                        Le problème est que ça vient du code de la fireball, je suis en train de cherche une autre solution.

                                        EDIT :
                                        le problème vient de là :

                                        
                                        accelX += this.rand.nextGaussian() * 0.4D;
                                        accelY += this.rand.nextGaussian() * 0.4D;
                                        accelZ += this.rand.nextGaussian() * 0.4D;
                                        
                                        

                                        Si la différence entre la position visée et la position du joueur est négative et que cette valeur absolue est inférieure à random.nextGaussian() * 0.4D alors la boule pars de l’autre côté, même chose si le accel est supérieure et le random.nextGaussian() * 0.4D inférieure à la valeur absolue.

                                        Ce que je viens de dire est très confus, voici un example :

                                        
                                        //Ici un exemple de distance entre le joueur et la coordonnée visée, ici il y a 0.4 blocs de distance
                                        accelX = -0.4D;
                                        //Imaginons maintenant que le random.nextGaussian() * 0.4D donne 0.6D
                                        accelX += 0.6D //soit 0.2D donc la boule de feu part de l'autre côté
                                        
                                        

                                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                                        Pas de demandes de support par MP ni par skype SVP.
                                        Je n'accepte sur skype que l…

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

                                        MINECRAFT FORGE FRANCE © 2024

                                        Powered by NodeBB