MFF

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

    Avoir un item tenu comme un arc en train de charger

    Planifier Épinglé Verrouillé Déplacé Les items
    1.6.x
    24 Messages 12 Publieurs 8.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.
    • GuguG Hors-ligne
      Gugu
      dernière édition par robin4002

      Le nom du tutoriel était assez dur a trouver …

      Vous connaissez peut-être le mod Portal Gun ?
      En 3eme personne, le Portal Gun est tenu avec les deux bras tendus en avant, et non pas baissé.

      J’ai trouvé comment faire ça de manière permanente, et non juste lors du click droit.

      Commençons !

      Sommaire

      Prérequis :

      Savoir faire un item.

      Recommandation :

      Avoir un item avec une apparence 3D, pour un meilleur rendu en main
      /!\ Cette technique ralentit le joueur, si vous ne voulez pas de ralentissements, référez vous à la fin du tutoriel et zappez celle technique!

      • Les modifications apportées a l’Item
      • Le TickHandlerClient
      • Les modifications apportées a la classe du mod

      Les modifications apportées a l’Item

      Note : Dans ce tutoriel, je prend en compte le fait que vous avez DÉJÀ votre item.

      Méthodes a ajouter dans votre item :

      public EnumAction getItemUseAction(ItemStack par1ItemStack)
      {
          return EnumAction.bow;
      }
      

      Cette méthode retournera l’animation quand l’Item est “inUse”.
      Exemple : Avec la nourriture ou les boissons, il y a l’animation, ou l’arc lorsqu’on charge la flèche.

      C’est tout pour l’Item !

      Le TickHandlerClient

      Si vous n’avez pas de TickHandlerClient, créez une classe, puis implémentez ITickHandler

      public class TickHandlerClient implements ITickHandler {
      
      }
      

      Ensuite, importez les méthodes pré-requises par l’interface, et modifiez les comme ceci :.

      @Override
      public void tickStart(EnumSet<TickType> type, Object… tickData) {
      
      }
      
      @Override
      public void tickEnd(EnumSet<TickType> type, Object... tickData) {
      
      }
      
      @Override
      public EnumSet<TickType> ticks() {
          return EnumSet.of(TickType.PLAYER);
      }
      
      @Override
      public String getLabel() {
          return "TickHandlerClient";
      }
      

      Ensuite, ajoutez cette méthode qui sera exécutée a chaque tick de joueur :

      public void playerTick(World world, EntityPlayer player) {
      
      }
      

      Ensuite, faites en sorte qu’elle soit appelée lors du tickEnd :

      if (type.equals(EnumSet.of(TickType.PLAYER))) {
          playerTick(((EntityPlayer)tickData[0]).worldObj ,(EntityPlayer) tickData[0]);
      }
      

      Ajoutez ce code a l’intérieur de la méthode playerTick :

      ItemStack is = player.getCurrentEquippedItem();
      if ((is != null) && ((is.getItem() instanceof ItemMONITEM))) {
          if (((player != Minecraft.getMinecraft().renderViewEntity) || (Minecraft
          .getMinecraft().gameSettings.thirdPersonView != 0))) {
              if (player.getItemInUseCount() <= 0) {
                  player.clearItemInUse();
                  player.setItemInUse(is, Integer.MAX_VALUE);
              }
          }
      }
      

      Remplacez ceci : ItemMONITEM comme vous le voulez.

      C’est tout pour le TickHandler !

      Les modifications apportées à la classe du mod

      Enregistrez votre TickHandler de cette manière :

      Dans les variables, ajoutez cette ligne :

      public TickHandlerClient tickHandlerClient;
      

      Dans la méthode init, ajoutez ces lignes :

      this.tickHandlerClient = new TickHandlerClient();
      TickRegistry.registerTickHandler(this.tickHandlerClient, Side.CLIENT);
      

      #Sans ralentissements du joueur(Sans ralentissements du joueur)
      Dans votre classe principale, ajoutez dans une méthode du “type init” ou “type load”
      cette ligne si vous ne l’avez pas déjà:

      MinecraftForge.EVENT_BUS.register(this);
      

      Elle permet d’enregistrer votre mod en tant qu’écouteur (“Listener” en Anglais :D) des events. Pour plus d’infos, allez voir le tutoriel de robin sur l’event drop
      Ensuite, vous devez faire en sorte que la classe principale gère cet event: RenderPlayerEvent.Pre
      Pour cela, ajoutez cette méthode:

      @ForgeSubscribe
      public void preRenderPlayer(RenderPlayerEvent.Pre event)
      {
          EntityPlayer player = event.entityPlayer;
          ItemStack is = player.getCurrentEquippedItem();
          if ((is != null) && ((is.getItem() instanceof ItemYourItem)))
          {
          ModelBiped modelMain = ObfuscationReflectionHelper.getPrivateValue(RenderPlayer.class, event.renderer, 1);
          ModelBiped modelArmorChestplate = ObfuscationReflectionHelper.getPrivateValue(RenderPlayer.class, event.renderer, 2);
          ModelBiped modelArmor = ObfuscationReflectionHelper.getPrivateValue(RenderPlayer.class, event.renderer, 3);
          modelMain.aimedBow = modelArmorChestplate.aimedBow = modelArmor.aimedBow = true;
          }
      }
      

      (Changez ItemYourItem par la classe de votre objet)
      Cette méthode consiste à recevoir l’event RenderPlayerEvent.Pre qui est envoyé par RenderPlayer.class juste avant de dessiner le joueur et à “lever les bras”.

      ObfuscationReflectionHelper.getPrivateValue(RenderPlayer.class, event.renderer, nbr); Cette méthode permet de récupérer n’importe quelle variable d’une classe même si cette dernière est brouillée. RenderPlayer.class est la classe dans laquelle il faut chercher, event.renderer est l’instance de RenderPlayer utilisée et nbr est le numéro de la variable (sa place dans le code en partant du 0 et du haut du fichier)

      Après avoir récupéré les trois ModelBiped de RenderPlayer, on leur dit de se mettre en position “d’arc chargé”.
      Et c’est tout, 12 lignes pour un résultat bien sympathique 😉

      C’est fini !

      Allez in game, et admirez votre item ( En troisième personne uniquement ) !

      "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
      ― Jordan B. Peterson

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

        trop cool, les premiers tuto que tu fait sont génial !!

        Mes tutoriels:

        >! \[1.6.x\] - Le kit d'outils
        >! \[1.6.x\] - Les recettes du four

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

          Merci 🙂

          Je compte faire des tutos plutôt recherchés, ou assez compliqués, plutôt que des tuto assez simple / des choses que tout les mods ont :^)

          "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
          ― Jordan B. Peterson

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

            moi je suis en train de faire un arbre mais j’ai ue un problème avec le src(toutes les modifications faitent n’aparaisse pas en jeu. Ex: je crée un bloc et il n’est pas jeu)puis ma conexion bug donc je télécharge le mcp manuellement et il ne veut pas s’installer :@
            Je RAGE !!!___
            il faut que j’arrête de raconter ma vie, moi 😐

            Mes tutoriels:

            >! \[1.6.x\] - Le kit d'outils
            >! \[1.6.x\] - Les recettes du four

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

              0nit, as tu oublié le GameRegistry.registerBlock(monBlock, "unlocalizedName); ?

              Twitter :

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

                Salut !
                Est-ce que cela fonctionne aussi avec un bloc ?
                Merci d’avance !


                Über Networking Antennas

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

                  Non, uniquement avec les items !

                  "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                  ― Jordan B. Peterson

                  1 réponse Dernière réponse Répondre Citer 0
                  • jglrxavpokJ Hors-ligne
                    jglrxavpok Modérateurs
                    dernière édition par

                    Ajout d’une partie pour ne pas ralentir le joueur.
                    Attention! Cette partie nécessite de ne pas suivre le reste du tuto!

                    Modérateur sur MFF. 
                    Mon Github: http://github.com/jglrxavpok
                    Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

                      Merci pour le tuto mais… J’ai un nombre astronomique d’erreurs dans mes class je n’y comprend rien j’espere que vous pourrez m’aider

                      Travail sur le Mod PrimevalCraftWorld  :)

                      Si tu est Interresser contact moi  :D

                      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

                        Sachant que le tutoriel est pour la 1.6.4 et que cette partie a complétement changé en 1.7.x, c’est normal.

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

                          Utilise la méthode courte, elle est plus efficace, et ne contient pas d’erreurs ( Celle notée comme sans ralentissements )

                          "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                          ― Jordan B. Peterson

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

                            il serait possible d’avoir une mise a jour 1.7.x ou 1.8.x

                            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 partie sans ralentissement du joueur devrait fonctionner en 1.7 et surement en 1.8

                              1 réponse Dernière réponse Répondre Citer 0
                              • elias54E Hors-ligne
                                elias54 Administrateurs
                                dernière édition par

                                Si quelqu’un a la solution pour la 1.8, qu’il n’hésite pas à en faire part ! Cela pourrait aider un bon grand nombre d’entre nous. 🙂

                                Mon site | GitHub

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

                                  J’ai la solution mais que pour la 1.7

                                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                                  Pas de demandes de support par MP ni par skype SVP.
                                  Je n'accepte sur skype que l…

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

                                    Bah go faire un tuto x)

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • elias54E Hors-ligne
                                      elias54 Administrateurs
                                      dernière édition par

                                      @‘SCAREX’:

                                      J’ai la solution mais que pour la 1.7

                                      Moi aussi haha, mais pour la 1.8 on dirait que l’ASM est la seule solution. Robin et moi avions check le fonctionnement en 1.8 et on a pas réussi à faire bouger le boolean aimedBow

                                      Mon site | GitHub

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

                                        Coucou les gens, est-il possible de ré-expliquer pas à pas pour la 1.7(.10 pour moi) svp?

                                        Vu que le TickHandler est totalement différent voire n’existe plus à ce qu’on m’a dit.

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

                                          Euh si il existe toujours

                                          Site web contenant mes scripts : http://SCAREXgaming.github.io

                                          Pas de demandes de support par MP ni par skype SVP.
                                          Je n'accepte sur skype que l…

                                          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

                                            Non, l’interface ITickHandler n’existe plus, maintenant c’est un even.

                                            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