MFF

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

    Redstone + Entity / DamageSource explosion

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    17 Messages 4 Publieurs 3.9k 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.
    • KujarothK Hors-ligne
      Kujaroth
      dernière édition par

      Ok, c’est que c’est un peu le bordel là dedans ^^’

      J’arrive pas a faire fonctionner, que se soit le damage soruce explo ou l’entité qui recoit un signal ><

      Peut etre ça ?     public int getBlockPowerInput(int p_94577_1_, int p_94577_2_, int p_94577_3_)

      Pour chopper la valeur de la redstone + condition si le signal est plus grand que qqch

      ou alors ça : getStrongestIndirectPower qui serai mieux adapter, mais le soucis c’est que je n’arrive pas faire fonctionner cette fonction dans une entity.

      Je continue de creuser.

      Quand au damage source explosion…

      Voici tout ce qui est liée a l’explosion dans le DomageSource.java

      ​   public static DamageSource setExplosionSource(Explosion p_94539_0_)
      
          {
              return p_94539_0_ != null && p_94539_0_.getExplosivePlacedBy() != null ? (new EntityDamageSource("explosion.player", p_94539_0_.getExplosivePlacedBy())).setDifficultyScaled().setExplosion() : (new DamageSource("explosion")).setDifficultyScaled().setExplosion();
          }
      
          public boolean isExplosion()
      
          {
              return this.explosion;
          }
      
          public DamageSource setExplosion()
      
          {
              this.explosion = true;
              return this;
          }
      

      EDIT : Ha bah merde le con… En faite j’avais le bon code, mais la fatigue et la taille de l’ecran, ainsi que mes yeux mon trahit !

      worldObj.getStrongestIndirectPower((int)this.posX, (int)this.posY, (int)this.posZ);
      

      tout bêtement, j’avais juste a mettre un (int) devant les variable de l’entité… Plus qu’a trouver comment faire une zone de detection (genre

      >! Bonjour/Bonsoir,
      >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

      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

        (genre ?
        Utilise plutôt MathHelper.floor_double(this.posX) pour avoir une meilleur précision.

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

          Effectivement, j’avais pas vue que ma phase était incomplète…

          genre une zone de 1 case au dessus/dessous/cotés.

          >! Bonjour/Bonsoir,
          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

          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

            boolean redstone = worldObj.getStrongestIndirectPower(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ) || worldObj.getStrongestIndirectPower(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY) - 1, MathHelper.floor_double(this.posZ) || worldObj.getStrongestIndirectPower(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY) + 1, MathHelper.floor_double(this.posZ); …
            À faire sur tous les côtés, là j’ai juste fait haut bas.

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

              Hum, bien se qu’il me semblait… un code pour chaque zone.

              Mais imaginons pour faire une zone sphérique “Minecraftienne” la aussi faut coder de la meme façon ? Car ça peut etre un sacré truc pour une zone de 5 cases xD, m’enfin, je pense qu’avec des boucles for le truc peut être alléger en faite…

              Plus qu’a trouver cette histoire de damage source explosion, car j’aimerai faire en sorte que si l’entité recoit des dommages d’explosion, elle explose a sont tour ^^ (non, je ne suis pas sadique.)

              >! Bonjour/Bonsoir,
              >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

              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

                Il y a fonction onHurt dans l’entité il me semble, avec le DamageSource en argument. Donc tu as juste a faire un if(damageSource.isExplosion())

                Pour la zone je verrai bien aussi une petite fonction avec des boucles for.

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

                  @‘robin4002’:

                  Il y a fonction onHurt dans l’entité il me semble, avec le DamageSource en argument. Donc tu as juste a faire un if(damageSource.isExplosion())

                  Pour la zone je verrai bien aussi une petite fonction avec des boucles for.

                  C est tout simplement la méthode attackEntityFrom (DamageSource par1, float par2)

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

                    Mais cette méthode sert à infliger des dégâts, pas à effectuer une action si une entité reçoit se type de dégâts.

                    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
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      Non c’est bien ça :

                      ​    protected void damageEntity(DamageSource source, float amount)
                          {
                      super.damageEntity(source, amount); // effectue ce qui se trouve dans la classe EntityLivingBase
                      if(source.isExplosion)
                      {
                      // ton code
                      }
                      }
                      

                      Sinon tu peux aussi passer par l’event LivingHurtEvent

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

                        @‘robin4002’:

                        Non c’est bien ça :

                        ​    protected void damageEntity(DamageSource source, float amount)
                            {
                                super.damageEntity(source, amount); // effectue ce qui se trouve dans la classe EntityLivingBase
                                if(source.isExplosion)
                                {
                                    // ton code
                                }
                            }
                        

                        Sinon tu peux aussi passer par l’event LivingHurtEvent

                        Il y a aussi ce code là qui marche très bien (je viens de le tester)

                        
                           public boolean attackEntityFrom(DamageSource damagesource, int i)
                        
                           {
                               if(damagesource.getDamageType() == "explosion")
                               {
                               System.out.println("l'entity s'est bien faite attaquée par une explosion");
                        //Tu peux placer n'importe quelle ligne de code à cette endroit là cela fera le même effet que d'utiliser l'event ou la méthode cités par robin.
                               }
                        super.attackEntityFrom(DamageSource.causeMobDamage(this), i);
                               return true;
                           }
                        
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • KujarothK Hors-ligne
                          Kujaroth
                          dernière édition par

                          Salut ! Merci a vous ! C’est niquel !

                          Julot, ton code ne marchait pas chez moi, mais celui de Robin ouai ^^’

                          Quoi qu’il en soit, merci a vous !

                          >! Bonjour/Bonsoir,
                          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

                            @‘UnknowOrigin’:

                            Salut ! Merci a vous ! C’est niquel !

                            Julot, ton code ne marchait pas chez moi, mais celui de Robin ouai ^^’

                            Quoi qu’il en soit, merci a vous !

                            En fait autant pour moi j’ai testé mon code sous la 1.2.5 car je n’avais que cette workspace sous la main et du ocup je pensais que le code serait le même sous la 1.7.10
                            La méthode a sûrement changé de nom ou alors c’est le String qui n’est plus valide. Je regarderai pour le corriger 😉

                            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