MFF

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

    Potion incurable

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    13 Messages 3 Publieurs 2.5k 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.
    • DeletedD Hors-ligne
      Deleted
      dernière édition par

      Dans le Living Event

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

        if (event.entityLiving.isPotionActive(ViruZEffect.Dependance))
        {
        ViruZEffect effect = new ViruZEffect(id, durée, amplificateur);
        effect.getCurativeItems().clear();
        player.addPotionEffect(effect);
        comme ça dans l’idée? parce que j ai pas le getCurrativeItem 😕

        “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

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

          la classe ViruZEffect

          package virusz.miscellaneous;
          
          import java.awt.Color;
          
          import net.minecraft.potion.Potion;
          
          public class ViruZEffect extends Potion {
          public static ViruZEffect bleeding;
          public static int bleedingID;
          public static ViruZEffect fracture;
          public static int fractureID;
          public static ViruZEffect adrenaline;
          public static int adrenalineID;
          public static ViruZEffect Dependance;
          public static int DependanceID;
          public static ViruZEffect Drogue;
          public static int DrogueID;
          public static ViruZEffect Manque;
          public static int ManqueID;
          
          public ViruZEffect(int id, boolean isBadEffect, int color, String name) {
          super(id, isBadEffect, color);
          setPotionName("potion." + name);
          }
          
          @Override
          public ViruZEffect setIconIndex(int x, int y) {
          super.setIconIndex(x, y);
          return this;
          }
          
          public static void loadEffects() {
          bleeding = new ViruZEffect(bleedingID, true, Color.red.getRGB(), "bleeding").setIconIndex(4, 2);
          fracture = new ViruZEffect(fractureID, true, Color.white.getRGB(), "fracture").setIconIndex(5, 2);
          adrenaline = new ViruZEffect(adrenalineID, true, Color.blue.getRGB(), "adrenaline").setIconIndex(6, 2);
          Dependance = new ViruZEffect(DependanceID, true, Color.TRANSLUCENT, "Dependance").setIconIndex(7, 2);
          Drogue = new ViruZEffect(DrogueID, true, Color.TRANSLUCENT, "Drogue").setIconIndex(8, 2);
          Manque = new ViruZEffect(ManqueID, true, Color.TRANSLUCENT, "Manque").setIconIndex(9, 2);
          }
          
          public static void register() {
          Potion.potionTypes[bleeding.getId()] = bleeding;
          Potion.potionTypes[fracture.getId()] = fracture;
          Potion.potionTypes[adrenaline.getId()] = adrenaline;
          Potion.potionTypes[Dependance.getId()] = Dependance;
          Potion.potionTypes[Drogue.getId()] = Drogue;
          Potion.potionTypes[Manque.getId()] = Manque;
          }
          }
          

          “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

          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

            Tu confonds Potion et PotionEffect. Ce sont deux choses différentes.
            Le code que je t’ai donné doit être utilisé là ou tu appliques l’effet. Dans ton cas ça sera :
            PotionEffect effect = new PotionEffect(ViruZEffect.bleeding.getId(), durée, amplificateur);
            effect.getCurativeItems().clear();
            player.addPotionEffect(effect);

            ViruZEffect devrait plutôt être nommé ViruZPotions pour éviter toutes confusion.

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

              ok le probleme c’est que si le joueur deco/reco alors que l’effet est appliquer il peut utiliser un seau de lait parce que le premier effet est ajouter par un item 😕 il y a un moyen pour que tout les effets créé soit incurable?

              “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

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

                j ai trouver suffit d’ajouter:

                public class Effect extends PotionEffect {
                
                 public Effect(int potionID, int duration, int amplifier) {
                   super(potionID, duration, amplifier);
                //toutes les potion créé sont incurable
                   this.getCurativeItems().clear();
                 }
                }
                

                Mais le joueur peut toujours se clear si il deco reco T_T

                “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

                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

                  Dans ce cas dans un event de tick de joueur tu parcours la liste de tous les effets de potions qu’a le joueur et si l’effet est le tient tu clear la liste des CurativeItems

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

                    On enregistre bien l’event player tick comme ca?

                    MinecraftForge.EVENT_BUS.register(new PlayerEventTick());
                    dans le init?

                    parce que j’ai aucun effet a mon event j’ai mis des print partout c est comme si l event était pas la

                    public class PlayerEventTick {
                    VirusZEffect effect;
                    @SubscribeEvent
                    public void onPlayerTick(PlayerTickEvent e){
                    System.out.println("test");
                    if(e.player.isPotionActive(VirusZPotion.Drogue)){
                    effect.getCurativeItems().clear();
                    System.out.println("test");
                    }
                    else if(e.player.isPotionActive(VirusZPotion.Dependance)){
                    effect.getCurativeItems().clear();
                    System.out.println("test");
                    
                    }
                    else if(e.player.isPotionActive(VirusZPotion.Manque)){
                    effect.getCurativeItems().clear();
                    System.out.println("test");
                    }
                    }
                    }
                    
                    

                    “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

                    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

                      PlayerTickEvent est un event de fml, donc FMLCommonHandler.instance().bus().register(new PlayerEventTick());
                      Par contre ton code n’est pas bon, tu vas te manger un NPE.
                      J’aurai plutôt fait comme ça :

                      public class PlayerEventTick {
                          @SubscribeEvent
                          public void onPlayerTick(PlayerTickEvent e)
                          {
                              Iterator it = e.player.getActivePotionEffects().iterator();
                              while(it.hasNext())
                              {
                                  PotionEffect p = (PotionEffect)it.next();
                                  if(p.getPotionID() ==VirusZPotion.Drogue.getId() || p.getPotionID() == VirusZPotion.Dependance || p.getPotionID() == VirusZPotion.Manque)
                                  {
                                      p.getCurativeItems().clear();
                      
                                  }
                              }
                          }
                      
                      }
                      
                      1 réponse Dernière réponse Répondre Citer 0
                      • P Hors-ligne
                        PlagueZ
                        dernière édition par

                        ça fonctionne merci 😃

                        “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

                        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