MFF

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

    Problème armure effets

    Planifier Épinglé Verrouillé Déplacé Résolu 1.11.x
    1.11.x
    21 Messages 6 Publieurs 3.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.
    • AymericRedA Hors-ligne
      AymericRed
      dernière édition par

      Alors tout simplement en 1.11, “player.inventory.armorInventory*” devient “player.inventory.armorInventory.get(i)” et “player.inventory.armorInventory* != null” devient “!player.inventory.armorInventory.get(i).isEmpty()”.

      Mais ce code tu vas le mettre dans la fonction “update” (ou semblable) de ton armure ? Si oui il y a moyen de l’optimiser.

      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

        Voici ma classe armure

        package fr.priya.simpleores.items;
        
        import fr.priya.simpleores.ModSimpleores;
        import net.minecraft.entity.EntityLivingBase;
        import net.minecraft.entity.player.EntityPlayer;
        import net.minecraft.init.MobEffects;
        import net.minecraft.init.SoundEvents;
        import net.minecraft.inventory.EntityEquipmentSlot;
        import net.minecraft.item.ItemArmor;
        import net.minecraft.item.ItemStack;
        import net.minecraft.potion.PotionEffect;
        import net.minecraft.util.DamageSource;
        import net.minecraft.world.World;
        import net.minecraftforge.common.ISpecialArmor;
        import net.minecraftforge.common.util.EnumHelper;
        public class AmnethysteArmor extends ItemArmor implements ISpecialArmor 
        {
        
        public static final ArmorMaterial material = EnumHelper.addArmorMaterial("armoramnethyste", ModSimpleores.MODID + ":armoramnethyste", 500, new int[]
        {6, 8, 9, 50}, 5, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 0.0F);
        
        public AmnethysteArmor(EntityEquipmentSlot equipmentSlotIn) {
        super(material, 0, equipmentSlotIn);
        }
        
        @Override
        public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source,
        double damage, int slot) {
        switch(slot) {
        case 3: //Helmet
        return null;
        case 2: //Chestplate
        return null;
        case 1: //Leggings
        return null;
        case 0: //Boots
        return null;
        default: //Nothing, to disable eclipse warning
        return null;
        }
        }
        
        @Override
        public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) {
        // TODO Auto-generated method stub
        return 0;
        }
        
        @Override
        public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) {
        // TODO Auto-generated method stub
        
        }
        @Override
        public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
        
        {
        player.addPotionEffect(new PotionEffect(MobEffects.SPEED, 100, 2));
        
        }
        
        }
        
        }
        
        

        je souhaite mettre mon effect dans la fonction armortick
        et le premier code que tu m’as donner avec le is empty provoque des erreurs ça me met la croix rouge avec comme erreurs sur isempty “rename in the file”

        **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

          @Override
          public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack)
          {
          if(stack.getItem().equals(ItemMod.obsidienne_helmet) && !player.inventory.armorInventory.get(1).isEmpty() && !player.inventory.armorInventory.get(2).isEmpty() && !player.inventory.armorInventory.get(3).isEmpty()) // Si tout ces slots d'armure sont remplies
          {
          if(player.inventory.armorInventory.get(1)getItem().equals(ItemMod.obsidienne_chestplate) && player.inventory.armorInventory.get(2).getItem().equals(ItemMod.obsidienne_leggings) && player.inventory.armorInventory.get(3).getItem().equals(ItemMod.obsidienne_boots)) // Si tout ces slots comprennent bien ta bonne armure d'obsidienne
          {
          player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), 60, 1)); // Alors on donne l'effet [Image: smile.png]
          }}
          
          

          Voilà ça devrait marcher.

          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

          1 réponse Dernière réponse Répondre Citer 1
          • A Hors-ligne
            aypristyle
            dernière édition par

            Je viens d’essayer ça ne fonctionne pas  😢
            si tu veux je peux faire un screen le isempty il aime pas trop eclipse
            voici les erreurs de la ligne is empty

            Multiple markers at this line
            - The method isEmpty() is undefined for the type ItemStack
            - The method isEmpty() is undefined for the type ItemStack
            - The method isEmpty() is undefined for the type ItemStack
            - stack cannot be resolved
            

            est celle de la ligne juste en dessous

            Multiple markers at this line
            - The method getItem() is undefined for the type AmnethysteArmor
            - The type of the expression must be an array type but it resolved to ItemStack
            - Syntax error, insert "]" to complete Expression
            - Syntax error on token ")", [ expected after this token
            

            **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

              Je pense que pour la deuxieme erreur, tu as oublié de mettre une parenthèse et un crochet quelque part, mais si non, cela signifie que tu a mal placé (au mauvais endroit) ton code.

              Il y a deux choses qui m'énerve dans la vie : les babouches et les personnes jouant en 1.7.10 !

              1 réponse Dernière réponse Répondre Citer 1
              • A Hors-ligne
                aypristyle
                dernière édition par

                je viens de vérifier ma ligne les parenthèses sont bien deux à deux et j’ai placer mon code dans un Override dans le bas de mon code

                package fr.priya.simpleores.items;
                
                import fr.priya.simpleores.ModSimpleores;
                import net.minecraft.entity.EntityLivingBase;
                import net.minecraft.entity.player.EntityPlayer;
                import net.minecraft.init.MobEffects;
                import net.minecraft.init.SoundEvents;
                import net.minecraft.inventory.EntityEquipmentSlot;
                import net.minecraft.item.ItemArmor;
                import net.minecraft.item.ItemStack;
                import net.minecraft.potion.PotionEffect;
                import net.minecraft.util.DamageSource;
                import net.minecraft.world.World;
                import net.minecraftforge.common.ISpecialArmor;
                import net.minecraftforge.common.util.EnumHelper;
                public class AmnethysteArmor extends ItemArmor implements ISpecialArmor 
                {
                
                public static final ArmorMaterial material = EnumHelper.addArmorMaterial("armoramnethyste", ModSimpleores.MODID + ":armoramnethyste", 500, new int[]
                {6, 8, 9, 50}, 5, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 0.0F);
                
                public AmnethysteArmor(EntityEquipmentSlot equipmentSlotIn) {
                super(material, 0, equipmentSlotIn);
                }
                
                @Override
                public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source,
                double damage, int slot) {
                switch(slot) {
                case 3: //Helmet
                return null;
                case 2: //Chestplate
                return null;
                case 1: //Leggings
                return null;
                case 0: //Boots
                return null;
                default: //Nothing, to disable eclipse warning
                return null;
                }
                }
                
                @Override
                public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) {
                // TODO Auto-generated method stub
                return 0;
                }
                
                @Override
                public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) {
                // TODO Auto-generated method stub
                
                }
                
                @Override
                public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){
                if(stack.getItem().equals(SimpleoresItems.AMNETHYSTE_HELMET) && !player.inventory.armorInventory.get(1).isEmpty() && !player.inventory.armorInventory.get(2).isEmpty() && !player.inventory.armorInventory.get(3).isEmpty()) // Si tout ces slots d'armure sont remplies
                {
                if(player.inventory.armorInventory.get(1)getItem().equals(SimpleoresItems.AMNETHYSTE_CHESTPLATE) && player.inventory.armorInventory.get(2).getItem().equals(SimpleoresItems.AMNETHYSTE_LEGGINGS) && player.inventory.armorInventory.get(3).getItem().equals(SimpleoresItems.AMNETHYSTE_BOOTS)) // Si tout ces slots comprennent bien ta bonne armure d'obsidienne
                {
                player.addPotionEffect(new PotionEffect(MobEffects.SPEED, 100, 2));
                }}
                
                }
                
                }
                
                

                **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

                  Alors :

                  • “- The method isEmpty() is undefined for the type ItemStack” : Je vois pas pourquoi t’as ça je regarde ce soir.
                  • “- stack cannot be resolved” : Si tu comprenais un minimum le code, tu verrais qu’il suffit de remplacer par “itemStack”.
                  • “- The method getItem() is undefined for the type AmnethysteArmor” : Si tu comprenais un minimum le java tu verrais que j’ai oublié un point dans le début du if de la ligne 63 : “player.inventory.armorInventory.get(1)getItem().equals(SimpleoresItems.AMNETHYSTE_CHESTPLATE)” ==> “player.inventory.armorInventory.get(1).getItem().equals(SimpleoresItems.AMNETHYSTE_CHESTPLATE)”.

                  Les deux autres erreurs doivent être dues à la 3e.

                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                    Merci AymericRed j’ai rajouté le point que je n’avais pas vu par contre pour l’erreur du stack j’avais déjà essayer de le remplacer par itemStack et ItemStack (pour correspondre au paramètre de la fonction armorTick ) sans succès

                    **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

                      Merci AymericRed j’ai corrigé les erreurs que tu m’as indiqués les seuls qui persiste sont celle avec la méthode isempty

                      **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

                        Utilise tu des mappings  récents ? Ton problème peut venir de mappings trop anciens donc il te faudrait la version obfusquée de la fonction isEmpty().

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

                          J’utilise cela snapshot_20161111

                          **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

                          1 réponse Dernière réponse Répondre Citer 0
                          • BrokenSwingB Hors-ligne
                            BrokenSwing Moddeurs confirmés Rédacteurs
                            dernière édition par

                            Met ceux-la 20170612

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

                              J’ai mis les bons mappings et je n’ai plus d’erreurs mais je n’arrive toujours pas a avoir des effets quand l’armure est entierement équipée maintenant je n’ai absolument aucun effet
                              j’ai essayer le code de AymerciRed

                              @Override
                              public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){
                              if(itemStack.getItem().equals(SimpleoresItems.AMNETHYSTE_HELMET) && !player.inventory.armorInventory.get(1).isEmpty() && !player.inventory.armorInventory.get(2).isEmpty() && !player.inventory.armorInventory.get(3).isEmpty()) // Si tout ces slots d'armure sont remplies
                              {
                              if(player.inventory.armorInventory.get(1).getItem().equals(SimpleoresItems.AMNETHYSTE_CHESTPLATE) && player.inventory.armorInventory.get(2).getItem().equals(SimpleoresItems.AMNETHYSTE_LEGGINGS) && player.inventory.armorInventory.get(3).getItem().equals(SimpleoresItems.AMNETHYSTE_BOOTS)) // Si tout ces slots comprennent bien ta bonne armure d'obsidienne
                              {
                              player.addPotionEffect(new PotionEffect(MobEffects.SPEED, 100, 2));
                              }}
                              

                              ainsi qu’une variante que j’ai essayer de bidouiller pour que ça fonctionne sans succès

                              @Override
                              public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){
                              if(player.inventory.armorInventory.get(0).getItem().equals(SimpleoresItems.AMNETHYSTE_HELMET) && !player.inventory.armorInventory.get(1).isEmpty() && !player.inventory.armorInventory.get(2).isEmpty() && !player.inventory.armorInventory.get(3).isEmpty()) // Si tout ces slots d'armure sont remplies
                              {
                              if(player.inventory.armorInventory.get(1).getItem().equals(SimpleoresItems.AMNETHYSTE_CHESTPLATE) && player.inventory.armorInventory.get(2).getItem().equals(SimpleoresItems.AMNETHYSTE_LEGGINGS) && player.inventory.armorInventory.get(3).getItem().equals(SimpleoresItems.AMNETHYSTE_BOOTS)) // Si tout ces slots comprennent bien ta bonne armure d'obsidienne
                              {
                              player.addPotionEffect(new PotionEffect(MobEffects.SPEED, 100, 2));
                              }}
                              
                              }
                              

                              **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

                                Je te conseilles de faire du debug (soit avec des System.out.println() soit avec eclipse) pour voir où est-ce que ça bloque.

                                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                  Je viens de faire du debug eclipse lit bien la première condition c’est la deuxième qui pose problème (quand on vérifie que soit bien la bonne armure qui est dans les slots)
                                  EDIT: j’ai remarqué que la première condition (celle des slots) était valide même quand le joueur n’avait pas équipé ses bottes jevais essayer d’arranger ça
                                  AymerciRed si tu as une idée pour la deuxième condition je suis preneuse

                                  **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

                                    Alors je te prpose de mettre ça juste avant la deuxième condition :

                                    System.out.println(player.inventory.armorInventory.get(1).getItem() + " " + player.inventory.armorInventory.get(2).getItem() + " " + player.inventory.armorInventory.get(3).getItem());
                                    

                                    et voir ce qui ne va pas (tu peux faire un print SimpleoresItems.AMNETHYSTE_CHESTPLATE etc pour comparer).

                                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                      [22:16:08] [Server thread/INFO]: [STDOUT]: fr.priya.simpleores.items.armor.AmnethysteArmor@45e931a9 fr.priya.simpleores.items.armor.AmnethysteArmor@238fcafa fr.priya.simpleores.items.armor.AmnethysteArmor@250c5892
                                      
                                      

                                      voici ce que ça donne j’avoue que je suis incapable d’interpréter ce logs si toi tu sais je suis preneuse

                                      **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

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

                                        @‘AymericRed’:

                                        Alors je te prpose de mettre ça juste avant la deuxième condition :

                                        System.out.println(player.inventory.armorInventory.get(1).getItem() + " " + player.inventory.armorInventory.get(2).getItem() + " " + player.inventory.armorInventory.get(3).getItem());
                                        

                                        et voir ce qui ne va pas (tu peux faire un print SimpleoresItems.AMNETHYSTE_CHESTPLATE etc pour comparer).

                                        Il faut faire un print des SimpleoresItems.AMNETHYSTE_“piece d’armure” et comparer les numéros aprés le @, comme là dit AymericRed. Si les numéros sont les mêmes c’est le même item. Cette ligne toute seule n’est pas trés utile ^^ Enfin je crois 🙂

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

                                          “Enfin je crois”
                                          Si toute seule elle est utile, là ça indique que le joueur a bien l’armure sur lui. Mais pas assez utile oui ^^
                                          Il va donc falloir que tu fasses ce que Timmypote a dit aypristile.

                                          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                            C’est bon mon armure fonctionne ! un grand merci à vous @AymericRed et @Timmypoyte. Le problème venait de la numérotation des items en 1.11 maintenant la numérotation ce fait de bas en haut (0 = bottes, 1= pantalon, 2= plastron et 3=casque) 
                                            Je met le code qui fonctionne pour ceux que ça intéresse et je clôture le sujet.
                                            [font=Ubuntu, sans-serif```java
                                            @Override
                                            ]

                                            public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){

                                            if(itemStack.getItem().equals(SimpleoresItems.AMNETHYSTE_HELMET) && !player.inventory.armorInventory.get(1).isEmpty() && !player.inventory.armorInventory.get(2).isEmpty() && !player.inventory.armorInventory.get(0).isEmpty()) // Si tout ces slots d’armure sont remplies

                                            {

                                            if(player.inventory.armorInventory.get(1).getItem().equals(SimpleoresItems.AMNETHYSTE_LEGGINGS)&& player.inventory.armorInventory.get(2).getItem().equals(SimpleoresItems.AMNETHYSTE_CHESTPLATE) && player.inventory.armorInventory.get(0).getItem().equals(SimpleoresItems.AMNETHYSTE_BOOTS)) // Si tout ces slots comprennent bien ta bonne armure d’obsidienne

                                            {

                                            player.addPotionEffect(new PotionEffect(MobEffects.SPEED, 100, 2));
                                            **[font=Ubuntu, sans-serif}}

                                            **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

                                            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