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

    Résolu Faire changer un item avec un clique droit sur un block

    1.9.x et 1.10.x
    1.9.4
    4
    39
    5274
    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.
    • Tituya
      Tituya dernière édition par

      Voila, je voulais cree une machine mais trouvant cela TRÈS difficile pour le’moment je voulais me repporter sur autre chose de plus simple qui ressemble un peu. 
      Je souhaite cree un block qui lorsque l’on clique droit dessus avec un ou plusieurs certains item, cela le remplace par un autre. 
      Je cherche mais je ne trouve pas, pour le moment j’ai juste cree le block normal, il faut une fonction qui appelle le clique droit mais la quelle et comment détecter l’item dans la main du joueur ? 😄

      Merci si vous me répondez 😄

      Tituya

      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
      • Deleted
        Deleted dernière édition par

        Balise version ?
        La méthode détectant un clic droit dans la classe du block est onBlockActivated. Ensuite tu peux check l’itemstack tenu avec EntityPlayer#getHeldItem, puis enfin remplacer le block avec World#setBlock ou World#setBlockState, suivant ta version 😃

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

          fonction pour détecter un clic droit :

          
          public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player)
          {
          
          }
          
          

          et pour détecter si le joueur a l’item en main , tu peux faire cela :

          
          ItemStack equip = ((EntityPlayer)player).getCurrentEquippedItem();
               if(equip == item)
          
          

          Mes Sites(Mes Sites)
          |
          |    Site général : Game & play
          |   Site de projets (en dev !) :Infinite's Ressources
          J'ai et je suis content d'avoir 16,75 points d'ICRating

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

            Non je voudrais que quand on clique droit avec un item, l’item est change pas le block lui même !

            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
            • Deleted
              Deleted dernière édition par

              Eh bien tu peux changer la valeur de cette variable :
              player.inventory.currentItem

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

                Je vais essaye cela, je vous dit ca tout à l’heure
                [EDIT]
                J’ai fait ceci mais cela ne fonctionne pas :,C, la fonction me demande de return et de plus le code ne supprime pas l’item en main

                public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ)
                    {
                         if(player.getHeldItemMainhand() != null && player.getHeldItemMainhand().getItem() == ItemsMod.supT)
                         {
                             EntityItem entityItem =new EntityItem(world, player.posX, player.posY, player.posZ, new ItemStack(ItemsMod.dust));
                             world.spawnEntityInWorld(entityItem); // je fais spawn l'entité
                         }
                         else
                         {
                             player.addChatMessage(new ChatComponentText("L'item utilisé n'est pas le bon !"));
                         }
                    }
                

                et au passage, j’ai une erreur sur ChatComponentText, il me propose de crée un classe, moi je souhaite juste marqué qelque chose dans le chat, avec si possible une couleur.

                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
                • Infinite
                  Infinite dernière édition par

                  Coucou ,
                  Pour le ChatComponentText , tu peux le remplacer par

                  
                  player.addChatMessage(new ChatComponentTranslation("mod.nomdelitem"));
                  
                  

                  puis rajouter dans ton fichier lang :

                  
                  mod.nomdelitem=§4L'item utilisé n'est pas le bon !
                  
                  

                  le §4 est le code couleur qui est changeable (voir touts les codes couleurs : ici)

                  Pour le reste je sais pas car je code pas en 1.9 , désolé …

                  En éspérant que ceci t’aura aidé

                  EDIT:Essaie de retourner le boolean avec return true; ou return false;

                  Mes Sites(Mes Sites)
                  |
                  |    Site général : Game & play
                  |   Site de projets (en dev !) :Infinite's Ressources
                  J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                    merci 😄
                    pour le reste c’est pas grave, tu m’a aidé c’est le principal !
                    [EDIT]
                    meme ton code ne fonctionne pas 😕

                    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
                    • Infinite
                      Infinite dernière édition par

                      Je viens de regarder vite fait et je pense que ce code fonctionne :

                      
                      [size=mediumplayer.addChatComponentMessage(new TextComponentString(Message));]
                      
                      

                      tient moi au courant 🙂

                      EDIT : Lit le message de @Plaigon

                      Mes Sites(Mes Sites)
                      |
                      |    Site général : Game & play
                      |   Site de projets (en dev !) :Infinite's Ressources
                      J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                        Ce n’est pas son code qui ne fonctionne pas, mais ton utilisation.
                        Autre chose, je t’avais conseillé de set une nouvelle valeur de InventoryPlayer#currentItem, mais toi tu es parti sur le spawn d’une entity item. Pourquoi ? Ne viens pas t’étonner que ton item ne change pas après ^^’
                        Les return sont à ajouter en fonction de si ton blocl à fonctionné comme tu souhaitais (return true), ou non (return false).

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

                          Ouais mais je ne sais pas faire ce que tu dit, je pensais alors que faire Spawn l’item et supprime celui dans la main etait une bonne idee, comment faire ce que tu dit alors ? Et le msg merci 😄

                          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
                          • Deleted
                            Deleted dernière édition par

                            Essaie ceci :
                            player.inventory.currentItem = new ItemStack(ItemsMod.dust);

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

                              Je le met ou ? Apres le if

                              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
                              • Infinite
                                Infinite dernière édition par

                                Dedans

                                Mes Sites(Mes Sites)
                                |
                                |    Site général : Game & play
                                |   Site de projets (en dev !) :Infinite's Ressources
                                J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                                  Tu le mets là où tu veux voir apparaître ton nouvel item en main. Mais je me suis trompé, currentItem renvoie un integer qui est l’index du slot actuellement occupé. Du coup il faudrait mieux utiliser la méthode InventoryPlayer#setInventorySlotContents, avec en premier argument l’index du slot, puis ensuite l’itemstack. Tu as désormais tous les élément, je te laisse faire !

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

                                    Non, ca ne fonctionne pas, ça dit "type mismatch: cannot convert from ItemStack to int

                                    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
                                    • Infinite
                                      Infinite dernière édition par

                                      Partage ton code ça a l’air pas compliqué ,je vais essayer de t’aider

                                      Mes Sites(Mes Sites)
                                      |
                                      |    Site général : Game & play
                                      |   Site de projets (en dev !) :Infinite's Ressources
                                      J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                                        Euh j’ai pas tout compris … je débute vraiment en modding …

                                        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
                                        • Infinite
                                          Infinite dernière édition par

                                          Alors ?

                                          EDIT : Ok

                                          Mes Sites(Mes Sites)
                                          |
                                          |    Site général : Game & play
                                          |   Site de projets (en dev !) :Infinite's Ressources
                                          J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                                            Attendez un peu, je fait quelque chose, je vous partage le code actuelle dans quelques minutes

                                            Voila

                                            package com.tuto.mod.blocks;
                                            
                                            import com.tuto.mod.init.ItemsMod;
                                            
                                            import net.minecraft.block.Block;
                                            import net.minecraft.block.material.Material;
                                            import net.minecraft.block.state.IBlockState;
                                            import net.minecraft.entity.item.EntityItem;
                                            import net.minecraft.entity.player.EntityPlayer;
                                            import net.minecraft.item.ItemStack;
                                            import net.minecraft.util.EnumFacing;
                                            import net.minecraft.util.math.BlockPos;
                                            import net.minecraft.util.text.TextComponentString;
                                            import net.minecraft.util.text.TextComponentTranslation;
                                            import net.minecraft.util.text.TextFormatting;
                                            import net.minecraft.world.World;
                                            
                                            public class MachineMod extends Block
                                            {
                                            
                                                public MachineMod(Material materialIn)
                                                {
                                                    super(materialIn);
                                                    setResistance(3F);
                                                    setHardness(3F);
                                                    setHarvestLevel("pickaxe", 1);
                                                }
                                            
                                                public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ)
                                                {
                                                     if(player.getHeldItemMainhand() != null && player.getHeldItemMainhand().getItem() == ItemsMod.supT)
                                                     {
                                                         player.inventory.setInventorySlotContents(new ItemStack(ItemsMod.dust));
                                                     }
                                            
                                                     else
                                                     {
                                                         player.addChatMessage(new TextComponentString("L item n est pas le bon"));
                                                     }
                                                }
                                            
                                            }
                                            

                                            il manque quelque chose entre setInventorySlotContents et new Item stack …

                                            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
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB