MFF

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

    RenderPlayerEvent : Modifier le model du joueur

    Planifier Épinglé Verrouillé Déplacé Les events
    1.9
    20 Messages 9 Publieurs 8.2k 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

      Sommaire

      • Introduction
      • Pré-requis
      • Code
        • EventHandler
        • Un exemple de Renderer
        • Un exemple de Model
      • Résultat
      • En vidéo
      • Crédits

      Introduction

      Bonjour à tous! Voici un de mes -rares- tutoriels, sur une fonctionnalité qui pourrait être utile a certain d’entre vous : Modifier le Model du Joueur ! Cela peut-être utilisé pour des animations customs, ou changer la taille du joueur, ou encore même changer complètement le model! (exemple : le mod “Morph” de iChun).

      Attention cependant, si vous modifiez le model sans condition au préalable, cela pourrait causer des incompatibilités. Faites donc comme moi, avec des conditions spécifiques qui déterminent la modification du model. (ex: tenir un item spécifique)

      Pré-requis

      Pour ce tutoriel, il va vous falloir un mod simple, ainsi qu’un Event Handler.

      Code

      EventHandler :

      RenderCustomPlayer playerRenderer;
      
      @SideOnly(Side.CLIENT)
      @SubscribeEvent
      public void preRenderPlayer(RenderPlayerEvent.Pre event) {
          event.setCanceled(true);
          playerRenderer = new RenderCustomPlayer(event.getRenderer().getRenderManager());
          playerRenderer.doRender((AbstractClientPlayer)event.getEntityPlayer(), 0, 0, 0, 0, 0.0625f);
      }
      

      Ici, rien de compliqué! On crée un Render du model que l’on veut afficher, puis dans l’event qui précède l’affichage du joueur, on annule l’affichage du joueur de base, et à la place, on affiche notre model!

      La ligne doRender prend en argument l’entité, ainsi que les coordonnées, l’orientation, et le float de tick. Ceci sont normalement fournis par le RenderManager du joueur, donc on met des 0, et 0.0625f pour le float.

      Exemple : RenderCustomPlayer

      La classe RenderCustomPlayer que j’utilise pour le tutoriel est enfait très simple : C’est un copié collé de RenderPlayer modifié pour adapter le nouveau model!

      On modifie alors juste le constructeur :

      public RenderCustomPlayer(RenderManager renderManager, boolean useSmallArms)
          {
              super(renderManager, new ModelCustomPlayer(0.0F, useSmallArms), 0.5F);
              //Reste du constructeur
          }
      

      Exemple : ModelCustomPlayer

      Ici, la classe ModelCustomPlayer va nous permettre de modifier les animations, l’apparence etc… du Model.

      Dans notre cas, c’est simplement un extends du ModelPlayer, avec la méthode setAngles modifiée pour montrer qu’il y a une différence entre le model Vanilla, et notre model custom!

      public class ModelCustomPlayer extends ModelPlayer {
      
          public ModelCustomPlayer(float modelSize, boolean smallArmsIn) {
          super(modelSize, smallArmsIn);
          }
      
          @Override
          public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn)
          {
              super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn);
              copyModelAngles(this.bipedLeftLeg, this.bipedLeftLegwear);
              copyModelAngles(this.bipedRightLeg, this.bipedRightLegwear);
              copyModelAngles(this.bipedLeftArm, this.bipedLeftArmwear);
              copyModelAngles(this.bipedRightArm, this.bipedRightArmwear);
              copyModelAngles(this.bipedBody, this.bipedBodyWear);
      
              this.bipedLeftArm.rotateAngleZ = -0.5f;
              this.bipedRightArm.rotateAngleZ = 1.9f;
              this.bipedLeftLeg.rotateAngleZ = -0.9f;
              this.bipedRightLeg.rotateAngleZ = 0.1f;
          }
      }
      

      Résultat

      Et on obtient donc … Ceci !

      Crédits

      Rédaction :

      • Gugu

      Correction :

      • Gugu

      Creative Commons
      Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      retourRetour vers le sommaire des tutoriels

      "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 1
      • GuguG Hors-ligne
        Gugu
        dernière édition par

        Tutoriel corrigé et mis en ligne.

        "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
        • leo01418L Hors-ligne
          leo01418
          dernière édition par

          Super tutoriel c’est exactement ce que je cherché   🙂
          Mais petite question ce tuto marche en 1.8 ou en 1.7?

          Voila ma signature

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

            Je suppose oui, comme je ne crois pas que des choses changent au rendu, essaye toujours.

            Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

              @‘leo01418’:

              Super tutoriel c’est exactement ce que je cherché   🙂
              Mais petite question ce tuto marche en 1.8 ou en 1.7?

              Le tutoriel fonctionne également en 1.7 et 1.8.

              "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

                
                RenderCustomPlayer playerRenderer;
                
                @SideOnly(Side.CLIENT)
                @SubscribeEvent
                public void preRenderPlayer(RenderPlayerEvent.Pre event) {
                event.setCanceled(true);
                playerRenderer = new RenderCustomPlayer(event.getRenderer().getRenderManager());
                playerRenderer.doRender((AbstractClientPlayer)event.getEntityPlayer(), 0, 0, 0, 0, 0.0625f);
                }
                
                

                Créer une nouvelle instance d’un objet à chaque fois qu’on veut redessiner le joueur est pas tellement une bonne idée 😕
                Vaudrait mieux la créer dans le “postInit” du mod, non?

                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
                • GuguG Hors-ligne
                  Gugu
                  dernière édition par

                  @‘jglrxavpok’:

                  
                  RenderCustomPlayer playerRenderer;
                  
                  @SideOnly(Side.CLIENT)
                  @SubscribeEvent
                  public void preRenderPlayer(RenderPlayerEvent.Pre event) {
                     event.setCanceled(true);
                     playerRenderer = new RenderCustomPlayer(event.getRenderer().getRenderManager());
                     playerRenderer.doRender((AbstractClientPlayer)event.getEntityPlayer(), 0, 0, 0, 0, 0.0625f);
                  }
                  
                  

                  Créer une nouvelle instance d’un objet à chaque fois qu’on veut redessiner le joueur est pas tellement une bonne idée 😕
                  Vaudrait mieux la créer dans le “postInit” du mod, non?

                  Il faut le renderManager donc j’ai pas trouvé d’autre moyen

                  "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
                  • AymericRedA Hors-ligne
                    AymericRed
                    dernière édition par

                    Dans un event de co à un serveur/un monde, ça serait plus logique sinon.

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                    1 réponse Dernière réponse Répondre Citer 0
                    • ? Hors-ligne
                      Un Ancien Utilisateur
                      dernière édition par

                      et comment modifier le skin car si ont met un model de vache avec un skin de steve . . . .

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

                        @‘NeykoZzHD’:

                        et comment modifier le skin car si ont met un model de vache avec un skin de steve . . . .

                        Tu dois juste bind la texture

                        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
                        • AmaA Hors-ligne
                          Ama
                          dernière édition par

                          C’est pas compatible en Multi ça ?

                          Si je t'ai filé un coup de main n'oublie pas le + / -
                          Par contre évite les demandes d'aides en MP, tu sera sympa'

                          La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                          Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                          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

                            Render = client donc à faire en @SideOnly(Side.CLIENT).
                            Si la modification du modèle du joueur ou non dépend d’une variable, il faut la synchroniser pour que ça fonctionne correctement pour tout le monde.

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

                              J’ai ce problème en multi avec le changement de rendu

                              code: ```java
                              RenderCustomPlayer playerRenderer;

                              @SubscribeEvent
                              @SideOnly(Side.CLIENT)
                              void preRenderPlayer(RenderPlayerEvent.Pre event)
                              {
                              event.setCanceled(true);
                              playerRenderer = new RenderCustomPlayer(event.getRenderer().getRenderManager());
                              playerRenderer.doRender((AbstractClientPlayer) event.getEntityPlayer(), 0, 0, 0, 0, 0.0625f);
                              }

                              
                              ![](http://i.imgur.com/FAABzqC.png)

                              Si je t'ai filé un coup de main n'oublie pas le + / -
                              Par contre évite les demandes d'aides en MP, tu sera sympa'

                              La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                              Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                              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

                                playerRenderer ne devrait pas être une variable global à la classe.

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

                                  Même problème malgré la modification

                                  Si je t'ai filé un coup de main n'oublie pas le + / -
                                  Par contre évite les demandes d'aides en MP, tu sera sympa'

                                  La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                  Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                                  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

                                    Étrange, peut-être que gugu sera d’où ça vient car moi je ne vois pas.

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

                                      Aucune news de la part de gugu 😕

                                      Si je t'ai filé un coup de main n'oublie pas le + / -
                                      Par contre évite les demandes d'aides en MP, tu sera sympa'

                                      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                                        Pour empêcher ça mets les positions x,y et z de l’event, comme ça:

                                        playerRenderer.doRender(event.entityLiving, event.x, event.y, event.z, 0, event.partialRenderTick);
                                        
                                        1 réponse Dernière réponse Répondre Citer 0
                                        • AmaA Hors-ligne
                                          Ama
                                          dernière édition par

                                          Nickel ça fonctionne !

                                          Maintenant j’dois passer par des packets pour update le rendu de mon joueur en temps réel non ? (pour les joueurs au alentours)

                                          Si je t'ai filé un coup de main n'oublie pas le + / -
                                          Par contre évite les demandes d'aides en MP, tu sera sympa'

                                          La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                          Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                                            Je pense que si tout ce qui touche le rendu du joueur est dans ton RenderCustomPlayer ça ne servirai a rien mais que si c’est dans une autre classe alors la oui ç’est nécessaire. Après je ne suis pas expert au niveau des rendu donc je dis peut être des bêtises.

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • AmaA Ama a fait référence à ce sujet sur
                                            • 1 / 1
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB