MFF

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

    Monture Custom

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    72 Messages 7 Publieurs 16.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.
    • FolganskyF Hors-ligne
      Folgansky Correcteurs
      dernière édition par

      Ok, alors chui loin du compte.

      De ce que j’ai pu comprendre et voir j’ai ça:

      :::

          public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
          {
          int metadata = stack.getItemDamage();
          Vec3 look = player.getLookVec();
          float f = 200.0F;
          Vec3 start = new Vec3(player.posX, player.posY + player.getEyeHeight(), player.posZ);
          Vec3 end = new Vec3(player.posX + look.xCoord * f, player.posY + player.getEyeHeight() + look.yCoord * f, player.posZ + look.zCoord * f);
          MovingObjectPosition mop = world.rayTraceBlocks(start, end);
      
          if(metadata == 14)
          {
          if(mop.entityHit instanceof EntityBolide && mop.entityHit.riddenByEntity == null)
      {
          {
      //        mop.entityHit.setDead();
      //        give l'itemMonture de metadata 1;
             stack.stackSize–;
          }
      }
              return stack;
          }
          }
      

      :::

      En fait j’ai juste trouvé que c’était entityHit et pas hitEntity…

      J’ai une erreur sur les vecteurs (truc auquel je ne comprends pas tant que ça), ça me marque comme quoi le constructeur Vec3(double, double, double) n’est pas visible.

      Edit: Après ne serait-il pas plus simple de checker si il n’y a pas une entité à 2/3 blocs du joueur qui serait une entité récupérable?

      L’histoire de côté client ou serveur avec les paquets ou non me découragent un peu ^^’

      1 réponse Dernière réponse Répondre Citer 0
      • FolganskyF Hors-ligne
        Folgansky Correcteurs
        dernière édition par

        Bon comme je ne sais pas trop quoi faire pour récupérer un “mop” j’ai un peu trifouillé ce qui y touchait et je suis tombé sur une archive parlant des potions dont la méthode
        onImpact récupère un mop.

        Celui là, c’est par-ici, Il est frais mon poisson.

        Bref, passons l’heure,

        L’idée serait d’utiliser une potion à impact qui, si elle touche mon entité précise, fait ce que je lui demande (c’est à dire buter l’entité et récupérer un certain item qui en fait sert à la refaire spawn, même si techniquement c’est une toute autre entité).

        Est-ce concevable selon vous ce type de potion dans mon cas?

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

          Pour ce qui est du fait que le constructeur Vec3 qui n’existe pas, il suffit de faire un CTRL+CLIC sur Vec3 pour entrer dans la classe et voir qu’il faut utiliser

          Vec3.createVectorHelper(double, double, double);
          

          Ce qui retourne une instance de Vec3.

          Ce que te propose c’est ça :

          
          public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
          {
          if (entity instanceof EntityCreeper)
          {
          entity.setDead();
          –stack.stackSize;
          player.inventory.addItemStackToInventory(new ItemStack(Items.baked_potato));
          return true;
          }
          else
          {
          return false;
          }
          }
          
          
          1 réponse Dernière réponse Répondre Citer 2
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            Je ne savais même pas que la méthode itemInteractionForEntity existait o_O

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

              Moi non plus, j’ai regardé la classe de la selle

              1 réponse Dernière réponse Répondre Citer 0
              • FolganskyF Hors-ligne
                Folgansky Correcteurs
                dernière édition par

                Edit: Cette méthode tombe vraiment à pic. Merci Bodri pour ton intuition sur la selle.

                Alors j’arrive à récupérer l’item voulu en fonction de l’entité sur laquelle je clique. Le problème est que ça consomme deux fois l’item et me donne deux fois l’autre item ^^’

                Par contre si je clique sur une autre entité avec cette item je crash, où dois-je mettre le nullcheck svp?

                :::

                public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
                    {
                int metadata = stack.getItemDamage();
                if (metadata == 14)
                {
                DataWatcher dw = entity.getDataWatcher();
                       if (dw.getWatchableObjectString(30) == "Moto" && entity instanceof EntityMoto)
                       {
                           entity.setDead();
                           –stack.stackSize;
                           player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 0));
                           return true;
                       }
                       else if (dw.getWatchableObjectString(30) == "Kart2" && entity instanceof EntityKart)
                       {
                           entity.setDead();
                           --stack.stackSize;
                           player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 12));
                           return true;
                       }
                       else if (entity instanceof EntityBolide)
                       {
                           entity.setDead();
                           --stack.stackSize;
                           player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 13));
                           return true;
                       }
                
                }
                   else    
                   return false;    
                }
                return false;
                    }
                
                

                :::

                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

                  Envoies le rapport de crash.
                  Et pour l’action fait en double il faut ajouter if(!world.isRemote)

                  1 réponse Dernière réponse Répondre Citer 0
                  • FolganskyF Hors-ligne
                    Folgansky Correcteurs
                    dernière édition par

                    En faisant:

                    :::

                    public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity, World world)
                        {
                    int metadata = stack.getItemDamage();
                    if (metadata == 14 && !world.isRemote)
                    {[…]}
                    

                    :::

                    Les items ne remplissent plus leur fonction mais font toujours crash quand je clique sur un animal (autre entité que mes véhicules).

                    Et le rapport de crash (quand je ne met pas le isRemote):  Pastebin

                    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

                      La condition “entity instanceof EntityMoto” doit être avant “dw.getWatchableObjectString(30) == “Moto””

                      1 réponse Dernière réponse Répondre Citer 0
                      • FolganskyF Hors-ligne
                        Folgansky Correcteurs
                        dernière édition par

                        C’était bien ça.

                        Par contre toujours le même problème de “double action” exécutée côté client +serveur je suppose mais le !world.isRemote que je rajoute rend obselète la méthode: l’item ne fonctionne plus quoi.

                        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

                          Pourtant il n’y a pas de raison pour que ça bloque. Étrange.

                          1 réponse Dernière réponse Répondre Citer 0
                          • FolganskyF Hors-ligne
                            Folgansky Correcteurs
                            dernière édition par

                            La méthode en entière même si ça va pas vraiment aider: (beaucoup de répétitions)

                            :::

                            public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity, World world)
                                {
                            int metadata = stack.getItemDamage();
                            if (!world.isRemote && metadata == 14)
                            {
                            DataWatcher dw = entity.getDataWatcher();
                                   if (entity instanceof EntityMoto && dw.getWatchableObjectString(30) == "Moto")
                                   {
                                       entity.setDead();
                                       –stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 0));
                                       return true;
                                   }
                                   else if (entity instanceof EntityMoto && dw.getWatchableObjectString(30) == "Moto1")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 1));
                                       return true;
                                   }
                                   else if (entity instanceof EntityMoto && dw.getWatchableObjectString(30) == "Moto2")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 2));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBMX && dw.getWatchableObjectString(30) == "BMX")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 3));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBMX && dw.getWatchableObjectString(30) == "BMX1")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 4));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBMX && dw.getWatchableObjectString(30) == "BMX2")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 5));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBuggy && dw.getWatchableObjectString(30) == "Buggy")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 6));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBuggy && dw.getWatchableObjectString(30) == "Buggy1")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 7));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBuggy && dw.getWatchableObjectString(30) == "Buggy2")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 8));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBaignoire)
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 9));
                                       return true;
                                   }
                                   else if (entity instanceof EntityKart && dw.getWatchableObjectString(30) == "Kart")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 10));
                                       return true;
                                   }
                                   else if (entity instanceof EntityKart && dw.getWatchableObjectString(30) == "Kart1")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 11));
                                       return true;
                                   }
                                   else if (entity instanceof EntityKart && dw.getWatchableObjectString(30) == "Kart2")
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 12));
                                       return true;
                                   }
                                   else if (entity instanceof EntityBolide)
                                   {
                                       entity.setDead();
                                       --stack.stackSize;
                                       player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 13));
                                       return true;
                                   }    
                               else    
                               return false;    
                            }
                            return false;
                                }
                            

                            :::

                            Est-ce que je te mets la classe en entière? La même beaucoup de répétitions c’est pas un truc trop fournis, c’pour ça que je vois pas où ça bloque.

                            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

                              Ajoutes au début de la fonction:
                              System.out.println(world.isRemote)
                              et dit moi ce qu’il y a dans la console.

                              1 réponse Dernière réponse Répondre Citer 0
                              • FolganskyF Hors-ligne
                                Folgansky Correcteurs
                                dernière édition par

                                ça ne marque rien par contre j’ai compris à quel moment ça ne faisait plus rien, c’est quand j’ajoute l’argument World:

                                public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity, World world)
                                

                                Alors qu’on m’a conseillé de l’utiliser comme ça

                                public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
                                

                                La différence est simple, l’un marche, l’autre non Xd.

                                Erreur en java de ma part?

                                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

                                  Oui en effet, si tu ajoutes un argument ce n’est plus la même fonction. Comme tu n’as pas d’argument world tu peux utiliser player.worldObj.isRemote

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • FolganskyF Hors-ligne
                                    Folgansky Correcteurs
                                    dernière édition par

                                    Je sens que ça va finir par rentrer mais là c’est pas encore ça:

                                    :::

                                    public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
                                        {
                                    int metadata = stack.getItemDamage();
                                    if (player.worldObj.isRemote && metadata == 14)
                                    {
                                    

                                    :::

                                    Alors en ayant fait ça ça me donne toujours deux items mais en plus en déco/reco les entités reviennent.
                                    J’en déduis juste qu’il n’y a que le côté client qui a été pris en compte… Bref que j’ai pas mis ça comme et où il fallait Xd

                                    edit: Encore plus n’importe quoi avec “!” devant “player” xD

                                    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

                                      !player.worldObj.isRemote
                                      et non player.worldObj.isRemote

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • FolganskyF Hors-ligne
                                        Folgansky Correcteurs
                                        dernière édition par

                                        Ah bah c’est ce que j’ai de suite tenté et c’est encore plus bizarre:

                                        L’entité disparait deco/reco elle a bien disparu, par contre les items:
                                         je clique, y’a rien, déco/reco: bim y’en a deux qui sont apparus.
                                        J’ai supprimé la carte et j’ai en créé une autre au cas où, ça ne change rien.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • FolganskyF Hors-ligne
                                          Folgansky Correcteurs
                                          dernière édition par

                                          Bon visiblement si je mets comme condition que le joueur doit être en train de sneak c’est bon. 
                                          Reste le test serveur mais ça devrait être ça 😃

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • FolganskyF Hors-ligne
                                            Folgansky Correcteurs
                                            dernière édition par

                                            Salut, je reviens sur les montures avec un point de détail qui reste quand même quelque chose de visuellement très frappant.
                                            Pour que mes montures ne bougent plus quand on n’est pas dessus j’ai fais ça:

                                            :::

                                            else if (this.riddenByEntity == null)
                                                {
                                                motionX = motionY = motionZ = 0.0F;
                                                }
                                            

                                            :::

                                            Ce qu’il fait que si je quitte le véhicule en l’air, celui-ci reste figé dans les airs, comme si de rien était.
                                            Je vois mal la condition qu’il me faut pour, qu’une fois dépourvu de rider, la monture retombe au sol avant de rester immobile.

                                            Je souligne le fait que mes véhicules ont le code du cheval et le onUpdate qui va avec donc.

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 4 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB