• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu RandomArmor

    1.7.x
    1.7.x
    3
    4
    1077
    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.
    • N
      Noxon dernière édition par

      Bonjour à tous,
      j’ai un petit problème de compréhension concernant la méthode addRandomArmor()
      En fait, je l’ai retrouvé dans la class du zombie :

      
          protected void addRandomArmor()
      
          {
              super.addRandomArmor();
      
              if (this.rand.nextFloat() < (this.worldObj.difficultySetting == EnumDifficulty.HARD ? 0.05F : 0.01F))
              {
                  int i = this.rand.nextInt(3);
      
                  if (i == 0)
                  {
                      this.setCurrentItemOrArmor(0, new ItemStack(Items.iron_sword));
                  }
                  else
                  {
                      this.setCurrentItemOrArmor(0, new ItemStack(Items.iron_shovel));
                  }
              }
          }
      
      

      j’ai pensé qu’elle pourrait m’aider à équiper mon mob “bandit” car il craint le feu et je voudrais lui mettre aléatoirement des casques (en forme de head customs) pour à la fois contrer l’effet du feu et aussi pouvoir leur mettre des visages différents. Mais alors là j’ai deux problèmes :

      En fait je voudrais lui obliger à avoir à la fois une probable arme parmi 6 armes ou la main nue, mais dans tout les cas un casque obligatoire parmi les 4 casques (bandithead1, bandithead2 …). Je ne sais pas trop comment transformer la méthode pour rendre ça possible.
      J’ai essayé quelques codes mais ça retournait à chaque fois au “else” sans prendre en compte les valeurs conditionnées dans les “if”.
      De plus je ne sais pas comment dire qu’il faut une des 6 armes (ou pas) et un des 4 casques (obligatoirement).
      C’est comme si à chaque fois il fallait deux return, ou alors deux fois la même méthode.

      Si quelqu’un peut m’aider je lui en serais très reconnaissant. 🙂
      Merci d’avance !

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            protected void addRandomArmor()
            {
                super.addRandomArmor();
        
        //on s'occupe d'abord du casque
        int helmet = this.rand.nextInt(4); // génère un nombre entre 0 et 4 exclut (donc 0, 1, 2 ou 3)
        if(helmet == 0)
        {
        this.setCurrentItemOrArmor(4, new ItemStack(ClassePrincipale.bandithead1));
        }
        else if(helmet == 1)
        {
        this.setCurrentItemOrArmor(4, new ItemStack(ClassePrincipale.bandithead2));
        }
        else if(helmet == 2)
        {
        this.setCurrentItemOrArmor(4, new ItemStack(ClassePrincipale.bandithead3));
        }
        else if(helmet == 3)
        {
        this.setCurrentItemOrArmor(4, new ItemStack(ClassePrincipale.bandithead4));
        }
        
                if (this.rand.nextFloat() < 0.10F) // nextFloat() génère un nombre entre 0.0 et 1.0 exclut, il y a donc 10 % de chance que cette boucle soit exécuté
                {
                    int weapon = this.rand.nextInt(6); // génère un nombre entre 0 et 6 exclut
        
                    if (weapon == 0)
                    {
                        this.setCurrentItemOrArmor(0, new ItemStack(ClassePrincipale.arme1));
                    }
                    else if(weapon == 1)
                    {
        this.setCurrentItemOrArmor(0, new ItemStack(ClassePrincipale.arme2));
                    }
        else if(weapon == 2)
        {
        this.setCurrentItemOrArmor(0, new ItemStack(ClassePrincipale.arme3));
        }
        else if(weapon == 3)
        {
        this.setCurrentItemOrArmor(0, new ItemStack(ClassePrincipale.arme4));
        }
        else if(weapon == 4)
        {
        this.setCurrentItemOrArmor(0, new ItemStack(ClassePrincipale.arme5));
        }
        else if(weapon == 5)
        {
        this.setCurrentItemOrArmor(0, new ItemStack(ClassePrincipale.arme6));
        }
                }
            }
        
        

        Voila, je pense que tu as la réponse à tes deux questions.

        1 réponse Dernière réponse Répondre Citer 0
        • pulgan
          pulgan dernière édition par

          il y a moyen de changer test sa dans le constructeur de ton entité

          this.isImmuneToFire = false;
          
          1 réponse Dernière réponse Répondre Citer 0
          • N
            Noxon dernière édition par

            Merci beaucoup pour le coup de main.
            Je vais essayer ça de suite

            EDIT : ça fonctionne très bien 😉
            Pulgarn -> je voulais qu’il soit insensible au jour, pas au feu. 🙂

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

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB