MFF

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

    Item complexe : gui, bouton, packet et model custom

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8.9
    50 Messages 4 Publieurs 9.0k 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.
    • AymericRedA Hors-ligne
      AymericRed
      dernière édition par

      Ah okay autant pour moi (ça a disparu comme le ISBHR (un nom de genre avec ces lettres dans un autre ordre) quoi)

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

        Dommage… Il n’y a pas une autre solution qui pourrais remplacer IItemRender ?

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

          Utiliser les JSONs ou utiliser ce projet https://github.com/Thog/ISBRH

          Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

          Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

          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

            @‘AymericRed’:

            Ah okay autant pour moi (ça a disparu comme le ISBHR (un nom de genre avec ces lettres dans un autre ordre) quoi)

            Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

            C’est ISBRH. Tu y étais presque 😛 (ISpecialBlockRenderingHandler)

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

              @‘Superloup10’:

              Utiliser les JSONs ou utiliser ce projet https://github.com/Thog/ISBRH

              Je testerais avec le projet d’ ISBRH quand j’airais du temps libre (surement le week-end prochain), mais en utilisant les JSONs, je ne vois pas comment je peut faire sans avoir à faire un fichier JSON par possibilité.

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

                C’est un peu spécial à gérer les jsons mais déjà, tu peux regarder l’arc pour te faire une idée.

                Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

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

                  J’ai un peut cherché pour l’arc …… j’ai pas vraiment l’impression que c’est un bon exemple à utiliser : dans la class de l’item, il y a une liste de strings correspondants aux icônes possibles pour l’arc mais elle est utilisée nul part. Ensuite, j’ai trouvé un endroit qui à l’aire de décidé du model de l’arc en fonction du joueur mais, c’est dans la class RenderItem …

                  Je me demandais si c’était possible pour les item de faire un peut comme les blockstates : faire en sorte que dans un seul json, selon la metadata, ça choisit un model un texture différente pour le layer supérieur du model. (Peut être en utilisant ModelBakery.addVariantName, ModelLoader.setCustomMeshDefinition ou ModelLoader.setCustomStateMapper)

                  EDIT : J’ai trouvé deux nouveautés de la 1.8, qui pourraient surement être utiles : l’event ModelBakeEvent et l’interface ISmartItemModel. Si quelqu’un sais s’en servir, je voudrais bien qu’il me passe son savoir !

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

                    Tu peux faire comme les blockstates via une fonction à mettre dans la classe de ton Item : “public ModelResourceLocation getModel(ItemStack stack, EntityPlayer player, int useRemaining) {}” il suffit de return le model en fonction de ce que tu veux.

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

                      @‘AymericRed’:

                      Tu peux faire comme les blockstates via une fonction à mettre dans la classe de ton Item : “public ModelResourceLocation getModel(ItemStack stack, EntityPlayer player, int useRemaining) {}” il suffit de return le model en fonction de ce que tu veux.

                      Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                      Comme je l’ai dit, là il faut retourner un ModelResourceLocation donc je suis comme mème obligé de créer un .json pour chaque possibilité (à moins que je ne soit pas obligé, mais dans ce cas, il faut me dire comment faire), est-il possible faire en sorte de sélectionner un model en précisent les textures à y appliquer (comme “parent”: “monModel”,“textures”: { “layer0”: “matexture”
                      } mais à partir de la fonction getModel).

                      Pour le projet ISBRH, je ne sais pas comment l’utilise : est-ce qu’il faut que j’ajoute ses sources au miennes ? Ou faire quelque chose du genre décompilé minecraft, ajouter les sources pour recompiler ?

                      -> Je pensais faire quelque chose de “plus simple” comme faire un seul .json avec quelque chose comme

                      {
                          "parent": "runes:item/runeStone",
                          "display": {
                              "thirdperson": {
                                  "rotation": [ -90, 0, 0 ],
                                  "translation": [ 0, 1, -3 ],
                                  "scale": [ 0.55, 0.55, 0.55 ]
                              },
                              "firstperson": {
                                  "rotation": [ 0, -135, 25 ],
                                  "translation": [ 0, 4, 2 ],
                                  "scale": [ 1.7, 1.7, 1.7 ]
                              }
                          }
                      }
                      

                      Et faire ItemModel custom utilisant un ISmartItemModel pour choisir le model en fonction de l’ItemStack. Mais pour faire ça, je vais galérer…

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

                        Je pense que tes obligé de créer un model pour chaque, après tu peux essayer de faire un model custom avec ISmartItemModel (jsp du tout comment le faire).
                        Pour le ISBHT, je pende qu’il faut que tu l’ajoute tes librairies (clic droit sur ton projet, build path > configure > librairies > add external librairie et tu sélectionnes le jar du ISBHR.

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

                          @‘AymericRed’:

                          Je pense que tes obligé de créer un model pour chaque, après tu peux essayer de faire un model custom avec ISmartItemModel (jsp du tout comment le faire).
                          Pour le ISBHT, je pende qu’il faut que tu l’ajoute tes librairies (clic droit sur ton projet, build path > configure > librairies > add external librairie et tu sélectionnes le jar du ISBHR.

                          Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                          Je viens de me rendre compte que le projet ISBRH n’existe que en 1.8 et pas en 1.8.9 donc je ne peut pas l’utiliser… 😢

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

                            Ah….
                            Après, il n’y a pas beaucoup de différences entre les deux, tu pourrais peut-être l’adapter… Ou sinon tu fais 36 milles model d’item (tu peux trouver des logiciels pour en créer plus simplement ici).

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

                              @‘AymericRed’:

                              Ah….
                              Après, il n’y a pas beaucoup de différences entre les deux, tu pourrais peut-être l’adapter… Ou sinon tu fais 36 milles model d’item (tu peux trouver des logiciels pour en créer plus simplement ici).

                              Si je n’arrive pas à utiliser ISmartItemModel, saisirais de l’adapter. Pour l’instant j’ai juste un problème : c’est quoi un BakedQuad ?

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

                                C’est un élément (quadrilatère) d’un model je crois.

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

                                  @‘AymericRed’:

                                  C’est un élément (quadrilatère) d’un model je crois.

                                  Si j’ai bien compris, les 4 vertex, ce sont les 4 sommets du quadrilatère ?

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

                                    Il me semble que ce sont les côtes

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

                                      J’ai réussi à créer un ISmartItemModel mais je voudrais savoir comment faire l’équivalent de

                                      "display": {
                                              "thirdperson": {
                                                  "rotation": [ -90, 0, 0 ],
                                                  "translation": [ 0, 1, -3 ],
                                                  "scale": [ 0.55, 0.55, 0.55 ]
                                              },
                                              "firstperson": {
                                                  "rotation": [ 0, -135, 25 ],
                                                  "translation": [ 0, 4, 2 ],
                                                  "scale": [ 1.7, 1.7, 1.7 ]
                                              }
                                          }
                                      

                                      à partir de la class du model.

                                      [EDIT] :
                                      J’ai trouvé une piste mais j’ai un petit problème.
                                      En implémentant IPerspectiveAwareModel à mon rendu, ça ajoute 2 fonctions dont public Pair handlePerspective(TransformType cameraTransformType) qui permet de définir la rotation, translation et l’échelle en fonction du point de vue (thirdperson, firstperson, …). J’ai donc mis ça :

                                      @Override
                                          public Pair handlePerspective(TransformType cameraTransformType)
                                          {
                                              if(baseModel instanceof IPerspectiveAwareModel)
                                              {
                                                  IPerspectiveAwareModel flexiModel = (IPerspectiveAwareModel)baseModel;
                                                  return flexiModel.handlePerspective(cameraTransformType);
                                              }
                                      
                                              ItemTransformVec3f itemTransformVec3f = null;
                                              switch (cameraTransformType)
                                              {
                                                  case FIRST_PERSON:
                                                      itemTransformVec3f = baseModel.getItemCameraTransforms().firstPerson;
                                                  case THIRD_PERSON:
                                                      itemTransformVec3f = baseModel.getItemCameraTransforms().thirdPerson;
                                                  case GUI:
                                                      itemTransformVec3f = baseModel.getItemCameraTransforms().gui;
                                                  case HEAD:
                                                      itemTransformVec3f = baseModel.getItemCameraTransforms().head;
                                                  case GROUND:
                                                      itemTransformVec3f = baseModel.getItemCameraTransforms().ground;
                                                  case FIXED:
                                                      itemTransformVec3f = baseModel.getItemCameraTransforms().fixed;
                                                  default:
                                                      itemTransformVec3f = null;
                                              }
                                              return Pair.of(this, TRSRTransformation.getMatrix(itemTransformVec3f));
                                              //return Pair.of(this, null);
                                      
                                          }
                                      

                                      Cela fonctionne très bien sauf que on ne voit plus les modifications qu’apporte mon model, c’est comme si un avait l’item avec le rendu de base, sans mon model. Si quelqu’un sais pourquoi ça fait ça ou sais comment corriger ça, je suis preneur !

                                      [EDIT 2] :

                                      J’ai enfin trouvé comment faire :

                                      @Override
                                      public Pair handlePerspective(TransformType cameraTransformType)
                                      {
                                      if(baseModel instanceof IPerspectiveAwareModel)
                                      {
                                      IPerspectiveAwareModel flexiModel = (IPerspectiveAwareModel)baseModel;
                                      Pair pair = flexiModel.handlePerspective(cameraTransformType);
                                      return pair.of(this, pair.getRight()); // Ici, je ne prend pas exactement la même paire, le prend les modifications de point de vue mais avec mon model.
                                      }
                                      
                                      ItemTransformVec3f itemTransformVec3f;
                                      switch (cameraTransformType)
                                      {
                                      case FIRST_PERSON:
                                      itemTransformVec3f = baseModel.getItemCameraTransforms().firstPerson;
                                      break;
                                      case THIRD_PERSON:
                                      itemTransformVec3f = baseModel.getItemCameraTransforms().thirdPerson;
                                      break;
                                      case GUI:
                                      itemTransformVec3f = baseModel.getItemCameraTransforms().gui;
                                      break;
                                      case HEAD:
                                      itemTransformVec3f = baseModel.getItemCameraTransforms().head;
                                      break;
                                      case GROUND:
                                      itemTransformVec3f = baseModel.getItemCameraTransforms().ground;
                                      break;
                                      case FIXED:
                                      itemTransformVec3f = baseModel.getItemCameraTransforms().fixed;
                                      break;
                                      default:
                                      itemTransformVec3f = null;
                                      break;
                                      }
                                      if(itemTransformVec3f != null)
                                      {
                                      return Pair.of(this, TRSRTransformation.getMatrix(itemTransformVec3f));
                                      }
                                      else
                                      {
                                      return Pair.of(this, null);
                                      }
                                      
                                      }
                                      

                                      Enfin, j’ai un question qui vas surement être la dernière :
                                      Comment afficher un item dans un GUI mais avec une taille différente (8 fois plus gros, juste à partir d’un ItemStack enregistré dans les paramètres du GUI) ?

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

                                        Pour ceux qui ne l’aurais pas remarqué, j’ai modifié mon poste précédant avec la solution et une nouvelle question :

                                        Comment afficher un item dans un GUI mais avec une taille différente (8 fois plus gros, juste à partir d’un ItemStack enregistré dans les paramètres du GUI) ?

                                        [EDIT] :
                                        Voici ce que j’ai testé :

                                        GL11.glPushMatrix();
                                        //GL11.glTranslatef(itemX, itemY, 0.0F);
                                        GL11.glScalef(8.0F, 8.0F, 1.0F);
                                        Minecraft.getMinecraft().getRenderItem().renderItemIntoGUI(this.runeStoneItem, itemX/8, itemY/8);
                                        //GL11.glTranslatef(-itemX, -itemY, 0.0F);
                                        GL11.glScalef(0.125F, 0.125F, 1.0F);
                                        GL11.glPopMatrix();
                                        

                                        C’est presque bon mais il y a un léger décalage (le décalage change légèrement en fonction de la taille de la fenêtre).
                                        En mettant les “GL11.glTranslatef”, c’est pire.

                                        [EDIT 2] :
                                        Je ne sais pas où je me suis trompé mais avec les “GL11.glTranslatef”, ça fonctionne ! Il ne me reste plus grand chose à faire sur mon item, ce ne sont pas des truc très compliqués donc je vais enfin pouvoir mètre ce sujet en résolu ! ! Merci tout le monde !

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

                                        MINECRAFT FORGE FRANCE © 2024

                                        Powered by NodeBB