Navigation

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

    Problème effet de Potion custom

    Sans suite
    1.7.x
    2
    13
    3673
    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.
    • Antoine_
      Antoine_ last edited by

      Bonsoir tout le monde:

      J’ai suivi le tuto de ZeAmateis sur les effets de potion.

      Tout fonctionne correctement appart le fait que quand l’effet est appliqué a un joueur il ce prend un coup.

      Voici mon code:

      
      package potion;
      
      import java.awt.Color;
      
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.potion.Potion;
      import net.minecraft.util.DamageSource;
      
      public class Regeneration extends Potion
      {
      
      public static Regeneration customEffect;
      public static int customEffectID;
      
      protected Regeneration(int id, boolean isBadEffectOrNot, int color, String name)
      {
      super(id, isBadEffectOrNot, color);
      this.setPotionName("potion." + name);
      }
      
      @Override
      public Regeneration setIconIndex(int x, int y)
      {
        super.setIconIndex(x, y);
        return this;
      }
      
      public static void loadEffects()
      {
      customEffect = new Regeneration(customEffectID, false, Color.red.getRGB(), "regeneration1").setIconIndex(4, 2);
      }
      
      public static void register()
      {
      Regeneration.potionTypes[customEffect.getId()] = customEffect;
      }
      
      public void performEffect(EntityLivingBase entity, int p_76394_2_)
      {
         if (this.id == 25)
         {
             if (entity.getHealth() < entity.getMaxHealth())
             {
                 entity.heal(1.0F);
             }
         }
      }
      
      public boolean isReady(int p_76397_1_, int p_76397_2_)
      {
         return p_76397_1_ >= 1;
      }
      
      }
      

      Donc le soin marche correctement mais le jouer ce prend un coup ….

      J’ai essayé différente fonction de la classe Potion de minecraft sans aucun succé…

      Merci d’avance

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

        
        public boolean isReady(int p_76397_1_, int p_76397_2_)
        {
        return p_76397_1_ >= 1;
        }
        
        

        tu peux aussi mettre return true, ça ira plus vite puisque juste avant il y a : ```java
        if (this.duration > 0)

        
        Penses aux @Override.
        
        Question : qaund tu dis que tu prends un coup, est-ce que tu perds de la vie ? Ou est-ce que tu as juste le son et l'animation comme si tu était touché.
        1 Reply Last reply Reply Quote 0
        • Antoine_
          Antoine_ last edited by

          d’accord merci pour ta réponse et pour être plus clair non je ne perd pas de vie mais il y a le son et l’animation comme si le joueur était touché ….

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

            @‘Antoine_’:

            d’accord merci pour ta réponse et pour être plus clair non je ne perd pas de vie mais il y a le son et l’animation comme si le joueur était touché ….

            Même lorsque tu appliques l’effet via la commande /effect ?

            EDIT :
            où est-ce que le customEffectID est donné ?

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

              Oui l’ID est 25 pour mon effet ….

              Même avec la commande /effect j’ai le même soucis … je ne comprend pas d’ou vient le problème.

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

                up svp

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

                  @‘Antoine_’:

                  up svp

                  Là je vois pas du tout d’où vient le problème, renvoi toutes les classes en rapport (ex : classe de l’effet de potion, classe où l’effet est appelé, etc.)

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

                    Voila mes classe:

                    Classe de l’effet:

                    package potion;
                    
                    import java.awt.Color;
                    
                    import net.minecraft.entity.EntityLivingBase;
                    import net.minecraft.potion.Potion;
                    import net.minecraft.util.DamageSource;
                    
                    public class Regeneration extends Potion
                    {
                    
                    public static Regeneration customEffect;
                    public static int customEffectID;
                    
                    protected Regeneration(int id, boolean isBadEffectOrNot, int color, String name)
                    {
                    super(id, isBadEffectOrNot, color);
                    this.setPotionName("potion." + name);
                    }
                    
                    @Override
                    public Regeneration setIconIndex(int x, int y)
                    {
                    super.setIconIndex(x, y);
                    return this;
                    }
                    
                    public static void loadEffects()
                    {
                    customEffect = new Regeneration(customEffectID, false, Color.red.getRGB(), "regeneration1").setIconIndex(4, 2);
                    }
                    
                    public static void register()
                    {
                    Regeneration.potionTypes[customEffect.getId()] = customEffect;
                    }
                    
                    public void performEffect(EntityLivingBase entity, int p_76394_2_)
                    {
                    if (this.id == 25)
                    {
                    if (entity.getHealth() < entity.getMaxHealth())
                    {
                    entity.heal(1.0F);
                    }
                    }
                    }
                    
                    public boolean isReady(int p_76397_1_, int p_76397_2_)
                    {
                    return p_76397_1_ >= 1;
                    }
                    
                    }
                    

                    Classe principal

                    
                    Regeneration.customEffectID = 25;
                    Regeneration.loadEffects();
                    Regeneration.register();
                    
                    

                    Je cherche aussi mais rien de concluant

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

                      @‘Antoine_’:

                      Voila mes classe:

                      Classe de l’effet:

                      package potion;
                      
                      import java.awt.Color;
                      
                      import net.minecraft.entity.EntityLivingBase;
                      import net.minecraft.potion.Potion;
                      import net.minecraft.util.DamageSource;
                      
                      public class Regeneration extends Potion
                      {
                      
                      public static Regeneration customEffect;
                      public static int customEffectID;
                      
                      protected Regeneration(int id, boolean isBadEffectOrNot, int color, String name)
                      {
                      super(id, isBadEffectOrNot, color);
                      this.setPotionName("potion." + name);
                      }
                      
                      @Override
                      public Regeneration setIconIndex(int x, int y)
                      {
                        super.setIconIndex(x, y);
                        return this;
                      }
                      
                      public static void loadEffects()
                      {
                      customEffect = new Regeneration(customEffectID, false, Color.red.getRGB(), "regeneration1").setIconIndex(4, 2);
                      }
                      
                      public static void register()
                      {
                      Regeneration.potionTypes[customEffect.getId()] = customEffect;
                      }
                      
                      public void performEffect(EntityLivingBase entity, int p_76394_2_)
                      {
                         if (this.id == 25)
                         {
                             if (entity.getHealth() < entity.getMaxHealth())
                             {
                                 entity.heal(1.0F);
                             }
                         }
                      }
                      
                      public boolean isReady(int p_76397_1_, int p_76397_2_)
                      {
                         return p_76397_1_ >= 1;
                      }
                      
                      }
                      

                      Classe principal

                      
                      Regeneration.customEffectID = 25;
                      Regeneration.loadEffects();
                      Regeneration.register();
                      

                      Je cherche aussi mais rien de concluant

                      Tu n’as pas rajouté les balises @Override

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

                        Oui désolé mais ceci ne change pas grand choses malheureusement …

                        
                        public class Regeneration extends Potion
                        {
                        
                        public static Regeneration customEffect;
                        public static int customEffectID;
                        
                        public Regeneration(int id, boolean isBadEffectOrNot, int color, String name)
                        {
                        super(id, isBadEffectOrNot, color);
                        this.setPotionName("potion." + name);
                        }
                        
                        @Override
                        public Regeneration setIconIndex(int x, int y)
                        {
                        super.setIconIndex(x, y);
                        return this;
                        }
                        
                        public static void loadEffects()
                        {
                        customEffect = new Regeneration(customEffectID, false, Color.red.getRGB(), "regeneration1").setIconIndex(4, 2);
                        }
                        
                        public static void register()
                        {
                        Regeneration.potionTypes[customEffect.getId()] = customEffect;
                        }
                        
                        @Override
                        public void performEffect(EntityLivingBase entity, int p_76394_2_)
                        {
                        if (this.id == 25)
                        {
                        if (entity.getHealth() < entity.getMaxHealth())
                        {
                        entity.heal(0.05F);
                        }
                        }
                        }
                        
                        @Override
                        public boolean isReady(int p_76397_1_, int p_76397_2_)
                        {
                        return true;
                        }
                        
                        }
                        
                        

                        up svp

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

                          
                          entity.heal(0.05F);
                          
                          

                          il vaut mieux mettre des valeurs entières comme 1.0F.

                          
                          @Override
                          public Regeneration setIconIndex(int x, int y)
                          {
                          super.setIconIndex(x, y);
                          return this;
                          }
                          
                          

                          Autant supprimer toute cette fonction, ou mettre return super.setIconIndex(x,y); .

                          [java
                          @Override
                          public void performEffect(EntityLivingBase entity, int p_76394_2_)
                          {
                          if (this.id == 25)
                          {
                          if (entity.getHealth() < entity.getMaxHealth())
                          {
                          entity.heal(0.05F);
                          }
                          }
                          }
                          [/java]
                          Essaie sans la condition if (this.id == 25) .

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

                            Merci pour le nombre non entier ça fonctionne comme même très bien et j’ai fait les test avec 1.0F ca ne résout pas le problème…

                            Je vais essayer sans la condition if mais j’ai peux d’espoir car l’effet de heal s’applique correctement sauf que le joueur ce prend des coups…

                            Edit: après le test aucun changement

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

                              Qu’est-ce qu’il se passe si tu met en commentaire le entity.heal() (ctrl + shift + c) ?

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

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB