MFF

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

    Drop random et mort par joueur

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

      Bonjour, je travaillais sur mon mod et j’ai voulu faire en sorte que les poulpes ait une chance de drop deux items en plus de celui vanilla( avec peu de chance de drop sur un de mes 2 items ) donc j’ai essayé ceci :

      @SubscribeEvent
        public void onLivingDrops(LivingDropsEvent event)
        {
            if(event.entity instanceof EntitySquid) 
            {
            Random rand = new Random();
            int randInt = rand.nextInt(30);
            if(randInt > 29)
            {
            EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY,
            event.entity.posZ,
          new ItemStack(ewifaction.ewilitemachine, 1));
        event.drops.add(newdrop);
            }
            else
            {
            EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY,
            event.entity.posZ,
          new ItemStack(ewifaction.SquidFood, 1));
        event.drops.add(newdrop);
            }
            }
      

      le problème est que ce code de fonctionne pas et j’ai un autre problème ; je veux que le drop ne s’effectue que si le mob est tué par  un joueur mais je n’y arrive pas.
      Merci d’avance pour votre aide.

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

        Je sais comment rajouter un drop pour un mob en 1.9, je te donne le code après, juste une question PORQUOI CONTINUER DE CODER EN 1.7.10 ?!

        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 0
        • T Hors-ligne
          thecraft38
          dernière édition par

          car la 1.7.10 est la version sur la qu’elle j’ai commencé le jeu et donc que je l’affectionne tous particulièrement, de plus je trouve les nouvelles versions un peu inutiles bien que je suis contient que les API forge etc s’améliore avec mais le vanilla : sérieux des lamas, des ours polaires ? et je ne supporte pas le pvp 1.9.

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

            Donc, je ne sais pas si le code fonctionne en 1.7.10, personnellement je l’ai fait en 1.9 sur des creeper pour faire spawner quelque fois l’item

            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 0
            • T Hors-ligne
              thecraft38
              dernière édition par

              et tu as utilisé le même code que moi ou un autre ?

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

                J’en utilise un autre, je pense, le temps d’ouvrir eclipse pour moi. xD voila le code que j’utilise :

                public class Drop
                {
                
                    public final Random rand = new Random();
                     @SubscribeEvent
                        public void onLivingDrops(LivingDropsEvent event)
                        {
                         if(event.getEntity() instanceof EntityCreeper)
                         {
                            EntityItem newdrop = new EntityItem(event.getEntity().worldObj, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ,
                new ItemStack(ItemsMod.dust, rand.nextInt(2), 0)); // 2 = le max de drop
                            event.getDrops().add(newdrop);
                         }
                         if(event.getEntity() instanceof EntityDragon)
                         {
                            EntityItem newdrop = new EntityItem(event.getEntity().worldObj, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ,
                new ItemStack(ItemsMod.sup, rand.nextInt(10), 0));
                            event.getDrops().add(newdrop);
                         }
                        }
                }
                

                J’ai crée une nouvelle classe dans le package de ton mod

                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 0
                • T Hors-ligne
                  thecraft38
                  dernière édition par

                  Le code que tu ma envoyer fonctionne en 1.7.10 sous cette forme :

                  public final Random rand = new Random();
                  @SubscribeEvent
                    public void onLivingDrops(LivingDropsEvent event)
                    {
                          if(event.entity instanceof EntitySquid)
                          {
                             EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ,
                  new ItemStack(ewifaction.mobsoul, rand.nextInt(1), 0));
                             event.drops.add(newdrop);
                          }
                  

                  le problème est que la il a 50% de chance 1 et 50% de chance de drop 0 mais se qu’il ai par exemple 5% de drop 1 et 95% de drop 1

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

                    peu etre que le 0 derrière signifie quelque chose, mais je ne sais pas quoi désoler ;c

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

                      Le deuxième argument d’item stack c’est la quantité.
                      Généré des item stack de quantité 0 c’est pas vraiment une bonne idée …

                        @SubscribeEvent
                       public void onLivingDrops(LivingDropsEvent event)
                       {
                             if(event.entity instanceof EntitySquid && event.source.getEntity instanceof EntityPlayer)
                             {
                                EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ,
                      new ItemStack(ewifaction.mobsoul));
                                if(event.entity.worldObj.rand.nextFloat() < 0.95F) // 95% de chance
                                {
                                     event.drops.add(newdrop);
                                }
                             }
                      }
                      
                      1 réponse Dernière réponse Répondre Citer 0
                      • T Hors-ligne
                        thecraft38
                        dernière édition par

                        Oui j’ai réussi a aboutir a se code qui fonctionne : ```java
                         @SubscribeEvent
                          public void onLivingDrops(LivingDropsEvent event)
                          {
                        Random rand = new Random();
                                if(event.entity instanceof EntitySquid)
                                {
                                int randInt = rand.nextInt(20);
                                if(randInt == 19)
                                {
                                EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY,
                              event.entity.posZ,
                            new ItemStack(ewifaction.ewilitemachine, 1));
                          event.drops.add(newdrop);
                                }
                                else
                                {
                                EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY,
                              event.entity.posZ,
                            new ItemStack(ewifaction.SquidFood, 1));
                          event.drops.add(newdrop);
                                }
                                }

                        il me manque juste la méthode pour savoir check si le mob a était tué par un joueur :
                        ```java
                        if(randInt == 19 && ) // après le && sa ira mais je ne vois pas quoi mettre
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • T Hors-ligne
                          thecraft38
                          dernière édition par

                          Merci j’ai fait ça  : ```java
                          @SubscribeEvent
                          public void onLivingDrops(LivingDropsEvent event)
                          {
                                if(event.entity instanceof EntityZombie || event.entity instanceof EntitySkeleton || event.entity instanceof EntitySpider || event.entity instanceof EntityCreeper || event.entity instanceof EntityCaveSpider  && event.source.getEntity() instanceof EntityPlayer)
                                {
                                   EntityItem newdrop = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ,
                          new ItemStack(ewifaction.sool));
                                   if(event.entity.worldObj.rand.nextFloat() < 0.05F)
                                   {
                                        event.drops.add(newdrop);
                                   }
                                }

                          et tous fonctionne bon jeu a vous et encore merci de votre aide
                          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