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

    Rendu d'item avec un model techne

    Les items
    1.6.x
    24
    137
    44577
    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.
    • kevin_68
      kevin_68 Moddeurs confirmés dernière édition par robin4002

      Sommaire

      1. Introduction
      2. Prérequis
      3. Classe du render
      4. Classe du model
      5. ClientProxy
      6. Finition du render
      7. Résultat

      Introduction

      Comme pour un bloc, il est possible d’assigner un model techne à un item, voici comment faire:

      Prérequis

      • Classe principale et Proxy
      • Un item basique

      Classe du render

      Pour commencer, il vous faut créer une classe avec l’implémentation “IItemRenderer”, Attention, il n’y a pas d’extension, seulement une implémentation!

      package tutoriel.common;
      
      import net.minecraftforge.client.IItemRenderer;
      
      public class ItemTutorielTechneRender implements IItemRenderer
      {
      }
      

      Puis nous y ajoutons un constructeur et trois méthodes.

      public ItemTutorielTechneRender ()
      {
      
      }
      
      @Override
      public boolean handleRenderType(ItemStack item, ItemRenderType type)
      {
      
      }
      
      @Override
      public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
      {
          return false;
      }
      
      @Override
      public void renderItem(ItemRenderType type, ItemStack item, Object… data)
      {
      
      }
      

      Puis on ajoute deux variables, le model et la texture puis on déclare le model dans le constructeur.

      protected ItemTutorielTechneModel model;
      protected static final ResourceLocation texture = new ResourceLocation("ModTutoriel:textures/items/itemTechne.png");
      
      public ItemTutorielTechneRender ()
      {
          model = new ItemTutorielTechneModel();
      }
      

      Dans la première méthode nous ajoutons un switch avec la case EQUIPPED et le default, pour que quand il est equipé, il fasse le rendu.

      switch(type)
      {
          case EQUIPPED:
              return true;
          default:
              return false;
      }
      

      Et presque la même chose pour la troisième méthode:

      switch(type)
      {
      case EQUIPPED:
      {
      
      }
      default:
      break;
      }
      

      Maintenant les choses se compliquent un peu, dans la case EQUIPPED (de la troisième méthode) nous allons ajouter ceci:

      GL11.glPushMatrix();
      Minecraft.getMinecraft().renderEngine.func_110577_a(texture);
      model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
      GL11.glPopMatrix();
      break;
      

      Dans l’ordre:
      Ouverture de la matrice GL11
      Définition de la texture
      Définition du model
      Fermeture de la matrice GL11

      Vous pouvez ajouter des autres “case” avec “EQUIPPED_FIRST_PERSON” pour un rendu en première personne et “ENTITY” pour un rendu de l’entité au sol, il existe aussi la case “INVENTORY” mais je ne lui ait pas encore trouvé d’utilité.

      Classe du model

      Faite votre model sur techne, avec comme base, le ModelBase.

      Puis copiez/collez tout dans la classe et modifiez ceci:

      
      public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
      {
      super.setRotationAngles(f, f1, f2, f3, f4, f5);
      }
      

      En ça:

      
      public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
      {
      super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
      }
      
      

      Et ceci:

      
      public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
      {
      super.render(entity, f, f1, f2, f3, f4, f5);
      setRotationAngles(f, f1, f2, f3, f4, f5);
      }
      
      

      En cela:

      
      public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
      {
      super.render(entity, f, f1, f2, f3, f4, f5);
      setRotationAngles(f, f1, f2, f3, f4, f5, entity);
      }
      
      

      ClientProxy

      Rien de plus simple, ajoutez ceci:

      
      MinecraftForgeClient.registerItemRenderer(ModTutoriel.ItemTutorial.itemID, (IItemRenderer)new ItemTutorielTechneRender());
      
      

      #finition-du-render(Finition du render)
      A ce niveau, vous pouvez tester votre item, et si vous avez (beaucoup) de chance, il sera dans votre main et dans le bon sens.
      Sinon, il va falloir jouer avec les rotations et translation de GL11:

      Dans la troisième méthode, entre la texture et le model, vous pouvez ajouter les fontions suivantes:

      Rotation:

      GL11.glRotatef(Angle, X, Y, Z);
      

      Attention, tout les arguments sont des float, si vous voulez faire une rotation sur l’axe y, il faudra mettre:

      GL11.glRotatef(Angle, 0.0F, 1.0F, 0.0F);
      

      Translation:

      GL11.glTranslatef(X, Y, Z);
      

      Attention, tout les arguments sont des float, si vous voulez faire une translation sur l’axe z, il faudra mettre par exemple:

      GL11.glTranslatef(0.0F, 0.0F, -0.7F);
      

      Après, il n’y a pas de secret, il vous faut essayer de modifier un peu tous les arguments jusqu’à trouver la bonne combinaison.

      Résultat

      2013-07-21_14.13.24.png


      Mettez à jours vers la dernière version stable (1.8.9 voir même…

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

        Très bon tutoriel ! 🙂

        Mon site | GitHub

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

          Exactement ce que j’avais besoin ! ( Je fais une arbalète 3D 😄 )

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

            Wouh, ça permet du nouveau contenu bien lourd pour nos mods ! Très bon tutoriel et merci à toi ! 🙂

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

              sympa mais j’ai strictement rien compris a la première parti de ou vont tout les morceaux de code

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

                où tu a téléchargé Techne ?

                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
                • kevin_68
                  kevin_68 Moddeurs confirmés dernière édition par

                  Désolé, mais techne n’est que disponible pour windows


                  Mettez à jours vers la dernière version stable (1.8.9 voir même…

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

                    0nit, si tu comprend bien l’anglais, je t’envoie regarder cette vidéo: http://www.youtube.com/watch?v=A0XSQtJ3cnk&list=PLy1hxmUG15wchXpnWqoyAAyX8THP47jnK&index=10
                    Il explique comment faire pour utiliser Techne sur mac.

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

                      bonjour serait il possible d’avoir des explication sur “l’implementation”?

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                        C’est du java les interfaces … :
                        http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-java/les-interfaces

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

                          salut serait t’il possible d’avoir la class du render en un seul morceaux pour voir ou va chaque morceaux de code et une petite maj du tuto pour la 1.6.4

                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                            https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotech_mod/main/client/renderer/items/ItemScytheRender.java
                            Le tutoriel est toujours valable en 1.6.4.

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

                              autre question comment on fait pour voir l’item en 3d sen être en F5 ?
                              et peux on faire des pièce d’armure avec un rendu 3d genre casque avec des corne et plastron avec aile ?

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                Pour mettre le rendu dans l’inventaire, c’est la case INVENTORY.
                                Pour changer le modèle des armures, c’est la fonction getArmorModel dans l’ItemArmor.

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

                                  Tu fais comment pour le déclarer ton block sur forge ?

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • robin4002
                                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                    ? J’ai pas compris ta question.

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

                                      Bah la il est pas déclaré dans la classe principale, on a pas besoin de mettre un truc du genre ? : ItemTutorial = new ItemTutorial(1998, “modtutorial:tutorial”).setUnlocalizedName(“tutorial”).setCreativeTab(CreativeTabs.tabBlock);

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • kevin_68
                                        kevin_68 Moddeurs confirmés dernière édition par

                                        Prérequis: un item simple


                                        Mettez à jours vers la dernière version stable (1.8.9 voir même…

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

                                          Sauf que je met quoi comme classe liée à l’objet ? ItemTutorialTechneRender ?

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • robin4002
                                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                            Non, le render n’est pas un item tu dois avec une classe pour le rendu et une pour le bloc

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

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB